void AprilServer::onProtobufMessage(const muduo::net::TcpConnectionPtr& conn,
        const MessagePtr& message,
        muduo::Timestamp time)
{

    const google::protobuf::Descriptor* descriptor = message->GetDescriptor();
    const google::protobuf::FieldDescriptor* id_field = descriptor->FindFieldByName("id");
    const google::protobuf::FieldDescriptor* sync_field = descriptor->FindFieldByName("sync");

    const google::protobuf::Reflection* reflection = message->GetReflection();
    int32_t id = reflection->GetInt32(*message, id_field);
    bool sync = reflection->GetBool(*message, sync_field);
    LOG_INFO << "receive - id " << id << " sync " << sync;

    if (_sync && sync) {
        _dict->swap_dict();
        _sync = false;
    }

    april::response mess;
    int value = 0;
    _dict->seek(id, &value);
    mess.set_id(value);
    mess.set_sync(_sync);
    _codec.send(conn, mess);
    
}
Exemple #2
0
Arcus::PythonMessage::PythonMessage(const MessagePtr& message)
{
    _shared_message = message;
    _message = message.get();
    _reflection = message->GetReflection();
    _descriptor = message->GetDescriptor();
}