BuffersStorage.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 BUFFERSSTORAGE_H
  9. #define BUFFERSSTORAGE_H
  10. #include <vector>
  11. #include <pthread.h>
  12. #include <stdint.h>
  13. class NativeByteBuffer;
  14. class BuffersStorage {
  15. public:
  16. BuffersStorage(bool threadSafe);
  17. NativeByteBuffer *getFreeBuffer(uint32_t size);
  18. void reuseFreeBuffer(NativeByteBuffer *buffer);
  19. static BuffersStorage &getInstance();
  20. private:
  21. std::vector<NativeByteBuffer *> freeBuffers8;
  22. std::vector<NativeByteBuffer *> freeBuffers128;
  23. std::vector<NativeByteBuffer *> freeBuffers1024;
  24. std::vector<NativeByteBuffer *> freeBuffers4096;
  25. std::vector<NativeByteBuffer *> freeBuffers16384;
  26. std::vector<NativeByteBuffer *> freeBuffers32768;
  27. std::vector<NativeByteBuffer *> freeBuffersBig;
  28. bool isThreadSafe = true;
  29. pthread_mutex_t mutex;
  30. };
  31. #endif