TEST(Reader, Parse_IStreamWrapper_StringStream) {
    const char* json = "[1,2,3,4]";

    std::stringstream ss(json);
    IStreamWrapper is(ss);

    Reader reader;
    ParseArrayHandler<4> h;
    reader.Parse(is, h);
    EXPECT_FALSE(reader.HasParseError());   
}
std::pair<SymbolID, std::vector<Ref>>
readRefs(Reader &Data, llvm::ArrayRef<llvm::StringRef> Strings) {
  std::pair<SymbolID, std::vector<Ref>> Result;
  Result.first = Data.consumeID();
  Result.second.resize(Data.consumeVar());
  for (auto &Ref : Result.second) {
    Ref.Kind = static_cast<RefKind>(Data.consume8());
    Ref.Location = readLocation(Data, Strings);
  }
  return Result;
}
Exemple #3
0
std::map<int, int> Compression::calculate_frequency(Reader& reader) {
    reader.set_begin();
    std::map<int, int> frequency;

    char ch;
    while (reader.getchar(ch)) {
        frequency[ch]++;
    }

    print(frequency);
    return frequency;
}
IncludeGraphNode readIncludeGraphNode(Reader &Data,
                                      llvm::ArrayRef<llvm::StringRef> Strings) {
  IncludeGraphNode IGN;
  IGN.IsTU = Data.consume8();
  IGN.URI = Data.consumeString(Strings);
  llvm::StringRef Digest = Data.consume(IGN.Digest.size());
  std::copy(Digest.bytes_begin(), Digest.bytes_end(), IGN.Digest.begin());
  IGN.DirectIncludes.resize(Data.consumeVar());
  for (llvm::StringRef &Include : IGN.DirectIncludes)
    Include = Data.consumeString(Strings);
  return IGN;
}
Exemple #5
0
// Too complicated to be inline
Result
ReadTagAndGetValue(Reader& input, /*out*/ uint8_t& tag, /*out*/ Input& value)
{
  Result rv;

  rv = input.Read(tag);
  if (rv != Success) {
    return rv;
  }
  if ((tag & 0x1F) == 0x1F) {
    return Result::ERROR_BAD_DER; // high tag number form not allowed
  }

  uint16_t length;

  // The short form of length is a single byte with the high order bit set
  // to zero. The long form of length is one byte with the high order bit
  // set, followed by N bytes, where N is encoded in the lowest 7 bits of
  // the first byte.
  uint8_t length1;
  rv = input.Read(length1);
  if (rv != Success) {
    return rv;
  }
  if (!(length1 & 0x80)) {
    length = length1;
  } else if (length1 == 0x81) {
    uint8_t length2;
    rv = input.Read(length2);
    if (rv != Success) {
      return rv;
    }
    if (length2 < 128) {
      // Not shortest possible encoding
      return Result::ERROR_BAD_DER;
    }
    length = length2;
  } else if (length1 == 0x82) {
    rv = input.Read(length);
    if (rv != Success) {
      return rv;
    }
    if (length < 256) {
      // Not shortest possible encoding
      return Result::ERROR_BAD_DER;
    }
  } else {
    // We don't support lengths larger than 2^16 - 1.
    return Result::ERROR_BAD_DER;
  }

  return input.Skip(length, value);
}
int32 JampCellPerformance::Deserialize(std::string jsonSrc)
{
	if (jsonSrc.length() == 0)
		return 0;

	Reader reader;
	Value value;

	reader.parse(jsonSrc, value, false);

	return DeserializeFromValue(value);
}
Exemple #7
0
    TestBody( const char* filename )
        : written_model_(),
          read_model_()
    {
        SWEET_ASSERT( filename );

        Writer writer;
        writer.write( filename, "model", written_model_ );
        read_model_.clear();
        Reader reader;
        reader.read( filename, "model", read_model_ );
    }
