54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#ifndef _SSTP_SOCKETCONNECTIONRECEIVER_HPP_
|
|
#define _SSTP_SOCKETCONNECTIONRECEIVER_HPP_
|
|
#include <stdio.h>
|
|
#include <iostream>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <unistd.h>
|
|
#include <arpa/inet.h>
|
|
#include <thread>
|
|
#include <common/string.hpp>
|
|
#include <common/profiler.hpp>
|
|
#include <common/block.hpp>
|
|
#include <common/fileio.hpp>
|
|
|
|
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<String> &commands);
|
|
void handleQuit(void);
|
|
size_t readLine(String &line);
|
|
size_t expectPacket(void);
|
|
size_t read(Array<char> &buffer);
|
|
String restoreFileName(Block<String> 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 |