示例#1
0
communication::ListTasksResponse task_manager::list_tasks()
{
    communication::ListTasksResponse list_resp;

    list_resp.set_status(communication::Status::OK);

    std::unique_lock<std::mutex> list_lock(task_mutex_);
    for (int i = 0; i < tasks.size(); ++i)
    {
        list_resp.mutable_tasks()->Add();

        int64_t task_id = i;

        auto tmp_i = list_resp.mutable_tasks(task_id);

        tmp_i->set_taskid(task_id);
        tmp_i->set_clientid(tasks[task_id].get_client_id());

        tmp_i->mutable_task()->mutable_a()->set_value(tasks[task_id].get_a());
        tmp_i->mutable_task()->mutable_b()->set_value(tasks[task_id].get_b());
        tmp_i->mutable_task()->mutable_p()->set_value(tasks[task_id].get_p());
        tmp_i->mutable_task()->mutable_m()->set_value(tasks[task_id].get_m());
        tmp_i->mutable_task()->set_n(tasks[task_id].get_n());

        auto res = tasks[task_id].get_result();
        if (res >= 0)
        {
            tmp_i->set_result(res);
        }
    }
    return list_resp;
}
示例#2
0
void NetConnection::AsyncReadHandler(const boost::system::error_code& err, size_t byte_transferred)
{
    if (!err) {

        Decrypt(m_readBuff, byte_transferred);

        auto spMsg = std::make_shared<RawMessage>();
        // TODO: 
        // 1. 如果protobuf有字段为0,接收到的数据中会有'\0'存在,
        // 而在C/C++的字符数组中'\0'表示结尾,导致ParseFromString没有读取到所
        // 有的数据
        // 2. ParseFromString是如何处理内存的。
        if (spMsg->ParsePartialFromArray(m_readBuff, byte_transferred)) {
            spMsg->set_clientid(GetConnId());
            m_spConnMgr->PutInRecvQueue(m_connId, spMsg);    
        }

        Start();
    }
    else if (boost::asio::error::eof == err) {
        // 对方关闭了连接
        Close();
    }
    else
    {
        std::cout << err << std::endl;
        Close();
    }
}
示例#3
0
void UserLogin::MergeFrom(const UserLogin& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_clienttype()) {
      set_clienttype(from.clienttype());
    }
    if (from.has_clientid()) {
      set_clientid(from.clientid());
    }
    if (from.has_clientsecret()) {
      set_clientsecret(from.clientsecret());
    }
    if (from.has_sessionid()) {
      set_sessionid(from.sessionid());
    }
  }
  mutable_unknown_fields()->append(from.unknown_fields());
}