#ifndef _I_ROUTER_CLIENT_H_ #define _I_ROUTER_CLIENT_H_ #include #include #include #include #include "messages/Frame.pb.h" #include "ITransportClient.h" #include "common/KError.h" using namespace std; namespace Kinova { namespace Api { typedef std::function MessageCallback; typedef struct { bool andForget; uint32_t delay_ms; uint32_t timeout_ms; } RouterClientSendOptions; class IRouterClient { public: virtual ~IRouterClient() {} virtual void reset() = 0; virtual void registerBridgingCallback(std::function bridgingCallback) = 0; virtual void registerNotificationCallback( uint32_t serviceId, function ) = 0; virtual void registerErrorCallback( function callback ) = 0; virtual void registerHitCallback(std::function hitSessionCallback) = 0; virtual future send(const std::string& txPayload, uint32_t serviceVersion, uint32_t funcId, uint32_t deviceId, const RouterClientSendOptions& options ) = 0; virtual Error sendWithCallback(const std::string& txPayload, uint32_t serviceVersion, uint32_t funcId, uint32_t deviceId, MessageCallback callback) = 0; virtual Error sendMsgFrame(const Frame& msgFrame) = 0; virtual uint16_t getConnectionId() = 0; virtual void SetActivationStatus(bool isActive) = 0; virtual ITransportClient* getTransport() = 0; }; } // namespace Api } // namespace Kinova #endif // _I_ROUTER_CLIENT_H_