X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Frpc%2Fmessage_processor.h;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Frpc%2Fmessage_processor.h;h=4c1dd4288072e07bdbcc3cb5f75a7150a21f1ef3;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/src/anbox/rpc/message_processor.h b/src/type3_AndroidCloud/anbox-master/src/anbox/rpc/message_processor.h new file mode 100644 index 0000000..4c1dd42 --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/src/anbox/rpc/message_processor.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2016 Simon Fels + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + */ + +#ifndef ANBOX_RPC_MESSAGE_PROCESSOR_H_ +#define ANBOX_RPC_MESSAGE_PROCESSOR_H_ + +#include "anbox/network/message_processor.h" +#include "anbox/network/message_sender.h" +#include "anbox/rpc/pending_call_cache.h" + +#include + +#include +#include + +namespace anbox { +namespace protobuf { +namespace rpc { +class Invocation; +} // namespace rpc +} // namespace protobuf +namespace rpc { +class Invocation { + public: + Invocation(anbox::protobuf::rpc::Invocation const& invocation) + : invocation_(invocation) {} + + const ::std::string& method_name() const; + const ::std::string& parameters() const; + google::protobuf::uint32 id() const; + + private: + anbox::protobuf::rpc::Invocation const& invocation_; +}; + +class MessageProcessor : public network::MessageProcessor { + public: + MessageProcessor(const std::shared_ptr& sender, + const std::shared_ptr& pending_calls); + ~MessageProcessor(); + + bool process_data(const std::vector& data) override; + + void send_response(::google::protobuf::uint32 id, + google::protobuf::MessageLite* response); + + virtual void dispatch(Invocation const&) {} + virtual void process_event_sequence(const std::string&) {} + + private: + std::shared_ptr sender_; + std::vector buffer_; + std::shared_ptr pending_calls_; +}; +} // namespace rpc +} // namespace anbox + +#endif