#ifndef _SSTP_SOCKETCONNECTIONRECEIVER_HPP_ #define _SSTP_SOCKETCONNECTIONRECEIVER_HPP_ #include #include #include #include #include #include #include #include #include #include #include #include class SocketConnectionReceiver { public: SocketConnectionReceiver(); SocketConnectionReceiver(int socket, sockaddr_in inernalSocketAddress); virtual ~SocketConnectionReceiver(); void initialize(int socket, sockaddr_in inernalSocketAddress); void close(void); private: static constexpr size_t BUFFER_LENGTH=65536; // this is the buffer length for the socket void isRunnable(bool isRunnable); bool isRunnable(void); void threadFunction(int data); bool handlePut(Block &commands); void handleQuit(void); size_t readLine(String &line); size_t expectPacket(void); size_t read(Array &buffer); String restoreFileName(Block block,DWORD startIndex,DWORD endIndex); friend class SocketServer; char mBuffer[BUFFER_LENGTH] = {0}; int mSocket; bool mIsRunnable; sockaddr_in mInternalSocketAddress; }; inline void SocketConnectionReceiver::isRunnable(bool isRunnable) { mIsRunnable=isRunnable; } inline bool SocketConnectionReceiver::isRunnable(void) { return mIsRunnable; } #endif