Exemple #8
0
Result
ExtractSignedCertificateTimestampListFromExtension(Input extnValue,
                                                   Input& sctList)
{
  Reader decodedValue;
  Result rv = der::ExpectTagAndGetValueAtEnd(extnValue, der::OCTET_STRING,
                                             decodedValue);
  if (rv != Success) {
    return rv;
  }
  return decodedValue.SkipToEnd(sctList);
}
Instruction * DeserialInstruction(StringType strInst)
{
	Reader reader;
	Value jsonInst;
	reader.parse(strInst, jsonInst);
	Instruction * ip = new Instruction(
			jsonInst["ClientID"].asInt(),
			(InstructionType)(jsonInst["InstType"].asInt()),
			jsonInst["InstructionID"].asInt()
			);
	return ip;
}
Exemple #10
0
int main()
{
    Reader rr;

    int T = rr.next_u32();
    rr.skip_line();
    rr.skip_line();

    bool first = true;
    while (T--) {
        nt = 0;
        Neg(par);

        while (true) {
            rr.next_real_line(line, len);
            if (strcmp("", line) == 0) break;

            int team, prob, time;
            char L;

            sscanf(line, "%d%d%d %c", &team, &prob, &time, &L);

            if (par[team] < 0) {
                par[team] = nt++;
                contest[par[team]] = Team(team);
            }

            int idx = par[team];

            // penalty per problem is negative if it has been solved
            if (contest[idx].pp[prob] < 0 ||
                (L != 'C' && L != 'I')) continue;

            if (L == 'C') {
                ++contest[idx].s;
                contest[idx].p += contest[idx].pp[prob] + time;
                contest[idx].pp[prob] = -1;
            }
            else
                contest[idx].pp[prob] += 20;
        }

        sort(contest, contest + nt);

        if (first) first = false;
        else puts("");

        for (int i = 0; i < nt; ++i)
            printf("%d %d %d\n", contest[i].n, contest[i].s, contest[i].p);
    }

    return 0;
}
Exemple #11
0
void IndexBuilder::writeSnapshots(Reader &reader, KZip &zip)
{
	static const qint64 SNAPSHOT_INTERVAL_MS = 1000; // snapshot interval in milliseconds
	static const int SNAPSHOT_MIN_ACTIONS = 200; // minimum number of actions between snapshots

	paintcore::LayerStack image;
	net::LayerListModel layermodel;
	canvas::StateTracker statetracker(&image, &layermodel, 1);

	MessageRecord msg;
	int snapshotCounter = 0;
	QElapsedTimer timer;
	timer.start();
	while(true) {
		if(_abortflag.load())
			return;

		msg = reader.readNext();
		if(msg.status == MessageRecord::END_OF_RECORDING)
			break;
		else if(msg.status == MessageRecord::INVALID)
			continue;

		protocol::MessagePtr m(msg.message);
		if(m->isCommand()) {
			statetracker.receiveCommand(m);
			++snapshotCounter;
		}

		// Save a snapshot every SNAPSHOT_INTERVAL or at every marker. (But no more often than SNAPSHOT_MIN_ACTIONS)
		// Note. We use the actual elapsed rendering time to decide when to snapshot. This means that (ideally),
		// the time it takes to jump to a snapshot is at most SNAPSHOT_INTERVAL milliseconds (+ the time it takes to load the snapshot)
		if(m_index.snapshots().isEmpty() || ((timer.hasExpired(SNAPSHOT_INTERVAL_MS) || m->type() == protocol::MSG_MARKER) && snapshotCounter>=SNAPSHOT_MIN_ACTIONS)) {
			qint64 streampos = reader.filePosition();
			emit progress(streampos);
			canvas::StateSavepoint sp = statetracker.createSavepoint(-1);

			QBuffer buf;
			buf.open(QBuffer::ReadWrite);
			{
				QDataStream ds(&buf);
				sp.toDatastream(ds);
			}

			int snapshotIdx = m_index.m_snapshots.size();
			zip.writeFile(QString("snapshot-%1").arg(snapshotIdx), buf.data());
			m_index.m_snapshots.append(SnapshotEntry(streampos, reader.currentIndex()));

			snapshotCounter = 0;
			timer.restart();
		}
	}
}
Exemple #12
0
//--------------------------------------------------------------
bool JSONElement::openRemote(string filename) {
	string result;
	
	// TO DO -- put some CURL shit here
	
	Reader reader;
	if(!reader.parse( result, *this )) {
		cout << "Unable to parse " << filename << endl;
		return false;
	}
	return true;
}
Exemple #13
0
int main(int argc, char *argv[]){
	qInstallMessageHandler(myMessageOutput);
    QCoreApplication a(argc, argv);    

    glb::mainThread = a.thread();	

    std::cout << std::endl << "Oi, mate!";

    qRegisterMetaType<QAbstractSocket::SocketError>();
    qRegisterMetaType<QAbstractSocket::SocketState>();

    //set current working directory to executable path
    //needed if started from within IDE
    boost::filesystem::path curDir(QCoreApplication::applicationDirPath().toStdString());
    boost::filesystem::current_path(curDir);

    srand(time(NULL));

    int alg = 0;

    if (argc < 2){
        std::cout << std::endl << "No algorithm specified -> using Central Mutual Exclusion algorithm";
    }
    else{
        QString inputAlg = argv[1];

        if (inputAlg == "RA"){
            std::cout << std::endl << "Ricart Agrawala algorithm selected";
            alg = 1;
        }
        else if (inputAlg == "CME"){
            std::cout << std::endl << "Central Mutual Exclusion algorithm selected";
        }
        else{
            std::cout << std::endl << "unknown algorithm specified -> using Central Mutual Exclusion algorithm";
        }
    }

    if (alg == 1){

    }
    else{
        //init the Server
        Server* server = new Server();
        server->init();

		Reader* reader = new Reader(server->getClient());
		reader->start();
    }

    return a.exec();
}
Exemple #14
0
// BasicOCSPResponse       ::= SEQUENCE {
//    tbsResponseData      ResponseData,
//    signatureAlgorithm   AlgorithmIdentifier,
//    signature            BIT STRING,
//    certs            [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
Result
BasicResponse(Reader& input, Context& context)
{
  Reader tbsResponseData;
  SignedDataWithSignature signedData;
  Result rv = der::SignedData(input, tbsResponseData, signedData);
  if (rv != Success) {
    if (rv == Result::ERROR_BAD_SIGNATURE) {
      return Result::ERROR_OCSP_BAD_SIGNATURE;
    }
    return rv;
  }

  // Parse certificates, if any

  NonOwningDERArray certs;
  if (!input.AtEnd()) {
    // We ignore the lengths of the wrappers because we'll detect bad lengths
    // during parsing--too short and we'll run out of input for parsing a cert,
    // and too long and we'll have leftover data that won't parse as a cert.

    // [0] wrapper
    Reader wrapped;
    rv = der::ExpectTagAndGetValueAtEnd(
          input, der::CONTEXT_SPECIFIC | der::CONSTRUCTED | 0, wrapped);
    if (rv != Success) {
      return rv;
    }

    // SEQUENCE wrapper
    Reader certsSequence;
    rv = der::ExpectTagAndGetValueAtEnd(wrapped, der::SEQUENCE, certsSequence);
    if (rv != Success) {
      return rv;
    }

    // sequence of certificates
    while (!certsSequence.AtEnd()) {
      Input cert;
      rv = der::ExpectTagAndGetTLV(certsSequence, der::SEQUENCE, cert);
      if (rv != Success) {
        return rv;
      }
      rv = certs.Append(cert);
      if (rv != Success) {
        return rv;
      }
    }
  }

  return ResponseData(tbsResponseData, context, signedData, certs);
}
Exemple #15
0
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativePull_DummyHandler)) {
    for (size_t i = 0; i < kTrialCount; i++) {
        StringStream s(json_);
        BaseReaderHandler<> h;
        Reader reader;
        reader.IterativeParseInit();
        while (!reader.IterativeParseComplete()) {
            if (!reader.IterativeParseNext<kParseDefaultFlags>(s, h))
                break;
        }
        EXPECT_FALSE(reader.HasParseError());
    }
}
Exemple #16
0
int main()
{
    Reader rr;

    while (true) {
        rr.next_line(game);
        if (game[0] == 'G') break;

        printf("%d\n", score());
    }

    return 0;
}
Exemple #17
0
  void deserialize(Reader &is) {
    clear();

    is.read((char*)&num_buckets_, sizeof(num_buckets_));

    index_ = new KMerDataIndex[num_buckets_];
    for (size_t i = 0; i < num_buckets_; ++i)
      index_[i].deserialize(is);

    bucket_starts_.resize(num_buckets_ + 1);
    is.read((char*)&bucket_starts_[0], (num_buckets_ + 1) * sizeof(bucket_starts_[0]));
    count_size();
  }
