ConnectionSession.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * This is the source code of tgnet library v. 1.1
  3. * It is licensed under GNU GPL v. 2 or later.
  4. * You should have received a copy of the license in this archive (see LICENSE).
  5. *
  6. * Copyright Nikolai Kudashov, 2015-2018.
  7. */
  8. #ifndef CONNECTIONSESSION_H
  9. #define CONNECTIONSESSION_H
  10. #include <stdint.h>
  11. #include <vector>
  12. #include "Defines.h"
  13. class ConnectionSession {
  14. public:
  15. ConnectionSession(int32_t instance);
  16. void recreateSession();
  17. void genereateNewSessionId();
  18. void setSessionId(int64_t id);
  19. int64_t getSessionId();
  20. uint32_t generateMessageSeqNo(bool increment);
  21. int32_t isMessageIdProcessed(int64_t messageId);
  22. void addProcessedMessageId(int64_t messageId);
  23. bool hasMessagesToConfirm();
  24. void addMessageToConfirm(int64_t messageId);
  25. NetworkMessage *generateConfirmationRequest();
  26. bool isSessionProcessed(int64_t sessionId);
  27. void addProcessedSession(int64_t sessionId);
  28. private:
  29. int32_t instanceNum;
  30. int64_t sessionId;
  31. uint32_t nextSeqNo = 0;
  32. int64_t minProcessedMessageId = 0;
  33. std::vector<int64_t> processedMessageIds;
  34. std::vector<int64_t> messagesIdsForConfirmation;
  35. std::vector<int64_t> processedSessionChanges;
  36. };
  37. #endif