#ifndef LLARP_ROUTING_MESSAGE_PARSER_HPP #define LLARP_ROUTING_MESSAGE_PARSER_HPP #include #include #include #include #include #include #include #include namespace llarp { struct Router; namespace routing { struct IMessageHandler; struct InboundMessageParser { InboundMessageParser(); bool ParseMessageBuffer(const llarp_buffer_t& buf, IMessageHandler* handler, const PathID_t& from, llarp::Router* r); private: static bool OnKey(dict_reader* r, llarp_buffer_t* key); bool firstKey; char key; dict_reader reader; struct MessageHolder { DataDiscardMessage D; PathLatencyMessage L; DHTMessage M; PathConfirmMessage P; PathTransferMessage T; service::ProtocolFrame H; TransferTrafficMessage I; GrantExitMessage G; RejectExitMessage J; ObtainExitMessage O; UpdateExitMessage U; CloseExitMessage C; }; IMessage* msg = nullptr; MessageHolder m_Holder; }; } // namespace routing } // namespace llarp #endif