Exemple #18
0
int main() {
    UnixBuilder unixBuilder;
    VmsBuilder vmsBuilder;
    Reader reader;
// Reader: director
    reader.setBuilder(&unixBuilder);
    reader.construct(input, NUM_ENTRIES);
    std::cout << unixBuilder.getResult()->getState() << std::endl;

    reader.setBuilder(&vmsBuilder);
    reader.construct(input, NUM_ENTRIES);
    std::cout << vmsBuilder.getResult()->getState() << std::endl;
}
int32 PhunePreferenceBase64::Deserialize(std::string jsonSrc)
{

	if (jsonSrc.length() == 0)
		return 0;

	Reader reader;
	Value jsonValue;

	reader.parse(jsonSrc, jsonValue, false);

	return DeserializeFromValue(jsonValue);
}
Exemple #20
0
int client(int nframes, std::string &name)
{
    Reader reader;
    reader.nframes=nframes;

    bool forever=false;
    if (nframes==-1)
        forever=true;
    else
        reader.latencies.reserve(nframes);

    std::string portName;
    portName="/profiling/client/";
    portName+=name;
    portName+="/port:i";

    reader.useCallback();
    reader.open(portName.c_str());

    portName="/profiling/client/";
    portName+=name;
    portName+="/port:o";
    
    reader.outPort.open(portName.c_str());

    while( (reader.count<nframes) || forever)
        {
            //give the CPU some time
            Time::delay(0.5);
        }

    reader.close();

    std::vector<Report>::iterator it=reader.latencies.begin();
    FILE *of=fopen("timing.txt", "w");
    while(it!=reader.latencies.end())
        {
            fprintf(of, "%u %lf\n", (*it).payload, (*it).dt);
            it++;
        }
    fclose(of);

    double averageLatency=reader.delay/reader.count;
    double stdLatency=(1.0/(reader.count-1))*(reader.delaySq-reader.count*averageLatency*averageLatency);

    stdLatency=sqrt(stdLatency);

    fprintf(stderr, "Received: %d average latency %.3lf +/- %.5lf [ms]\n", 
            reader.count, averageLatency, stdLatency);
    return 0;
}
void datahandle(struct user *puser)
{
	
	Value root;
	Reader reader;
	int typecode;
	string data = puser->data;
	cout<<"in datahandle: "<<data<<endl;
	if(reader.parse(data,root))
		typecode = root["typecode"].asInt();
	cout<<"typecode:"<<typecode<<endl;
	if(typecode == 0)
	{
		cout<<"data is wrong"<<endl;
	}
	switch(typecode)
	{
		case 1:												//regist
		case 40: add_job(pool, regist_change, puser); break;	//change information
		case 20: add_job(pool, login, puser); break;		//login
		case 500: add_job(pool, privatemsg ,puser); break;
		case 600: add_job(pool, tofocus,puser); break;
		case 620: add_job(pool, getfocuslist ,puser); break;
		case 640: add_job(pool, getfanslist ,puser); break;

		case 1000: 										//get private qunlist
		case 1100: add_job(pool, getqunlist, puser); break;	//get public qunlist
		case 1020: add_job(pool, deletequn ,puser); break;
		case 1040: add_job(pool, quitqun, puser); break;
		case 1060: add_job(pool, addqun, puser); break;
		case 1061:
		case 1062: add_job(pool, respaddqun, puser); break;
		case 1120: add_job(pool, serqun ,puser); break;
		case 1300: add_job(pool, createqun ,puser); break;
		case 1200: add_job(pool, chat, puser); break;
		case 1210: add_job(pool, getqunrecord, puser); break;
		case 2000: add_job(pool, createhottie, puser); break;//create hot tie
		case 2100: add_job(pool, getsavedhotielist, puser); break;
		case 2020: add_job(pool, gethottielist, puser); break;
		case 2080: add_job(pool, getonehottie, puser); break;
		case 2040: add_job(pool, getprivatehottielist, puser); break;
		case 2060: add_job(pool, savehottie, puser); break;

		case 3000: add_job(pool, askpk, puser); break;
		case 3001: add_job(pool, quitpk, puser); break;
		case 3002: add_job(pool, quitgame, puser); break;
		case 3003: add_job(pool, finishgame, puser); break;

		default: break;
	}
}
Exemple #22
0
/**
 * Retrieves the state of the simulator.
 * @return The state of the simulator.
 */
