#ifndef _SESSION_MANAGER_H_ #define _SESSION_MANAGER_H_ #include #include #include #include #include #include "IRouterClient.h" #include "messages/Frame.pb.h" #include "messages/Session.pb.h" #include "client_stubs/SessionClientRpc.h" namespace Kinova { namespace Api { class SessionManager : public Session::SessionClient { public: SessionManager() = delete; explicit SessionManager(IRouterClient* router, std::function connectionTimeoutCallback = nullptr); virtual ~SessionManager(); void CreateSession(const Session::CreateSessionInfo& info); void CloseSession(); Session::ConnectionList GetConnections(); private: void Hit(FrameTypes hitType); void ThreadSessionValidation(); std::function m_connectionTimeoutCallback; std::thread m_thread; std::atomic m_hasBeenSent { false }; std::atomic m_hasBeenReceived { false }; std::atomic m_threadRunning { false }; Session::CreateSessionInfo m_sessionInfo; void checkTransport(); }; } } #endif // _MESSAGE_MANAGER_H_