20 #ifndef MIR_FRONTEND_TEMPLATE_PROTOBUF_MESSAGE_PROCESSOR_H_
21 #define MIR_FRONTEND_TEMPLATE_PROTOBUF_MESSAGE_PROCESSOR_H_
25 #include <google/protobuf/service.h>
27 #include <boost/exception/diagnostic_information.hpp>
42 { typedef ::google::protobuf::Message*
type; };
46 template<
class Self,
class Server,
class ParameterMessage,
class ResultMessage>
50 void (Server::*
function)(
51 ::google::protobuf::RpcController* controller,
52 const ParameterMessage* request,
53 ResultMessage* response,
54 ::google::protobuf::Closure* done),
57 ParameterMessage parameter_message;
58 parameter_message.ParseFromString(invocation.
parameters());
59 ResultMessage result_message;
63 std::unique_ptr<google::protobuf::Closure> callback(
64 google::protobuf::NewPermanentCallback<
66 ::google::protobuf::uint32,
79 catch (std::exception
const&
x)
81 result_message.set_error(boost::diagnostic_information(x));
82 self->send_response(invocation.
id(), &result_message);
Definition: message_processor.h:37
::google::protobuf::uint32 id() const
Definition: protobuf_message_processor.cpp:116
::google::protobuf::Message * type
Definition: template_protobuf_message_processor.h:42
void invoke(ProtobufMessageProcessor *self, protobuf::DisplayServer *server, void(protobuf::DisplayServer::*function)(::google::protobuf::RpcController *controller, const protobuf::SurfaceId *request, protobuf::Buffer *response,::google::protobuf::Closure *done), Invocation const &invocation)
Definition: protobuf_message_processor.cpp:62
Definition: dimensions.h:35
const ::std::string & parameters() const
Definition: protobuf_message_processor.cpp:111
Definition: template_protobuf_message_processor.h:41