const JsonClient::SIMULATORSTATE JsonClient::getSimulatorState() {

    lock_guard<mutex> guardCurl(curlMutex);

    // Set the URL
    curl_easy_setopt(curl, CURLOPT_URL, (this->address + "json_output?state=getIt").c_str());


    string recvHeader;
    string recvBody;

    // Send a GET request
    curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);

    // Write no body
    curl_easy_setopt(curl, CURLOPT_READDATA, NULL);

    // Send all received data to this function
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeStrCallback);

    // We want the headers be written to string
    curl_easy_setopt(curl, CURLOPT_WRITEHEADER, &recvHeader);

    // We want the body be written to this string
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &recvBody);

    // Perform the request && check for errors
//cerr << "start curl_easy_perform in line " << __LINE__ << ", now " << curls_running << " are running.\n";  curls_running++;
    if(curl_easy_perform(curl) != CURLE_OK) {
//cerr << "end curl_easy_perform in line " << __LINE__ << ", now " << curls_running << " are running.\n";  curls_running--;
        return UNKNOWN;
    }
//cerr << "end curl_easy_perform in line " << __LINE__ << ", now " << curls_running << " are running.\n";  curls_running--;

    // Check headers if successful, we want:
    // HTTP/1.0 200 Ok
    string code = recvHeader.substr(9, 3);
    if (code.compare("200") != 0) {
        return UNKNOWN;
    }

    Reader reader;
    Value value;
    if (reader.parse(recvBody, value)) {
        if (value["serverState"].compare("running") == 0)
            return RUNNING;
        else if (value["serverState"].compare("paused") == 0)
            return PAUSED;
    }
    return UNKNOWN;
}
bool MultipartParser::parseFileContentDisposition(Reader &r) {
	r.skipChars<Reader::CharGroup<chars::CharGroupId::WhiteSpace>, Reader::Chars<';'>>();
	if (r.empty()) { return true; }

	Reader name;

	while (!r.empty()) {
		if (r.is("name=")) {
			r.offset(5);
			if (r.is('"')) {
				++ r;
				name = r.readUntil<Reader::Chars<'"'>>();
			} else {
				name = r.readUntil<Reader::CharGroup<chars::CharGroupId::WhiteSpace>, Reader::Chars<';'>>();
			}
		}
		r.skipUntil<Reader::Chars<';'>>();
		r.skipChars<Reader::CharGroup<chars::CharGroupId::WhiteSpace>, Reader::Chars<';'>>();
	}

	if (!name.empty()) {
		fileName = name.str();
		return true;
	}
	return false;
}
Exemple #24
0
void MsgBuf::read(Reader& in) {
    while(!in.eof()) {
        uint32_t type = in.get_binary<uint32_t>();
        uint32_t time = in.get_binary<uint32_t>();
        uint32_t len = in.get_binary<uint32_t>();
        if(!in.eof()) {
            std::string str_msg = in.get_string(len);
            if(len == str_msg.size()) {
                const TradeMsg msg(type, time, len, str_msg);
                add(msg);
            }
        }
    }
} 
// For covering PutN() generic version
TEST(PrettyWriter, OStreamWrapper) {
    StringStream s(kJson);
    
    std::stringstream ss;
    OStreamWrapper os(ss);
    
    PrettyWriter<OStreamWrapper> writer(os);

    Reader reader;
    reader.Parse(s, writer);
    
    std::string actual = ss.str();
    EXPECT_STREQ(kPrettyJson, actual.c_str());
}
Gradient::Gradient(const Reader& reader) :
  layer(LAYER_BACKGROUND0),
  gradient_top(),
  gradient_bottom()
{
  layer = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND0);
  std::vector<float> bkgd_top_color, bkgd_bottom_color;
  if(!reader.get("top_color", bkgd_top_color) ||
     !reader.get("bottom_color", bkgd_bottom_color))
    throw std::runtime_error("Must specify top_color and bottom_color in gradient");

  gradient_top = Color(bkgd_top_color);
  gradient_bottom = Color(bkgd_bottom_color);
}
Exemple #27
0
int _tmain(int argc, _TCHAR* argv[])
{
//--- create pen ---//
	da0lib::LaserPen* pLaserPen = CreateLaserPen();

    da0lib::LASERPEN pen;
    pen.penid = RGB(255, 255, 0);
    pen.frequency = 12.34;
    pen.pulsewidth = 234.345;
    pen.speedmark = 333.223;

    pLaserPen->update(pen.penid, &pen);
    pLaserPen->save(L"test_xe4.pen");

//--- open pen ---//
    pLaserPen->open(L"test_xe4.pen");
    da0lib::LASERPEN* pPen = pLaserPen->query(RGB(255, 255, 0));

    _tprintf(L"pen.penid : %d\n", pPen->penid);
    _tprintf(L"pen.frequency : %.2f\n", pPen->frequency);
    _tprintf(L"pen.pulsewidth : %.2f\n", pPen->pulsewidth);
    _tprintf(L"pen.speedmark : %.2f\n\n", pPen->speedmark);

    DestroyLaserPen(pLaserPen);


//--- create writer ---//
    Writer* pWriter = da0lib::CreateWriter(L"test_xe4.da0");
    pWriter->layerBegin(L"testlayer");
    pWriter->shapeBegin();
    pWriter->shapeLine(RGB(255,255,0), -1.1,2.2, 3.3, 4.4);
    pWriter->shapeArc(RGB(255,255,0), 5,6,7,0,90);
    pWriter->shapeRectangle(RGB(255,255,0), -7,8,9,-10);
    DestroyWriter(pWriter);


//--- create reader ---//
	Reader* pReader  = da0lib::CreateReader(L"test_xe4.da0");

    Readerable* pReaderable = new TMyReaderable();

    pReader->load();
    pReader->parse(pReaderable, NULL);

    DestroyReader(pReader);

    int t = getchar();

	return 0;
}
Exemple #28
0
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativePullInsitu_DummyHandler)) {
    for (size_t i = 0; i < kTrialCount; i++) {
        memcpy(temp_, json_, length_ + 1);
        InsituStringStream s(temp_);
        BaseReaderHandler<> h;
        Reader reader;
        reader.IterativeParseInit();
        while (!reader.IterativeParseComplete()) {
            if (!reader.IterativeParseNext<kParseDefaultFlags|kParseInsituFlag>(s, h))
                break;
        }
        EXPECT_FALSE(reader.HasParseError());
    }
}
Exemple #29
0
int main()
{
    int T = rr.next_u32();
    rr.skip_line();

    int ncase = 0;
    while (T--) {
        read_text();
        solve();
        printf("Document %d: %d %d\n", ++ncase, p, q);
    }

    return 0;
}
Exemple #30
0
int
CHelperUnit::_pay_res(NETInputPacket* pack)
{
	int 			ret = 0;
	int				code = 0;
	string 			json, result;
	Reader			r;
	Value			v;
	unsigned long 	flow;
	CClientUnit		*c;
	CDecoderUnit	*d;
	NETOutputPacket	out;
	CEncryptDecrypt	ed;

	log_debug("-------- CHelperUnit::_pay_res begin --------");
	code = pack->ReadByte();
	json = pack->ReadString();
	log_debug("ErrCode: %d", code);
	log_debug("JSON: %s", json.c_str());

	if (r.parse(json, v)) {
		flow = v["flow"].asUInt64();
		result = v["result"].asString();

		out.Begin(SERVER_CMD_REP);
		out.WriteInt(0);
		out.WriteString(result);
		out.End();
	} else { /* error handle */
		out.Begin(SERVER_CMD_REP);
		out.WriteInt(1);
		out.WriteString("");
		out.End();

		log_debug("-------- CHelperUnit::_pay_res error --------");
		ret = -1;
	}

	ed.EncryptBuffer(&out);  /* 编码 */

	c = _get_client_by_id(flow, &d);

	if (c && c->get_state() != CONN_FATAL_ERROR) {
		c->add_rsp_buf(out.packet_buf(), out.packet_size()); 
		ret = c->send();
	}

	log_debug("-------- CHelperUnit::_pay_res end --------");
	return ret;
}