/* * This is the source code of tgnet library v. 1.1 * It is licensed under GNU GPL v. 2 or later. * You should have received a copy of the license in this archive (see LICENSE). * * Copyright Nikolai Kudashov, 2015-2018. */ #ifndef CONNECTIONSESSION_H #define CONNECTIONSESSION_H #include #include #include "Defines.h" class ConnectionSession { public: ConnectionSession(int32_t instance); void recreateSession(); void genereateNewSessionId(); void setSessionId(int64_t id); int64_t getSessionId(); uint32_t generateMessageSeqNo(bool increment); int32_t isMessageIdProcessed(int64_t messageId); void addProcessedMessageId(int64_t messageId); bool hasMessagesToConfirm(); void addMessageToConfirm(int64_t messageId); NetworkMessage *generateConfirmationRequest(); bool isSessionProcessed(int64_t sessionId); void addProcessedSession(int64_t sessionId); private: int32_t instanceNum; int64_t sessionId; uint32_t nextSeqNo = 0; int64_t minProcessedMessageId = 0; std::vector processedMessageIds; std::vector messagesIdsForConfirmation; std::vector processedSessionChanges; }; #endif