#ifndef STREAM_H #define STREAM_H #include using namespace std; class Stream { public: Stream(size_t minSize = 1); virtual ~Stream(); void readSocket(int socket); void sendToSocket(int socket); bool hasData() const; void write(const void* writeData, size_t length); void writeChar(char c); void writeShort(short s); void writeInt(int i); void writeLong(long l); void writeUnsignedChar(unsigned char uc); void writeUnsignedShort(unsigned short us); void writeUnsignedInt(unsigned int ui); void writeUnsignedLong(unsigned long ul); void read(void* buffer, size_t length); char readChar(); short readShort(); int readInt(); long readLong(); unsigned char readUnsignedChar(); unsigned short readUnsignedShort(); unsigned int readUnsignedInt(); unsigned long readUnsignedLong(); private: void resize(size_t minSize); size_t getSize(size_t minSize); size_t dataLength = 0; unsigned char* data = nullptr; size_t writeIndex = 0; size_t readIndex = 0; }; #endif