| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- #ifndef AUDIOCHUNK_H
 
- #define AUDIOCHUNK_H
 
- #include <memory>
 
- #include <vector>
 
- #include <string>
 
- #include <algorithm>
 
- #include "pthread.h"
 
- #include "platform/WrappedSemaphore.h"
 
- #include "Crypto.h"
 
- #include "Utils.h"
 
- #include <mutex>
 
- class AudioChunk {
 
- private:
 
-     /**
 
-      * @brief Calculates a correct IV by performing bignum addition.
 
-      *
 
-      * @param num Number to add to IV.
 
-      * @return std::vector<uint8_t>
 
-      */
 
-     std::vector<uint8_t> getIVSum(uint32_t num);
 
-     size_t decryptedCount = 0;
 
-     size_t oldStartPos;
 
- public:
 
-     std::unique_ptr<Crypto> crypto;
 
-     std::vector<uint8_t> decryptedData;
 
-     std::vector<uint8_t> audioKey;
 
-     bool keepInMemory = false;
 
-     pthread_mutex_t loadingMutex;
 
-     std::mutex dataAccessMutex;
 
-     uint32_t startPosition;
 
-     uint32_t endPosition;
 
-     uint16_t seqId;
 
-     size_t headerFileSize = -1;
 
-     bool isLoaded = false;
 
-     bool isFailed = false;
 
-     /**
 
-      * @brief Triggered when audiochunk is fully downloaded and decrypted.
 
-      */
 
-     std::unique_ptr<WrappedSemaphore> isLoadedSemaphore;
 
-     /**
 
-      * @brief
 
-      */
 
-     std::unique_ptr<WrappedSemaphore> isHeaderFileSizeLoadedSemaphore;
 
-     /**
 
-      * Decrypts data and writes it to the target buffer
 
-      * @param target data buffer to write to
 
-      * @param offset data offset
 
-      * @param nbytes number of bytes to read
 
-      */
 
-     void readData(uint8_t *target, size_t offset, size_t nbytes);
 
-     /**
 
-      * @brief AudioChunk handles all audiochunk related operations.
 
-      *
 
-      * @param seqId Sequence id of requested chunk
 
-      * @param audioKey Audio key used for decryption of audio data
 
-      * @param startPosition Start position of current chunk in audio file
 
-      * @param predictedEndPosition Predicted end position of given chunk. This is not final positon.
 
-      */
 
-     AudioChunk(uint16_t seqId, std::vector<uint8_t> &audioKey, uint32_t startPosition, uint32_t predictedEndPosition);
 
-     ~AudioChunk();
 
-     /**
 
-      * @brief Appends incoming chunked data to local cache.
 
-      *
 
-      * @param data encrypted binary audio data.
 
-      */
 
-     void appendData(const std::vector<uint8_t> &data);
 
-     /**
 
-      * @brief Sets loaded status on the chunk
 
-      *
 
-      */
 
-     void finalize();
 
- };
 
- #endif
 
 
  |