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); }
Arcus::PythonMessage::PythonMessage(const MessagePtr& message) { _shared_message = message; _message = message.get(); _reflection = message->GetReflection(); _descriptor = message->GetDescriptor(); }