From dab50aaf417897a594411585be78d4ba2017b320 Mon Sep 17 00:00:00 2001 From: NightBits Date: Wed, 19 Dec 2018 20:25:07 +0100 Subject: [PATCH] Initial commit --- BaseCrossSocket.cpp | 770 ++++++++++++++++++++++++++++++++++++++ BaseCrossSocket.h | 107 ++++++ CrossSocket.cpp | 252 +++++++++++++ CrossSocket.h | 34 ++ CrossSocketConfig.h | 9 + CrossSocketErrors.cpp | 52 +++ CrossSocketErrors.h | 53 +++ CrossSocketPlatform.h | 62 +++ CrossSockets.h | 9 + CrossSocketsCore.h | 18 + CrossSockets_protocol.pdf | Bin 0 -> 227848 bytes CrossThreads.cpp | 109 ++++++ CrossThreads.h | 47 +++ CrossThreadsHandler.cpp | 58 +++ CrossThreadsHandler.h | 25 ++ Example/server.cpp | 66 ++++ Example/server.h | 33 ++ README.md | 14 +- 18 files changed, 1716 insertions(+), 2 deletions(-) create mode 100644 BaseCrossSocket.cpp create mode 100644 BaseCrossSocket.h create mode 100644 CrossSocket.cpp create mode 100644 CrossSocket.h create mode 100644 CrossSocketConfig.h create mode 100644 CrossSocketErrors.cpp create mode 100644 CrossSocketErrors.h create mode 100644 CrossSocketPlatform.h create mode 100644 CrossSockets.h create mode 100644 CrossSocketsCore.h create mode 100644 CrossSockets_protocol.pdf create mode 100644 CrossThreads.cpp create mode 100644 CrossThreads.h create mode 100644 CrossThreadsHandler.cpp create mode 100644 CrossThreadsHandler.h create mode 100644 Example/server.cpp create mode 100644 Example/server.h diff --git a/BaseCrossSocket.cpp b/BaseCrossSocket.cpp new file mode 100644 index 0000000..fa16a30 --- /dev/null +++ b/BaseCrossSocket.cpp @@ -0,0 +1,770 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// BaseCrossSocket.cpp + +#include "BaseCrossSocket.h" +#include "CrossSocketPlatform.h" +#include "CrossSocket.h" +#include "CrossThreads.h" +#include "CrossThreadsHandler.h" + +#include +#include +#include +#include +#include +#include + +// Create the constructor +BaseCrossSocket::BaseCrossSocket() +{ + _socketHandle = -1; + _closeSignal = false; + + // Initialize default values + _error = ""; + _blockingMode = nonblocking; + _timeoutSeconds = 0; + _timeoutMicroSeconds = 0; + _password = ""; + _threadHandler = new CrossThreadsHandler(); + + #ifdef __WIN32__ + static bool firstTime = true; + if (firstTime) + { + WSAData wsaData; + + if ((int i = WSAStartup(MAKEWORD(1, 1), &wsaData)) != 0) + { + handleError(NULL, "BaseCrossSocket - WSAStartup() failed: "); + exit(-1); + } + + // cleanup + atexit(WSA_exit); + firstTime = false; + } + #endif +} + +BaseCrossSocket::~BaseCrossSocket() +{ + if (_socketHandle > 0) + { + close(_socketHandle); + } +} + +bool BaseCrossSocket::listen(int connectionLimit, CrossSocketErrors *error) +{ + fprintf(stderr,"This application is using: CrossSockets\n" + " Created by Jeroen Saey\n" + "========================================\n"); + + getSocket(); + + char alreadyInUse = 1; + setsockopt(_socketHandle, SOL_SOCKET, SO_REUSEADDR, &alreadyInUse, sizeof(int)); + + if(::listen(_socketHandle, connectionLimit) == -1) + { + handleError(error, "BaseCrossSocket::listen() error: "); + return false; + } + + noError(error); + return true; +} + +BaseCrossSocket* BaseCrossSocket::accept(CrossSocketErrors *error) +{ + int remoteSocketHandle = -1; + sockaddr remoteAddress; + + if (!waitRead(error)) + { + return NULL; + } + + sw_socklen_t socketSize = sizeof(sockaddr); + + if ((remoteSocketHandle = ::accept(_socketHandle, &remoteAddress, &socketSize)) == int(SOCKETFAIL)) + { + handleError(error, "BaseCrossSocket::accept() error: "); + return NULL; + } + + // Check if we are in non blocking mode + if (_blockingMode == nonblocking) + { + fcntl(remoteSocketHandle, F_SETFL, O_NONBLOCK); + } + + // Create a new class of the BaseCrossSocket + BaseCrossSocket* clientSocket = create(remoteSocketHandle, error); + + noError(error); + + stringstream clientInformation; + clientInformation << ((CrossSocket*)clientSocket)->getClientAddress() << " is connected!\n" + << ((CrossSocket*)clientSocket)->getClientAddress() << " : " << ((CrossSocket*)clientSocket)->getClientPort() << "\n"; + + cout << clientInformation.str(); + + return clientSocket; +} + +bool BaseCrossSocket::checkPassword(BaseCrossSocket *socket) +{ + if (_password.length() > 0) + { + socket->writeLine("This server is protected with a password, please insert the password now."); + + int passwordCounter = 0; + string givenPassword; + while (givenPassword != _password) + { + // Just read 50 bytes for the password + givenPassword = socket->readLine(50); + if (givenPassword != _password) + { + socket->writeLine("Incorrect password given."); + passwordCounter++; + if (passwordCounter >= 5) + { + socket->writeLine("Too many attempts where made to enter the correct password."); + socket->writeLine("Have a nice day!"); + socket->writeLine("Disconnecting..."); + socket->writeLine("403"); + disconnect(); + return false; + } + } + } + } + socket->writeLine("The password is correct. Access granted"); + return true; +} + +bool BaseCrossSocket::isConnected() +{ + return _socketHandle > 0; +} + +bool BaseCrossSocket::disconnect(CrossSocketErrors *error) +{ + int i = 0; + char buffer[256]; + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::disconnect() - No connection"); + return false; + } + + // check if the client closed the connection + if (shutdown(_socketHandle, 1) != 0) + { + handleError(error, "BaseCrossSocket::disconnect() error: "); + return false; + } + + CrossSocketErrors crossSocketError; + + // Check if we got a signal from the client that he closed the connection + if (!_closeSignal) + { + while (true) + { + if (!waitRead(error)) + { + return false; + } + + i = readLine(buffer, 256, &crossSocketError); + + if (i <= 0) + { + break; + } + + // If we do not want to wait we need to throw an error + if (_blockingMode == noWait) + { + setError(error, notReady, "BaseCrossSocket::disconnect() - We need more time, please call again"); + return false; + } + } + } + + if (i != 0) + { + setError(error, crossSocketError, _error); + return false; + } + + // Reset the state + reset(); + + close(_socketHandle); + _socketHandle = -1; + + noError(error); + cout << "CrossSockets: Client has been disconnected!\n"; + return true; +} + +bool BaseCrossSocket::closeSocketHandle() +{ + if (_socketHandle > 0) + { + close(_socketHandle); + _socketHandle = -1; + + //reset state + reset(); + + return true; + } + return false; +} + +int BaseCrossSocket::writeLine(string message, CrossSocketErrors *error) +{ + //TODO: Why cant we append the data? + //int returnValue = send(_socketHandle, message.append("\r\n").data(), strlen(message.data()), 0); + int returnValue = send(_socketHandle, message.data(), message.size(), 0); + send(_socketHandle, "\r\n", 2, 0); + return returnValue; +} + +int BaseCrossSocket::writeLine(string message, size_t length, CrossSocketErrors *error) +{ + int returnValue = send(_socketHandle, message.data(), length, 0); + send(_socketHandle, "\r\n", 2, 0); + return returnValue; +} + +int BaseCrossSocket::write(const string message, size_t length, CrossSocketErrors *error) +{ + return send(_socketHandle, message.data(), length, 0); +} + +int BaseCrossSocket::write(const string message, CrossSocketErrors *error) +{ + return send(_socketHandle, message.data(), message.size(), 0); +} + +void BaseCrossSocket::setPassword(const string password) +{ + _password = password; +} + +ssize_t BaseCrossSocket::read(char *buffer, CrossSocketErrors *error) +{ + ssize_t returnValue = 0; + char singleCharacter; + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::read() - No connection"); + return -1; + } + + if (!waitRead(error)) + { + return -1; + } + + while (size_t i = recv(_socketHandle, buffer + returnValue, int(sizeof(buffer) - returnValue), 0)) + { + if (i == 0) + { + break; + } + returnValue += i; + if (returnValue > sizeof(buffer) -1) + { + break; + } + } + return returnValue; +} + +ssize_t BaseCrossSocket::read(char *buffer, int bytes, CrossSocketErrors *error) +{ + ssize_t returnValue = 0; + char singleCharacter; + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::read() - No connection"); + return -1; + } + + if (!waitRead(error)) + { + return -1; + } + + while (size_t i = recv(_socketHandle, buffer + returnValue, int(bytes - returnValue), 0)) + { + if (i == 0) + { + break; + } + returnValue += i; + if (returnValue > bytes -1) + { + break; + } + } + return returnValue; +} + +string BaseCrossSocket::readLine(int size, CrossSocketErrors *error) +{ + char *buffer = new char[size]; + ssize_t returnValue = 0; + char singleCharacter; + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::readLine() - No connection"); + } + + if (!waitRead(error)) + { + return string(); + } + + while (size_t i = recv(_socketHandle, &singleCharacter, 1, 0)) + { + if (returnValue >= size || singleCharacter == '\n') + { + break; + } + + if (singleCharacter != '\r') + { + buffer[returnValue++] = singleCharacter; + } + } + buffer[returnValue] = '\0'; + + if (returnValue < 0) + { + handleError(error, "BaseCrossSocket::readLine() error: "); + } + else if (returnValue == 0) + { + _closeSignal = true; //we received a close signal from client + setError(error, terminated, "BaseCrossSocket::readLine() - Connection terminated by client"); + } + else + { + noError(error); + } + return string(buffer); +} + +ssize_t BaseCrossSocket::readLine(char *buffer, int bytes, CrossSocketErrors *error) +{ + ssize_t returnValue = 0; + char singleCharacter; + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::readLine() - No connection"); + return -1; + } + + if (!waitRead(error)) + { + return -1; + } + + while (size_t i = recv(_socketHandle, &singleCharacter, 1, 0)) + { + if (returnValue >= sizeof(buffer) || singleCharacter == '\n') + { + break; + } + + if (singleCharacter != '\r') + { + buffer[returnValue++] = singleCharacter; + } + } + buffer[returnValue] = '\0'; + + if (returnValue < 0) + { + handleError(error, "BaseCrossSocket::readLine() error: "); + } + else if (returnValue == 0) + { + _closeSignal = true; //we received a close signal from client + setError(error, terminated, "BaseCrossSocket::readLine() - Connection terminated by client"); + } + else + { + noError(error); + } + return returnValue; +} + +int BaseCrossSocket::getClientSocket(CrossSocketErrors *error) +{ + if (_socketHandle > 0) + { + noError(error); + return _socketHandle; + } + + setError(error, notConnected, "BaseCrossSocket::getClientSocket() - No descriptor"); + return -1; +} + +bool BaseCrossSocket::getServerHost(sockaddr *host, CrossSocketErrors *error) +{ + if (host == NULL) + { + setError(error, fatal, "BaseCrossSocket::getServerHost() - Got NULL pointer"); + return false; + } + + if (_socketHandle < 0) + { + setError(error, notConnected, "BaseCrossSocket::getServerHost() - No socket"); + return false; + } + + sw_socklen_t temp = sizeof(sockaddr); + if (getsockname(_socketHandle, host, &temp) != 0) + { + handleError(error, "BaseCrossSocket::getServerHost() error: "); + return false; + } + + noError(error); + return true; +} + +void BaseCrossSocket::setTimeout(unsigned int seconds, unsigned int miliSeconds) +{ + _timeoutSeconds = seconds; + _timeoutMicroSeconds = miliSeconds; +} + +bool BaseCrossSocket::getClientHost(sockaddr *client, CrossSocketErrors *error) +{ + if (client == NULL) + { + setError(error, fatal, "BaseCrossSocket::getClientHost() - Got NULL pointer"); + return false; + } + + if (_socketHandle > 0) + { + sw_socklen_t temp = sizeof(sockaddr); + + if (getpeername(_socketHandle, client, &temp) != 0) + { + handleError(error, "BaseCrossSocket::getClientHost() error: "); + return false; + } + } + else + { + setError(error, notConnected, "BaseCrossSocket::getClientHost() - No connection"); + return false; + } + + noError(error); + return true; +} + +void BaseCrossSocket::reset() +{ + _closeSignal = false; +} + +bool BaseCrossSocket::waitIO(ioTypeEnum &type, CrossSocketErrors *error) +{ + if (_blockingMode != blocking) + { + noError(error); + return true; + } + + // Wait with select() even if no timeout is set + + timeval time; + timeval *timeForever = NULL; // Forever waiting + time.tv_sec = _timeoutSeconds; + time.tv_usec = _timeoutMicroSeconds; + + if (_timeoutSeconds > 0 || _timeoutMicroSeconds > 0) + { + timeForever = &time; + } + + fd_set readFileDescriptorSet; + fd_set writeFileDescriptorSet; + fd_set exceptionFileDescriptorSet; + + FD_ZERO (&readFileDescriptorSet); + FD_ZERO (&writeFileDescriptorSet); + FD_ZERO (&exceptionFileDescriptorSet); + FD_SET (_socketHandle, &readFileDescriptorSet); + FD_SET (_socketHandle, &writeFileDescriptorSet); + FD_SET (_socketHandle, &exceptionFileDescriptorSet); + + int returnValue = 0; + + switch (type) + { + case ioread: + returnValue = select(_socketHandle+1, &readFileDescriptorSet, NULL, NULL, timeForever); + break; + case iowrite: + returnValue = select(_socketHandle+1, NULL, &writeFileDescriptorSet, NULL, timeForever); + break; + case ioexception: + returnValue = select(_socketHandle+1, NULL, NULL, &exceptionFileDescriptorSet, timeForever); + break; + case ioreadWrite: + returnValue = select(_socketHandle+1, &readFileDescriptorSet, &writeFileDescriptorSet, NULL, timeForever); + break; + case ioall: + returnValue = select(_socketHandle+1, &readFileDescriptorSet, &writeFileDescriptorSet, &exceptionFileDescriptorSet, timeForever); + break; + } + + if (returnValue == 0) + { + setError(error, timeout, "BaseCrossSocket::waitIO() timeout"); + return false; + } + else if (returnValue < 0) + { + handleError(error, "BaseCrossSocket::waitIO() error: "); + return false; + } + + if (FD_ISSET(_socketHandle, &readFileDescriptorSet)) + { + noError(error); + type = ioread; + return true; + } + + if (FD_ISSET(_socketHandle, &writeFileDescriptorSet)) + { + noError(error); + type = iowrite; + return true; + } + + if (FD_ISSET(_socketHandle, &exceptionFileDescriptorSet)) + { + noError(error); + type = ioexception; + return true; + } + + setError(error, fatal, "BaseCrossSocket::waitIO() failed on select()"); + return false; +} + +bool BaseCrossSocket::waitRead(CrossSocketErrors *error) +{ + ioTypeEnum temp = ioread; + return waitIO(temp, error); +} + +bool BaseCrossSocket::waitWrite(CrossSocketErrors *error) +{ + ioTypeEnum temp = iowrite; + return waitIO(temp, error); +} + +string BaseCrossSocket::getError() +{ + return _error; +} + +void BaseCrossSocket::printError() +{ + if (_error.size() > 0) + { + fprintf(stderr, "CrossSocket error:\n%s!\n", _error.data()); + } +} + +void BaseCrossSocket::handleError(CrossSocketErrors *error, string message) +{ + #ifdef __WIN32__ + // Winsock2 errorList (taken from winsock2.h) + switch (WSAGetLastError()) + { + case 0: message += "No error"; break; + case WSAEINTR: message += "Interrupted system call"; break; + case WSAEBADF: message += "Bad file number"; break; + case WSAEACCES: message += "Permission denied"; break; + case WSAEFAULT: message += "Bad address"; break; + case WSAEINVAL: message += "Invalid argument"; break; + case WSAEMFILE: message += "Too many open sockets"; break; + case WSAEWOULDBLOCK: message += "Operation would block"; break; + case WSAEINPROGRESS: message += "Operation now in progress"; break; + case WSAEALREADY: message += "Operation already in progress"; break; + case WSAENOTSOCK: message += "Socket operation on non-socket"; break; + case WSAEDESTADDRREQ: message += "Destination address required"; break; + case WSAEMSGSIZE: message += "Message too long"; break; + case WSAEPROTOTYPE: message += "Protocol wrong type for socket"; break; + case WSAENOPROTOOPT: message += "Bad protocol option"; break; + case WSAEPROTONOSUPPORT: message += "Protocol not supported"; break; + case WSAESOCKTNOSUPPORT: message += "Socket type not supported"; break; + case WSAEOPNOTSUPP: message += "Operation not supported on socket"; break; + case WSAEPFNOSUPPORT: message += "Protocol family not supported"; break; + case WSAEAFNOSUPPORT: message += "Address family not supported"; break; + case WSAEADDRINUSE: message += "Address already in use"; break; + case WSAEADDRNOTAVAIL: message += "Can't assign requested address"; break; + case WSAENETDOWN: message += "Network is down"; break; + case WSAENETUNREACH: message += "Network is unreachable"; break; + case WSAENETRESET: message += "Net connection reset"; break; + case WSAECONNABORTED: message += "Software caused connection abort"; break; + case WSAECONNRESET: message += "Connection reset by client"; break; + case WSAENOBUFS: message += "No buffer space available"; break; + case WSAEISCONN: message += "Socket is already connected"; break; + case WSAENOTCONN: message += "Socket is not connected"; break; + case WSAESHUTDOWN: message += "Can't send after socket shutdown"; break; + case WSAETOOMANYREFS: message += "Too many references"; break; + case WSAETIMEDOUT: message += "Connection timed out"; break; + case WSAECONNREFUSED: message += "Connection refused"; break; + case WSAELOOP: message += "Too many levels of symbolic links"; break; + case WSAENAMETOOLONG: message += "File name too long"; break; + case WSAEHOSTDOWN: message += "Host is down"; break; + case WSAEHOSTUNREACH: message += "No route to host"; break; + case WSAENOTEMPTY: message += "Directory not empty"; break; + case WSAEPROCLIM: message += "Too many processes"; break; + case WSAEUSERS: message += "Too many users"; break; + case WSAEDQUOT: message += "Disc quota exceeded"; break; + case WSAESTALE: message += "Stale NFS file handle"; break; + case WSAEREMOTE: message += "Too many levels of remote in path"; break; + case WSASYSNOTREADY: message += "Network system is unavailable"; break; + case WSAVERNOTSUPPORTED: message += "Winsock version out of range"; break; + case WSANOTINITIALISED: message += "WSAStartup not yet called"; break; + case WSAEDISCON: message += "Graceful shutdown in progress"; break; + case WSAHOST_NOT_FOUND: message += "Host not found"; break; + case WSANO_DATA: message += "No host data of that type was found"; break; + default: message += "Unknown Winsock error: " + WSAGetLastError(); break; + } + #else + message += strerror(errno); + #endif + + int errorNumber; + + #ifdef __WIN32__ + errorNumber = WSAGetLastError(); + #else + errorNumber = errno; + #endif + + CrossSocketErrorsEnum errorMessage; + + if (errorNumber == EADDRINUSE) + { + errorMessage = portInUse; + } + else if (errorNumber == EAGAIN || errorNumber == EWOULDBLOCK) + { + errorMessage = notReady; + } + else if (errorNumber == EMSGSIZE) + { + errorMessage = messageTooLong; + } + else if (errorNumber == EINPROGRESS || errorNumber == EALREADY) + { + errorMessage = notReady; + } + else if (errorNumber == ECONNREFUSED || errorNumber == ETIMEDOUT) + { + errorMessage = noResponse; + } + else if (errorNumber == ENOTCONN || errorNumber == EBADF || errorNumber == ENOTSOCK) + { + errorMessage = notConnected; + } + else if (errorNumber == EPIPE) + { + errorMessage = terminated; + _closeSignal = true; + } + else if (errorNumber == EINTR) + { + errorMessage = interrupted; + } + else + { + errorMessage = fatal; //default + } + + setError(error, errorMessage, message); +} + +void BaseCrossSocket::noError(CrossSocketErrors *error) +{ + if (error != NULL) + { + *error = ok; + error->_error = ""; + error->failed_class = NULL; + } +} + +void BaseCrossSocket::setError(CrossSocketErrors *error, CrossSocketErrors name, string message) +{ + _error = message; + + if (error != NULL) + { + *error = name; + error->_error = message; + error->failed_class = this; + } + else + { + if (ERRORMODE == 0) + { + printError(); + if (name == terminated) + { + disconnect(); + } + } + else if (ERRORMODE == 1) + { + // Reset the state + reset(); + + close(_socketHandle); + _socketHandle = -1; + + CrossSocketErrors crossSocketError; + crossSocketError = name; + crossSocketError._error = message; + crossSocketError.failed_class = this; + throw crossSocketError; + } + else + { + exit(-1); + } + } +} diff --git a/BaseCrossSocket.h b/BaseCrossSocket.h new file mode 100644 index 0000000..4f2e0b9 --- /dev/null +++ b/BaseCrossSocket.h @@ -0,0 +1,107 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// BaseCrossSocket.h + +#pragma once + +#include "CrossSocketsCore.h" +#include "CrossSocketConfig.h" +#include "CrossSocketErrors.h" + +#include +#include + +class CrossThreadsHandler; +class CrossSocket; + +class BaseCrossSocket +{ +public: + BaseCrossSocket(); + virtual ~BaseCrossSocket(); + + // Blocking : Everything blocks until operation is done + // noWait : First call time blocking only + // nonBlocking : Allow everything simultaneously + enum blockTypeEnum + { + blocking, + noWait, + nonblocking + }; + + // wait for I/O (with timeout) + enum ioTypeEnum + { + ioread, + iowrite, + ioexception, + ioreadWrite, + ioall + }; + + virtual bool listen(int connectionLimit = 5, CrossSocketErrors* = NULL); + virtual BaseCrossSocket* accept(CrossSocketErrors* = NULL); + + virtual bool isConnected(); + virtual bool disconnect(CrossSocketErrors* = NULL); + virtual bool checkPassword(BaseCrossSocket *socket); + + // force to close the socket + virtual bool closeSocketHandle(); + + virtual int write(const std::string message, CrossSocketErrors *error = NULL); + virtual int write(const std::string message, size_t length, CrossSocketErrors *error = NULL); + virtual int writeLine(std::string message, CrossSocketErrors *error = NULL); + virtual int writeLine(std::string message, size_t length, CrossSocketErrors *error = NULL); + virtual ssize_t read(char *buffer, int bytes, CrossSocketErrors *error = NULL); + virtual ssize_t read(char *buffer, CrossSocketErrors *error = NULL); + virtual ssize_t readLine(char *buffer, int bytes, CrossSocketErrors *error = NULL); + virtual std::string readLine(int size, CrossSocketErrors *error = NULL); + virtual void setPassword(const std::string password); + + virtual int getClientSocket(CrossSocketErrors *error); + virtual bool getServerHost(sockaddr *host, CrossSocketErrors *error = NULL); + virtual bool getClientHost(sockaddr *client, CrossSocketErrors *error = NULL); + + // Receive timeout (can only be used in blocking mode) + void setTimeout(unsigned int seconds, unsigned int miliseconds); + + // Error handling + virtual void printError(); + virtual std::string getError(); + +protected: + virtual void getSocket() = 0; + virtual BaseCrossSocket* create(int socketdescriptor, CrossSocketErrors *error) = 0; + virtual void reset(); + + virtual bool waitIO(ioTypeEnum &type, CrossSocketErrors *error); + bool waitRead(CrossSocketErrors *error); + bool waitWrite(CrossSocketErrors *error); + + virtual void handleError(CrossSocketErrors *error, std::string message); + virtual void noError(CrossSocketErrors *error); + virtual void setError(CrossSocketErrors *error, CrossSocketErrors name, std::string message); + + int _socketHandle; + std::string _password; + + BaseCrossSocket *_clientSocket; + + // last error + std::string _error; + + // have we received a shutdown signal? + bool _closeSignal; + + // blocking mode + blockTypeEnum _blockingMode; + + CrossThreadsHandler *_threadHandler; + + // timeout for waitIO() + int _timeoutSeconds; + int _timeoutMicroSeconds; +}; diff --git a/CrossSocket.cpp b/CrossSocket.cpp new file mode 100644 index 0000000..e74f798 --- /dev/null +++ b/CrossSocket.cpp @@ -0,0 +1,252 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocket.cpp + +#include "CrossSocket.h" + +#ifndef __WIN32__ + #include + #include + #include + #include + #include +#else + #define F_SETFL FIONBIO + #define O_NONBLOCK 1 + + extern int close(int fd); + extern int fcntl(int fd, int cmd, long arg); +#endif + +using namespace std; + +CrossSocket::CrossSocket(blockTypeEnum block) +{ + _blockingMode = block; +} + +CrossSocket::~CrossSocket() +{ + +} + +void CrossSocket::getSocket() +{ + if (_socketHandle < 0) + { + _socketHandle = socket(PF_INET, SOCK_STREAM, 0); + + if (_blockingMode == nonblocking) + { + fcntl(_socketHandle, F_SETFL, O_NONBLOCK); + } + + //reset state + reset(); + } +} + +BaseCrossSocket* CrossSocket::create(int socketdescriptor, CrossSocketErrors *error) +{ + CrossSocket* remoteClass; + + remoteClass = new CrossSocket(_blockingMode); + remoteClass->_socketHandle = socketdescriptor; + + noError(error); + return remoteClass; +} + +bool CrossSocket::bind(int port, CrossSocketErrors *error) +{ + return bind(port, "", error); +} + +bool CrossSocket::bind(int port, string host, CrossSocketErrors *error) +{ + hostent *hostEntry; + in_addr networkAddress; + + if (host.size() > 0 ) + { + // Bind to a specific address + + if ((hostEntry = gethostbyname(host.data())) == NULL) + { + setError(error, fatal, "CrossSocket::bind() - Can't get host by name"); + return false; + } + + networkAddress = *((in_addr *)hostEntry->h_addr); + } + else + { + // Bind to any address + networkAddress.s_addr = INADDR_ANY; + } + + getSocket(); + + sockaddr_in serverAddress; + + memset(&serverAddress, 0, sizeof(serverAddress)); + serverAddress.sin_family = AF_INET; + serverAddress.sin_port = htons(port); + serverAddress.sin_addr.s_addr = networkAddress.s_addr; + + if (::bind(_socketHandle, (sockaddr *)&serverAddress, sizeof(serverAddress)) == -1) + { + handleError(error, "CrossSocket::bind() error: "); + return false; + } + + noError(error); + return true; +} + +bool CrossSocket::connect(int port, string hostname, CrossSocketErrors *error) +{ + getSocket(); + + hostent *host; + + if ((host = gethostbyname(hostname.data())) == NULL ) + { + setError(error, fatal, "CrossSocket::connect() - Can't get host by name"); + return false; + } + + sockaddr_in clientAddress; + + memset(&clientAddress, 0, sizeof(clientAddress)); + clientAddress.sin_family = AF_INET; + clientAddress.sin_port = htons(port); + clientAddress.sin_addr = *((in_addr *)host->h_addr); + + if (::connect(_socketHandle, (sockaddr *)&clientAddress, sizeof(clientAddress)) == -1) + { + handleError(error, "CrossSocket::connect() error: "); + return false; + } + + noError(error); + return true; +} + + +string CrossSocket::getClientAddress(CrossSocketErrors *error) +{ + sockaddr_in clientAddress; + + if (!getClientHost((sockaddr *)&clientAddress, error)) + { + return ""; + } + + char *addressPointer; + + if ((addressPointer = inet_ntoa(clientAddress.sin_addr)) == NULL ) + { + setError(error, fatal, "CrossSocket::getClientHostName() - Can't get client address"); + return ""; + } + + noError(error); + return string (addressPointer); +} + +int CrossSocket::getClientPort(CrossSocketErrors *error) +{ + sockaddr_in clientAddress; + + if (!getClientHost((sockaddr *)&clientAddress, error)) + { + return -1; + } + + noError(error); + + return ntohs(clientAddress.sin_port); +} + +string CrossSocket::getClientHostName(CrossSocketErrors *error) +{ + string name = getClientAddress(error); + + if (name.size() < 1) + { + return ""; + } + + hostent *host; + + if ((host = gethostbyname(name.data())) == NULL ) + { + setError(error, fatal, "CrossSocket::getClientHostName() - Can't get client by address"); + return ""; + } + + noError(error); + return string(host->h_name);; +} + +string CrossSocket::getServerAddress(CrossSocketErrors *error) +{ + //We need to get the real address, so we must + //first get this computers host name and then + //translate that into an address! + + string name = getServerHostName(error); + if (name.size() < 1) + { + return ""; + } + + hostent *host; + + if ((host = gethostbyname(name.data())) == NULL ) + { + setError(error, fatal, "CrossSocket::getServerAddress() - Can't get host by name"); + return ""; + } + + char *addressPointer; + + if ((addressPointer = inet_ntoa(*((in_addr *)host->h_addr))) == NULL) + { + setError(error, fatal, "CrossSocket::getServerAddress() - Can't get host address"); + return ""; + } + return string(addressPointer); +} + +int CrossSocket::getServerPort(CrossSocketErrors *error) +{ + sockaddr_in address; + + if (!getServerHost((sockaddr *)&address, error)) + { + return -1; + } + + noError(error); + + return ntohs(address.sin_port); +} + +string CrossSocket::getServerHostName(CrossSocketErrors *error) +{ + char buffer[256]; + + if (gethostname(buffer, 256) != 0) + { + handleError(error, "CrossSocket::gethostname() error: "); + return ""; + } + + string message(buffer); + + noError(error); + return message; +} diff --git a/CrossSocket.h b/CrossSocket.h new file mode 100644 index 0000000..3985af2 --- /dev/null +++ b/CrossSocket.h @@ -0,0 +1,34 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocket.h + +#pragma once + +#include "CrossSocketsCore.h" +#include "BaseCrossSocket.h" +#include + +class CrossSocket : public BaseCrossSocket +{ +public: + CrossSocket(blockTypeEnum block = blocking); + virtual ~CrossSocket(); + + virtual bool bind(int port, CrossSocketErrors *error = NULL); //use port=0 to get any free port + virtual bool bind(int port, std::string host, CrossSocketErrors *error = NULL); //you can also specify the host interface to use + virtual bool connect(int port, std::string hostname, CrossSocketErrors *error = NULL); + + // Tools + // Gets IP address, name or port. + virtual std::string getClientAddress(CrossSocketErrors *error = NULL); + virtual int getClientPort(CrossSocketErrors *error = NULL); + virtual std::string getClientHostName(CrossSocketErrors *error = NULL); + virtual std::string getServerAddress(CrossSocketErrors *error = NULL); + virtual int getServerPort(CrossSocketErrors *error = NULL); + virtual std::string getServerHostName(CrossSocketErrors *error = NULL); + +protected: + virtual void getSocket(); + virtual BaseCrossSocket* create(int socketdescriptor, CrossSocketErrors *error); +}; diff --git a/CrossSocketConfig.h b/CrossSocketConfig.h new file mode 100644 index 0000000..8e42299 --- /dev/null +++ b/CrossSocketConfig.h @@ -0,0 +1,9 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocketConfig.h + +#pragma once + +// Set the errorMode (0: Verbose error 1: Throw error) +#define ERRORMODE 0 diff --git a/CrossSocketErrors.cpp b/CrossSocketErrors.cpp new file mode 100644 index 0000000..270d39d --- /dev/null +++ b/CrossSocketErrors.cpp @@ -0,0 +1,52 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocketErrors.cpp + +#include "BaseCrossSocket.h" + +using namespace std; + +CrossSocketErrors::CrossSocketErrors() +{ + be = ok; + _error = ""; + failed_class = NULL; +} + +CrossSocketErrors::CrossSocketErrors(CrossSocketErrorsEnum e) +{ + be = e; + _error = ""; + failed_class = NULL; +} + +string CrossSocketErrors::getError() +{ + return _error; +} + +BaseCrossSocket* CrossSocketErrors::getFailedClass(void) +{ + return failed_class; +} + +void CrossSocketErrors::setErrorString(string msg) +{ + _error = msg; +} + +void CrossSocketErrors::setFailedClass(BaseCrossSocket *pnt) +{ + failed_class = pnt; +} + +bool CrossSocketErrors::operator==(CrossSocketErrors e) +{ + return be == e.be; +} + +bool CrossSocketErrors::operator!=(CrossSocketErrors e) +{ + return be != e.be; +} diff --git a/CrossSocketErrors.h b/CrossSocketErrors.h new file mode 100644 index 0000000..cf7b4fd --- /dev/null +++ b/CrossSocketErrors.h @@ -0,0 +1,53 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocketErrors.h + +#pragma once + +#include + +enum CrossSocketErrorsEnum +{ + ok, // Operation successful + fatal, // Unspecified error + notReady, // The socket was not ready (blockMode) + portInUse, // The specified port is already in use + notConnected, // The socket is invalid or not connected + messageTooLong, // The messageSize is too big to be send + terminated, // Connection terminated (by client) + noResponse, // Cannot connect to client + timeout, // Read/Write operation timeout occurred (in blockingMode) + interrupted // Operation was blocked by signal +}; + +class BaseCrossSocket; + +class CrossSocketErrors +{ +public: + CrossSocketErrors(); + CrossSocketErrors(CrossSocketErrorsEnum e); + + virtual ~CrossSocketErrors(){;} + + virtual std::string getError(); + virtual BaseCrossSocket* getFailedClass(void); + + virtual bool operator == (CrossSocketErrors e); + virtual bool operator != (CrossSocketErrors e); + + virtual void setErrorString(std::string msg); + virtual void setFailedClass(BaseCrossSocket *pnt); +protected: + friend class BaseCrossSocket; + + // The base error type + CrossSocketErrorsEnum be; + + // Human readable error string + std::string _error; + + // A pointer to the class causing the error + BaseCrossSocket *failed_class; +}; diff --git a/CrossSocketPlatform.h b/CrossSocketPlatform.h new file mode 100644 index 0000000..d19b444 --- /dev/null +++ b/CrossSocketPlatform.h @@ -0,0 +1,62 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocketPlatform.h + +#ifdef __WIN32__ +// Define the errorCodes for the Windows platform (taken from CYGWIN error numbers) + #define EOPNOTSUPP WSAEOPNOTSUPP + #define EINTR WSAEINTR + #define EADDRINUSE WSAEADDRINUSE + #define EINPROGRESS WSAEINPROGRESS + #define EWOULDBLOCK WSAEWOULDBLOCK + #define ENOTSOCK WSAENOTSOCK + #define EMSGSIZE WSAEMSGSIZE + #define ETIMEDOUT WSAETIMEDOUT + #define EALREADY WSAEALREADY + #define EBADF WSAEBADF + #define ECONNREFUSED WSAECONNREFUSED + #define ENOTCONN WSAENOTCONN +#else + #include + #include + #include + #include + #include + #include + + #define SOCKETFAIL -1 +#endif + +#ifndef MSG_NOSIGNAL +#define MSG_NOSIGNAL 0 +#endif + +// Redefine the socklen_t parameter because it is different on Windows +#ifdef __WIN32__ + #define sw_socklen_t int +#else + #define sw_socklen_t socklen_t +#endif + +using namespace std; + +#ifdef __WIN32__ + +int fcntl(int fd, int cmd, long arg) +{ + unsigned long mode = arg; + + return WSAIoctl(fd, cmd, &mode, sizeof(unsigned long), NULL, 0, NULL, NULL, NULL); +} + +int close(int fd) +{ + return closesocket(fd); +} + +void WSA_exit(void) +{ + WSACleanup(); +} +#endif diff --git a/CrossSockets.h b/CrossSockets.h new file mode 100644 index 0000000..c57ae52 --- /dev/null +++ b/CrossSockets.h @@ -0,0 +1,9 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSockets.h + +#pragma once + +#include "BaseCrossSocket.h" +#include "CrossSocket.h" diff --git a/CrossSocketsCore.h b/CrossSocketsCore.h new file mode 100644 index 0000000..40f3f0a --- /dev/null +++ b/CrossSocketsCore.h @@ -0,0 +1,18 @@ +// CrossSockets +// Copyright Jeroen Saey +// Created 27-01-2013 +// CrossSocketsCore.h + +#pragma once + +#ifdef __WIN32__ + #include + + #define F_SETFL FIONBIO + #define O_NONBLOCK 1 +#else + #include + #include + #include + #include +#endif diff --git a/CrossSockets_protocol.pdf b/CrossSockets_protocol.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fdcc2fc2e625d7a4c4560e1baab3bfd0c8e1eaad GIT binary patch literal 227848 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

IAzkLK)NodR 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%0D5dR!eCxyc`MtfyaU?TGU3;T-IWtzXZ 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%0AIseA0EMgI-Uhm1KQ@2!^&3G-lN|H9R; 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%0D^;5TB<2@5BN2$UjlIkYVvtD>IoDP-agP455J z%xfRAX}nt9=+F%=WZcJ|&&;wTmCtE>Pn(h}Q!S_A(q||;6LIN-JYvy5EEZJnTmo7kcU8??i`ya+xTOoV6S}mex2n$M}nEeu;s>BS^7@ zja{5!Cr0{}>KdcS#e!Fy*&=Qgs%h0r=0C5THtcdx);CY-jv&Q)f}|TEoqV=n;GdzR zl=-eJ)RlMnsvqF-mv>TZ`%cT|4uLJd6K)-thAsf;%}V@1anak<&4w)p#}k?>rwE!R zl#+3E$pf{UUi9TY6PSxin6CD;4UF`u$!4yn;l-D-olqt^r!<2!5llv#nWt?U?{g+LUR48H;WV1;zl~ z33pWxwR!#0U%6e60<~RTh7?2QkA+Rj63u2CF8a`eC6X4ms;TF3&=-DE?l;o&8%504 zfx~;~FkP>hJ`MV3q(riOlbOpZHFqh4w@nvcwreVfTKHp6yi}+9QI*ITcKr5cqOr0z z#Lv%kK3z(aek5;crx^%mu^#l&2GVpNDSjueE&RU?e$##i6U6rcMW3;_Zp3e&-L61s zGwji0-e&BTznYc7zL^jvhU5<+K|{BiKu(uFG4YLE#lGHY{$34=ja9SSJSwd9zNCUL zq5RrGiB%>nH)e405Pv`%Blbj5yYt9%+UFkNa%t&#-F_&P;d)ACVfU&(!Iz$3I)!-* ze`L@ueUcL}>6Emtu+@FuJ;7F$VTPRw%4|CG<`~g8HJA2a$#L>1bXzQo&?3gl8RrG^ zQ?s%}0*SnLyY|i6Y95|6`n9pq+YbvdDKe85Yvjzn32UxLb#jgHnYkuoW-LuL<bi_yNg^rNV z11T!&kO`y?IJo*lHI@H5ep@mC}Y^}VFjikdJF{ps1p3wj%^~p%(}mNi|LC(Fv(CUlucfR z@G&`K7~Ho07+7Obv)&g4O^cM!zth2o`s@d3FzQ?6r}d?H^|`OEiP=v4eJ%uCGx;tA z`Ys82ex>rd&hN`l?$9pdI6A;#(bQ*L#i@en`QIZ=qPl7zSK%qGM0>%@#cDQ`>Ysj%nx0$H7PV=TF4|SxR%#7y0rlU2d-xg-)LwTytuqU6qe!6h}O zdrNhHWV#Fv#`|(zvML*8#`ThAk>$Y!&^k4=PKHb!Vk`{$By3dVwG<*QeDNPGUd}h5 zZ0VS_M*v=$=i)3PH?1$ybIQ^<(l&|%bGb5YvNbALdJ~(Ln4SRwCP zKiZReD4%YWELj_jBew*2&X8!OsnFI0(_d*^q&z5L5A^=rRUtxf_TrhDUMJ5+*2U?) z_Sk>Ly7fyjRZl+kia6><=hJB@1A3lND(T-Mh89S8qxOyjsAnM}Y3XZx4==p2!W$6O#y_*!HW#x|HS*n1#Qa zbgxg69V1s5GTUnBcI5zSsV-1a{FGqcX~8fMZ-57Dh&JrYv0|I>v*dk5rDZ-HB#bpU zJT+Yn;ZssVDI08E$APB1GgW>ELWsSb>yjT`E{!v~ZnknJC=kma*87z~r9H^aJ=&Cf z3zq-b*z#1)SkXOuO4QwVzhhD>W?lOe%e;>du;62BIXt@0&(DwvBJA~bvZkKmfTqO5!3x!OTMXI%VPL0UqFw)epf^dI5 z)~qOxu!6xUFZUJ(tsw+kH;nO(b`Hi~f>m%xKxoECz~yx4pt~ojLu-^_{_w)X90BVS zsW^K;fM6MFhvXzH3X!v+Psl{PR=_9({DvRMI6{^x($NQbAv7{&KFu`kq@n-;Ec#aa zI8=l80V27X(WZ7>W%5W0SU9SD3pjOrZYXh~j4YXdYPM;@DrkOc!%Yg0H%$6PqNOy*oCe*%3=QTyf}!wuTuD%1q%2*TWT#ab+a zN9)#EeLq+=l57;Y;&NY_3Ux4CwHbkGZ*;4g6-EbzQmpL;32|*)4LHne?CApuxluUzG;UJOW}`_dmn(GQ#qgk+#2q`UALNd64hrgGOYW^&VNtf< z?gwxw-}I8tR!Q#^O>VKWuKD=p#Pes{KlLU0xwVKZQC`$YUPztyt?`gQhYgQ(OU-V8F`n)OE_F9b5SA_F4N*E#EO z^RWD^cCJ&5Fso%jecMXhmG%p{O`>k)J?Pi!vVJM~G5pXUF;CpaauWA_Ps#)M7}h1S zrL!c!g6&Mo36@wMZMu?tFq5`$T5R~~q6WTX52el2Q6-&>4+jP8`e!Dn%jF*}!6)|o zKB$IQms`eb(8GI9|U)(_<>ixcYBz|Y?OT9XXnw4r9mGx+KJ!q{_9Jp+{CZOq%z ze{&x_0oj6(Mi>E*`eUe$aLvX3%?wMg9T->Qli!w>kI^0|pON1oa>QyNFZUN$VjYx_ z#>cCpl=|WM;%=e?Q4-V>C2!1IhS!Kis$_Ig-_!_TS^}EArAtagX8si65NHm)xB4M{ zxLYnL;5?*vn|;Jh^AlR&IdDIdy5y@t*j$9{U1el>4=8;4xvg#h>ZV?O&AAKMCKl<5 zYg;E5QDcZ2`pCO8(J7<9oNxM_5HIm$E(jFtrH+D>r#O9Qwz-H#!V9+>VS4rk(fN9@ zbah$!DI>p+Y)k9DDZ~CXDeadsA=0(FswLCMXtKyKjo*+0#ph1KF$>2HCd5Ugzocq? z6-2d)aPmk!`E0e5&Pby?<@V$JJz2A_W{Z23cQU9S7nxzlDI|?;6%wBl(4af;?I8}6 zr>Q!=NiBM6@WhPC8S8AITBNz&ZOTY|u#_w2Lbq^S zPB>(OT7xt@;<{A-zD}fM(R&BIpu{}0L`{BPDF<+5|4y196-P?rx8~V6X55txds`^z z!s{t{G>d#}Nj-b71q8n(YWDrBK!4GPtyShcqWcENnM+m7Ni5K|O!n2=RfF=H({a5e z!i^J}ia^K#EaN>p6}@63+OIEb3zgH?Z7whn!hp6h2dNjrx_*`LlD}L73m#`JVj-e_q@Ty$SrNnmU#^Wx4iLMw7%I)fR+@sL+I} zxnY*%i!X>tyB<^8@bYuB>WgYy^^+!FUys7vO`tfJ?8CqKoM)Phikd9r>1__;{)Ka+ zZ|u@0tH}2maOvs5s@O8+>@P0+4#RISIxjuKl_2o-V>(gdMrBl>zW1=NXvWbz0rh!q zT>MgOlJKnOWbJYyqfV0J;z57X8%x@FdIy3rWTs4Ws_?twLQlsYMo65ZlZ@ zVbKQov?|R5F{fGY;nPF$~4TnMe3fVVEzk;xVZk{3FY$d~w z4d}r?3k3X?|Y51k@@oiloU@>^ew)!uW~=jzdY*b|2I*X2&vIEq*o1GGEK z<+XwMnWgU~|A^8NPetM1l}BGTd~~Z*rry~O>I0)Ms-k8aqKJB@6VklA)IKz`R@*6> zN+`a%DZUt$eAa5vT*bTFA{Ws(9=~%BToBucVA=1}lFu-tdvot>3XIGuWc=JOKWZH< ztLPl+qHBcO-G%Z~44p;<`jeaKt7@!iL;{6;iR%Lv-7EnqK^J0!sO=G~tC}FQKH0sJ zUpJgzyM7M4!tfG*P=aI1l0?442+cT?JHrJz!WR7`hoe1mMhjL(P-U!B6;0~;*Kdn@ z@kdP*ayYoGOiVgSq*_%lc%?)PIn-7&0PtxpBWWe`s`3XFJquk4d2`ZETq%GA(B>5usAxO`jkdzL3odn ztu;_mB%E=DtEGM9-5j=%PfItiZ)v+pB21UW1BzQ6*3mHSKvB^Un&=uB$DuJ#xS*}X zBWULIctYipA;?_dCdfoBqggP#=UNu_(YcC|#;>k@9l4SWYx-_6P6d$Z_941Js5<3h;6IdVv1x>F>zp)HC~6Vw zY*UA}GK>?_LQ|aC_6)aLyF4wjvuJW>8{TSKjZIJbaUxaaR!5F2W0trM`RpC6c{Mp% ziu2@MmS5iyKy=_4V!!S#n7uU0LO)1W`QtY?D2|Iyj-6E>@ zetjy`HEQyeSy<(I7dn8?t6_p;`ZLA|gY$i^$(%ahh`Ki-W{w`E>RYk90D|Ev)zES{ zM-YZ!aX?c0fQMs4THIZFE#r*D%z;-$k;89221y$-HSL^+ki=BH{V}fR&jkd)CgX!f zHZb0eLt*(nP-evf7y8pvI{Mj)~*I{^H)+J)8d3O-Ez_6!>McJq~_KuJC`?L!c zkb5bHxmJE**_wJhf3tK8n5dT!d)sM>#=9Zwam}%KjG^Mlj=E}&iXb8H)Atj|#Nb_& z4{0gE0A!llZ5lgG+pt``HrJTSa!+bZBFT&87-Eh%)Qq4Vwqze!rwB)Z$o1V{@2 zsJmk%NG-Z2$s~GWOk0-W0A`d!t?BHV4!%2Xo<#h^99^2`*`uXOaRk`USZ0}dDyey^+Z1Spu~ zW)ywUPQ|!NJ;0uf^kmvVlh4v7*4Ru5XJ6jhtxM;6^=xxx+z1E6o?;ge-E4%Nc8aZZ zwwZib7;PDog_sZ~olf=q9_!IK*&xObhP!$Rh>-LIJ5@A0JhOFP`AAcniK?UTbx)|j zCs>>Ee}Z?h8`NT?$zG8U0Z721KT~iXk*8)B_RD*fodg$ zS*=g*cX3H^U$N#qmTYZ!9$^n*KGJE`n>F#wGEQ9)bWpUj|naqL~4rf z0-h2{{ilta2dQQ(dPWfrke_Q6`w0X8vYyEL6@q`#YQCw@J3?N%{{wleR_&UTU@IX^ zRo*&_vEHa1JOt)KddO`CuTQH zto+K`o#ThXkFZ-C8SmwTx>FVTH4l5-gfa7&&GXN*p#Ye8-a5ThqG$kxUyJwL8Z0?FOdHT8MO zk!#^PySY4eU_VdL46Zp_HI{sg{OhvIiE0%q`NM2Y+sABe-^E-%@d6@szk;;>(?>4N zAeV=o)G7A`c?x2=DAO(U2gFz@`g^fj-!9K{s+Y`LvSv3Vso}zYXf4t&vPp#Lp#r=W!nTz+2}=Hk4|U~KHbyxr{98DqZqzc$XD~4o z(dL>c`tfEO2|+FsoXikr_#2&s9;2ubowF}15{5XH5~gEO!ub}E;yNUkRMnwzru%9n zpp13Mfk&;9!~ktYK|&vh{*6+Pg35VfO1x8-lWGygV%26hD|$_)-7?yR@4H=e`Ao2j zQ(ja$WbPZFhfy~~u8Lm4F5EN#^@nP;rG zkm0YZ&~Ic567jgJ^lU7YjMUg2BtHcx-|vf6*RZG_%-*7dv(~@1ruJM7zDy0~RRhv6 zWnoTcsTxa~?_J=Sf#6?%LmNs#&|^P_;!~BFNQQk5?7eu9xQ3GaISlK&g!?lO>n&&^gD#dutWGjas=d3PRF3 z22~1~_a+x);{KAKVQ+!n1>Ev!Dx;Op!gSWc5?*eh-1yNo&^>t3Hn5*u=&OX>qCFx# za-UIBi1!zC7htUg8xq%LJEc#G0j2IL0fp{L4vi>0Rl6#ECGL$IyUfQ9mDfuRRjXBY zOX?RIOEycG7i#IRu&r51Ih7ez8I@R7aZ7MZP#0boTo)Otk>2b}yfEJ3-rP&wWDn?% z$kO$gR<0pj7SgE1JsVC1z{t z*3ef>6(r@DO6bb>s<0(LTJLYoyE31l*$UetpP4xRqG`$=D!|G=OL|4-<8w$=TuZjq zp`9t6A#dNN|hqgrp^;L5}miK~=UCN2H=m4_>jP_j^2w1j+NZq3LR zi7Sav_@?q%*}EjC`YTQNvB+Dcr!s%Zql!?~qZ)6SZK;%IDeOXaThgsKxhh^2HBHjZ z(X>NY4%Kn_3(onHwKs}6=H_0ob{)a6$!$a9a~`yz0I~67)+8R(#8PcTye3g zo~#^q@$i~=<7Bm>Dz8#Zq{UJ>Ql%KO;vK)>Fj`u*CsAEAmd2C7XWvQPyD{*bVb}Cz zoF&DpT+tpr*<_rlG!tKLB*n>;7Dq&U@&lDIIyUw73BfOQN&qKzZ)BfbFgmgTo=ilF zgqm1HlK&2cAz^PH1_y zBk{?h$NcZ1U-Ldz0yOVzKpd!jj)(mBEU!@?l5dg>uR*>Fy=1$|4r8lFH1|Ifp2HsE zAPQ1?79#LueZ~3HdZqTz7RdY-`w7o^FnneCNr|L)T^n`Yg!jJR^Lr(z^vUe(n>x7s z);prRr=au+DcF>9Ph1_hIa0fa6?kT@@Q>;qO9=?#ojv5E^ivsd_utbZJj2OHmFaHTq;h)PZ&VDO+8AYzgYa8vFEW!0ic4U-Hj+6vlh6TEb zhA#Dh?I_ry>}l@rSO`_rYomZQ<1KXHO)!`EM;mpFxmc1fSvlVts{vXBM>=3TF}zKi|Op;-89V z=PJ(7YHw`L)E;2Hae6}aMHvcD=Ups$yfNKMC>swFN=E0PS_tdfGz|ELY;uV+l7OXn z0kBcxzY{Z#b)6Bl1ZOBLl32!l7X&ZHd6_eolC+gYs>g9m5t*bgvIK*>mqwFKB$>Ff zV<`{EG?~L=Pc~vn$)qU8iE)*p_8dx$Ys0KuvHil}-Vwd=u7w?nIOg#zDK~=jN5gg^ z)2&OsYuF6*tC3=NFmIXbC)u*-48j2KP5(~)13i$!&`~m>(@K$}b)kKyhilK2Nv1Ow zkEsxw?q%&>>n8uRHl;<2j}<}JJh5SO-OQSxW=7YTU8lA}Z;RbAvtel0-g5K6PBxpZ zifY}gu3ZiNt~QL?+2a+Ob_mNBVPejU!@^=rIkc4Q$250v&5QGze=2S5~q`~du*#&k}7Ap zB{`<8%Bsptf}<(|qv)YJBCe$a3~SFDKzc!gYH~{)ylJKnQ1~WPOePDv@mJeWSacc8IAMvV>4MojDRhs zYqUr)I0K1XdOXyDAfZ&!4_1s;j7JQ!qp4?(*JX-;gudAZHiS#O@-{>aZzCHcpQ7?Z zsbdwP!or@ylEP+U6+l1{SN8qJ{St*oj!xbg`xehO-wph5&q&?HwRgl$m5tdySXE8M zW30TMYiC=hdq)eiMhMNtf@{X7{v@03z@cy_%O0z_tfO^>tfRbpI#;WE1!L~Op-8yP z(%PJS|j0cvmFZ+4xeZwAHeq-%DrG@9UM7atNB~%2OMi7xX0RORg|(+G-PMRh7r@ zWs?~+DxXQIeZRR|M-0%UTKB_@`Xmp-4gmMmDmKxVhw8jLy7&wuXw?ZOGR^ z%eDZkcp7YF-_Qs?QhSp}q-Y%k%#(gZ+xTaPw%z4tB(4SgfQ!S(-J@C0NYL>BsE$RcCUnYHt#;u}XMIdW?pEX+B>ZJNey>*j5D-h{~?GI!4r=h%w|vSC>t zruQLH8vgIt0p?S~l_^Ph;`KOfOs2+T{e}5K1aBJWX!Bj735oei{D|{>k{SYee6Fyb zn?e$J*V8R*^Ba;f-{~G%SLan_Oc3IhSyks1$75hGCaY*l>QgIzE@7&uh{};HL#mzv z$rDEZ@J{R-u_OJioGASjB3=5Nv?XGUkwEZ1#EOgtO|@#W^ZdP^Q| z0cnpynC{dU*#*gYVpuS|3}3s*sIc!0ekzhIUb2(;X2_R^ zLWgN5IN+ZK=C8}p%YWMP|6%RzJTtYL4YUF^&{x? z9&~sM+6RC(FG1@Upv6yxA{!)@1ro^w31xtIQa}uG zAetBubu{Q_1c)pgL=pxf3I!2_fbfDrSb-pn01%oV2+0Qo?E!*x2Yq(~fw_RdoIk*v z-oPARz#N{y>>t4F?!jzt!EA28tgpbVFTkwMz${O|ERMj;55Ua!z)W|*Ot!#`H^7Y6 zz>HSF441$R7Qpo9!1QLobf>_y$H25kz%+-zH2T5Rd%=|3z!Vz6X+(awLk)Z$kEbPB{Q?EeKhBxYjcWMq&hW@Y<7+B*efYZX_! z|2`1Qoh3~zhfQ(hFB;%lA>*ItZxB$lL~@E8RJ3JMCNDxwFglgAILrv-pk5ZAIdrj{ zc&$RZ$l+v`=H}g**2z{>Y)wdE+(z6`B}0TC38HYxJdKE@3x<4>H2qA8`5}i?KL=n+ zeH>pX*f=3)NEJdXFmt~(BpMAIYMutN#4{86Oe=x=960UiO5TF|To1@x@mVVdnx-zU z;ia@U#&V@eNaXOu*+ll;H?}AU!71bshKj1S|J^H>62TabUGpvm^!vTGwHmiX9KVkJc z>D_jd)|BbW$LuQuWiwPC`(TF?BxWNyqMVDcUo@-7S4?LTi<5djO8e19$ibU2=jS~I zccN^EL$_5JYh;VuoaU^kP>`47%gfJ~jbC8MzhlfjGkQd}IU|wkNkI_i`HNs(tdD7{ zUJ1!kfjny*y|4TQ!Y}3Vqn#tB;p19r#!g)eF(Q?fLN6XNj_EDEEGb=N~T1`D$=vD=q5x{FL#6qVIOcOJv^ zriC?urFLmBzg|7|96P1juS`-X=PgK@ZCjDjfGHF%=a{ z>Rk~dj5JI^bcu8d3vjl@J%Rh#*~DcE+b|N`k5wm%82zK_yK$raTT^SWF_TDSVCRmZ zNH{iL*7(;t-e0U4*USIa-gk#Zm2>|~uL>v#NE@mkWo9S?LvK>0BfSkUz|aPVHZ&2D zj)0&bNUtIwNVU*=2kBjqrc$LBf#2w^uDh?h-~Bz$`{&DjCgkRxoaB6xoa83CIm4PC z_q?-(BjG{A<8-atcaNPdE({Y%d7LRZ^Z^99t*bOi*BEcFu2b0dkZ0Z$rAh7UTe5Jw z)0P1jAv=NibcBVvlgaOxzjkN2XtYls_WCNIfcDE1wf;q%b!fPUlsHt|^>O~?Xh&HE zGdrb0gP>CJ-Jz|=8S%R@QB$O+>plfdCTlj4=P}F3I8lNcv&_>OselN#*dA2R%boQ{ z;pOsuFX`xssCS!@`|^37_G=Z|8hahpQ+NH0=CNlg{Wje+_;>OiI&ld_Sj94x(w{yo z<88vjF3LPiXNDQ|B+bd--M`^`g&}DBX<; zNbcSsWk10?H{$cy=_{ZY1 zB}viv$^=UG4UcEBA7+%cm!H>Xuhn4>ngnE$kbiP|Nst?1ObR_R)ix0S&@+JK91u!) znOTQNbMC2JWcaUoqo3@R{cUf=FZ{zot1#$mXCxr-cb!q>O*P~si1dV8{5f^o#a(zh zXTSRj#9}NwC&bT!pifKGDvWBZ_x0(qR@5cc{EIsmgDxI29x8Q2(zXY@z|KC``mvbP z4qneb&>297WKDlqPE4*OX%hQpUmtM4N{AC-CzP)B*67X%J-u|CU9-61M zNYQHpf~+Y@s^mD|N6Vb@58Zftz(@U7 z@lHcE>d8ksfLo`JuE^ng z(4_S{;qkf8aPDLRZ*p+HAb%` zgzh)!lk?10_d}jKjjiY1hjFgFD6%OsZJ&S~ZaV>?w&irHX2khAIfxeqpD%Pk7m|I@ zKxN{E>a6)(8%iJUSe*){ z@KwQ*8mg8^?c=9|G=a1Yh>KuW(Vkilb(`i1s2H!d7&UcuRd2_W2Zd$#sg;UcEvd(h zZ41sPJN7D@l2^RdagoX23$t06xcZ7*yQPD#x!Z;Y#ibWl6OlO#ptkC;DT&Czwz(Cy zqFeTwZDyvkf%FA4O0a2375XZB=AdJoG~X|rcJGn(Jr3Sro%S5e(b;39tYP8I1U@XR z+}A6a9j|c(Pqf8k)yOF5shHd%g;sFLsqbB$L~~6VI~L|RsyW7~j?Y*k+goNVi}{W< z9q!UXxc1({bL|vRhC?Q6WnK0|dW^2S7vel$UFcLW@7;B`Oo({f%J!Um^olz~wus1v z<`Px;(~7c=Ok5%9&gabrSP|SEwXx%GVq46FLu1u0bmzWuOzU!N$F~krq0c>fx@4pg-2J{_ctLgeS=qDRO?PaQn@i(@y~Ca}xK8m8)?1c3 zwA*5iif*FJx+i(uNh|tb`Bu%ZNz0=sdfZKRmsL+_D!}dfWHf2=HvuN>O1oJvJHwmx z$VP>(YcCf<@bR9VpejBk54VEe8rQuZxG_KOw>SR&NhME>Pbs>3DspA5tVg7h{b=x6 z$UNC3vX#jxkuTN6G|J!1tZLC%Oyc;nw~6?)vooJj-&KA6$+EI=U&fqKLYZ_D=3bIdmB9Gxx|%v*D+oHVT#$3xdTB7K%4 z#ovf=&AwmQX8(Dm){&uUf4Ugiu@dfd)x&4`U1(pDn&9){Bm}h82iD=8UOq6MMF#xv zNPP>TL=%hSrDBtLlYe;5k&=&_imh=~Jk@%G<`i}iGRLIu`X-Zu&*GZLFKvo4JI8C{v$3S0WQK z%=O_#Zd5)l--v4uolcn7#Z5vqu6R-%9lGE1UN4K=<%}}IlBP#^mzgEpKIHW`@>|f5~pywW%h?19iBiLGn+*z3NJN$bB@Rh z$+$vEX4QyYX0HaM;oiP@pbV<*o|ntRmc;cXJRsj>o|UT)=@!M~YdRx6bA3Gdf-fdb zr1!JMZ3U?X289{eK^R3J?dRmbI9^e#^>X62&8`aKwuJ(%qE=rW)(`i|_X%%BZ%w6Y zsn1hc+(FDjedJ>oF)`hEtD*FLpq$0twpD$uXdqGmUa6GMcN z?^2FE3=n`dOqcA?_Gqcz!wjMANDyE7cp@x^_nn7zzMj2py#1nwUA`V7FFts6@>Nda zkUC$_f`8YGaw6Vx1f9Y@5g>SvlCf@ZKXe zv3gitQ0ETP7ISj@nyx@cL5f3e$Ao2lo|MaXz}GZb4tqeI_#{= z6@PEGuWwoH;Dxe0INegZH`a% z=~z;wSS)3JfHEFi{v9@|m~8A=UFle2C2cI_Yrh3%GnC|$D)C`;umfJyBviX8nMRvVuSogsm$wy@ES#IE+_`#;y6utfvnyO^Rk;gmmXI06qO*DQf!N%%j z4mXZO&kN)&mN?`92hpksk;u0Rh-5C_kee#|-g~~DVFyS?XJaPhi9H*YS@{7o9G(5M?xXfVX4K|;@Mu$+V=MJ@LFGuXuv8>sa1Ov zvsf_3b39Ach1~u$Mwn~9%%B~27RFbemewacQ8)0UQ0HBFRZ7+Nnxs?J@?&2MLyy<5 z6HCjp$lSamJx-;MnP?cYM`grV@2UH&mglMatd}RKiyfMUForbOTo_nMmx$+b!<>DZ z%@{Y76}!H?)v&ndd3Lb8IlTFCbFHdrey+zw$Z_q=wCp*7urIVQcz4sAW^MF!VK9k< zfiZy(T4?IA7Ytdbc^Fn>RpW0C_kK8*cvN${LwO4kk}!CoIFCUx+2a5`F*k?^>8sn> z9Bpd7b_(HHOL==VBb9>EhAcd_V9z_Rhno2DZ;mFY8ptYY6R4PSo^cm~-oUZTlW?1` z%9C)PaLuc6o9NgV-Qi?gcmHrpN#bID8_TX;HeJHf~z7;gx5$x5j=!U;G*Lk+3AS>Ojl#`P?uEC!D1jT{~Cg}V)zJ&>fqx=oV2 z`PTfHX*_8FQI#7)MWHU%fgWNTL|jdbPO^r6WLtcC4&XMSyr;KNhf8xV3zA;8bfW7cyONI!ekwzkE)Gl&dZB_wQP|u)bz-D6F;& z7tPbsLb?YH^x;OLIIR@Q7*OD7kTkpgB?*NB<&rCrD4Q6g&zli+L{Xh?i=a zzc|a>+To&f4R-Gxm%&%$^dFayUf~ zMN2)367vfW4_GX0exRyt04_0!!HdMXpl%hoL(+T&51NE`UkIO8(qYL zi52*+x*NuHD>u-9SxHhQ*Lq7}!c|Fjy^{% zwyBS)f!$Np5aY5Yw7G3nYm!bGM0jbUaPxfo1W(3GtaHM}-3+;^g$DbLv?J$EDx87y zlWB(gNOH>^Jo58*Zf{D|lbu_tNmbn8&m?0#5>Wu%r)lqZP&oflb$B~H)da5{bmtm? z6vr2@8FmL>%U=>7%StO7beSWZEa^kpuFys25P2UXD}NLK~bQf%(E^13R1n27lB1VuRbjsT?S^n zdFI2@;AEPkZ=hzeHS;Cved5i-t1U7J@r^UZnI#(}(|kgxN>_BGXI$*gkoa+bj=i`u-qF+I{9Q!k39ZuaVTahs9-&B~tzb~YcvF9YA0zfQZ%RO$J~xz>QS>}a%oW;Av7YVF9GDx>C>oC+-|?Boqx(@Uyrk>siy z#pcO&l~k&I@jiv?>6`~1m-w4%+opF8ykF`W<<6%^3f|!#IM=C!gEmi7*zuA#SJ+u- zJ$L&HCF3?#GF|NK_Ju7e4%#H8R)lgcN354oY)()%2C^@O^Rc;6s<~?~v-9U;5n_CZ zPcN+pgbCj1DoHX?f6Q&P^wiCMmES-1?ZyhqH=q{O-gYx|N;lNkB&c02h!b-&pc{%Z z3F1@>`hb7s9?l0Q%tF&_O#{oX^x;o7KmWBp6cPAC9}52;`f$OZ%h_0%d@;{u+|jW& zuoyt7xf6hII%HR>O5C)m^K>5f#lWfGq(HTsL;HjF>k)4_t;2V^=jOVZ6$f(Uw;EKf zfd>)qb>#DEFT1^sBR^Vz+U$(G-rQ;7p3MF$$MRu(G}231JV+C)sli5s z1JcI7u9AKsxPvAX7JgMNI6u|$90!3$#|Qy6`(yU9Jd=P93qDI4(5N-$XHSEx>PRE6 z+5u`2&~MW1Ypj1bYxv+1Wn;bewN)q>bR85Ltkw65hQk}P<_;RQqZ!Pg!N;7_i+@Jm z97k+OD9}7&b+<056jIRG(*l~szJendC(pxv9$lcR(_)j6kFeuPymIA+O9#zZlyzB& zavBKKlaY~RPgEu-AE)8V+H(=y&T(H2$Z;=#7puL1l1KPX$4HZ?isM{TOJhqeXMWIK zzpL~1WsY-@E~Nrkch8<)55okrOcN<*fd}!!@q(cA$i#4+JWV|+FK!&_VV>FW79Kn0 z?z==>Pw=|OMR2=$8Ax(s4Et3CNgg|ZNFEm?;dNIeu^-ahkSnKg3B9qRL@v#2&gS$M zb|)@VMUtOQ%Ye0@g_~wJJ^xuW_Vot=(OSGXAVqra7H@Ecp@sT=^6rk2aEsotOln}1 z|BjpQU8~-wHEGcr&x;Nmca9Dg7Q2>~B~F>1;#f1?5tAmvsjZ#9z1xnr;!CJAH*p1BZ(R5Mrz&bSSmG~zBJT?^f}T2`Yfhda;@_0 zsO@a+i0*GbE78+Wei^xst?Gs~bIu`ncvYWwU)9C2!F@^nc&z;8osIIMTTx?>9`Eq+ zdrIrmNX^x!<4jz#FolbmXOB3v1G1LEMUn%SN$ET>`D$Oiy*7HIjkS&ENTxwKGA1z+y~-Ut|a6n z%s6aVZRl*cZm4do45)taTaN3!nxY|^<|gU=IKiXfWy^kys)>a_{#Z>cY=zQ;D9)O= zdO_BUxSFk75YJ3^?$wveAJKdb@H%UZqXXw_sNHrY+H*=(0qqM2KC&?L0I9P-PGE@C zAzFeH49ee?Tm;)J$3@uGW+OJ)Wp4$uF`i!ZdY=$rPIhz_G|3=)NpM|QA{yzLsanE4 z!)=6mHN8RTXbhUFVlvCC54q|Iom_uoFD&J$vFvj4Rfg#4ie1qGr1JSwai#2 z3~KL{Bw}o)F~x&q(_28O$3Dn=m~G^&d^b5)2%(T#nLWHEk`KdC4Ov8dYT5GsWa-7a z8zAmNlbfY;B{wTU@P=Y>SSiK~LT7Ha+${(fLu^O6n;plcKs@=}T(XyzC@tuu=IGjb!sM-RG>U-ja#cG=L#`^mg^kMPRBB=JYB5Z0c>v7$&BJ4|2`Uu|mOZfU*>}$xKuAU;=)25})ue5#5%Gk*uCKq{N|9y?7qZh|{u#@JK zxEM@UuWTg@*OlBZJ)$1bn35toj5xmfm8kJ3?D*<8B22Wa%>Je)BrAFAY4>(@_M_!a zKb_ucH=mZeu#)$c_t42ahNuk_ExPF_|F{iy^7>e~@#OgElzRQ$=zg8c+4|{leOhr} zaoxe%{^IiDmC-kg1@MR!>N-f*TU2eep?bV3(?)z%==c;ZKN;Ak#srp|o|0Z8OJ{e_ zf#-Y?&|RzAqk4iNqd0Wudi<#LtNPd6=_c4~R~5yv;{>{sMba2-%zbvSvm$rt7W@s= z-x|;0i}S?~0@dJ~T>ER|ACJ4@&Q$E>#1zEj149@ly?NVMgk!Io-upZS^wxUDSKU(W@-cEe)# znxUEiipmptXA7(6ne`a;ZMW!Z=LBK;&RhD*@1(mUsJpPpJ)*o9vpiLeQg5uRHb{4l zv$?>9ixc)~u0)qX4-=*pPt!d83D(4<8Wc~xBfmVMeJcSfRbdcKn;d&+JPyd8Vb7mt z4%?SnJ^_Xb&5g$i9r)fJTay~vV=_A?%TK7aCp%vKX#eQU6{chGZs`azTJ@^7W7U1n zZ_jEC+Lvl$ZX>?2KfTge8&ce>FBHwRaodltnrm-AB}%QbF3sq{`C5TTBbXEay4J`h zH^`*cXUvggy=2kqm~U82kW6VCQ8TOT`^vBz#8%n{{s~{Qtc`_&cDV{QU@OI8F2l|1 zI%a7eMRi!1W%n2ENx5;i`h=e+jbRQOj{AJ%CuYQc$vBTrly>F5b9;0A$KV^Ss4P1E z7x352aW8P4zcAOI)4Y?=^{cMoC-b!bzH1QtK0t;-|Bt1pd+~4W*@a1i&092LSUX}J zn@USEc5;Il2WEn5loCoF=AM6OYWJ?T&L&x4`a;$#Lex^+?XFTsCILR(?(D~nLybeQ z3Kypmy)lLn60$(2>ug`VDGrkEvoK_+=kPb7@`<4d+J5yT+5|f$5yU%F;j&%n`3&As zNK%QAXj!1;m7Ob8S3d~xnIR6BE*D>A$ogd&K zoo1%dB_yNNw!9f?O{=MJ_>%Y`!9#9hhl5Tk0lI6=MoqMx95@akD0z8`F`-)NR}}Hl zQqE%pZK7Z(vApIwWA6)9`d&@O3GkgQySd2wEG~-ivQ)jHl#R6_B>3&4uP(!6a$c}D zeju@JI#=Q9u_`8*oP`zhOh8n+#4qYlzJx>3G>7;hUMCg9LjPUhLoFe#?)eW4T0#6@ zb(lMY(SFGu5C($;M%}dxR z5g(}#AEkC{fmgza=&W6OoF0qc653Am=3X;piYjMO76Ui4;8H<3KrRlb6(vJx-vn5a zEh^9yAtSX62)@K@*MXU}mJ)A8Jr(C!wyChH5D_k60_vChCpU$3^(B}y&eWx8xqGja zLyDLbsp57A-JwI5ZhHpCHYCZY0jlU0BvxtZi6}c+svHqyLV@uz8i482;TO@_q$qs$ z0Jko^V@7X$V|*X{D#uAi6?_N$U7Am0rMq8awe^RVw(}ZK%Jrnf`!9`EIl40`(=L#z zU?0ajP0RIJbXiCRb4(^52ePF$c#u|1FVUZEWVE5V-Umm9SXPwIJhplRRy^Bl{Zbw;m#vRZX6`RnTGaE-cJap1uIezCvQ>uIfO&4X!I{Rh;}+ixz{ zxo)0qMkl24NlBh;AMJK69&PP>Jd9qJsxw(PH9OzcejIC`ZaZ_K zcj_gQPKDn<;3?6LN8s`H2Z=z|fcqH1Cr@DR-z2v)t}Oi>uS$5A&j(sZ+Ev=A(rI%Q z4%$N6AzX-9^~yPkz%`ly|K|lO%kNJ|s^6XM9j=)74Ms#)KOdCorT>%|mT(ck`vN}#!sC<61`Wa+ zkAW{DDU1||sMy^eg0xr;H42NHR(D(Rxpk?cKDbR#=H&th8mQg) zO>{N58_XK!2K!?hrnnT^1!m;{cLP|$Z4u5AEE{j?SO5rX2^M`JHISN%9NZ3}PXeSpZ3^xGU$WP-UO^4!07qe__4&X68zc&#k3?DjCe_dMzq1ktent5w)V~$!SHS)f{x3>HP3@n{ z!^!DCibPFKR32&N?gV#sQcSl%@LLm?cNB~nsAi{zmUO~7OgxAti#FAIY5)8Ky z;pZ2C+K7A;=g)Ef3=QU)va_oj%-IV5ov#R3KoA6hL3m-pPzbLeObEkQ7|hQL7qNs` z!UTmOLc);me1D4jAADWiE$!h}Zr^eGtx|qNO9y`I&!OL8bVNuBfWW^&jq(4%@+-l& z0{C;(@7efEQvbEGvbOqBP%iE$$8YV^+6oAFgnumvS4`sp|GA{Btwb?3$qD8r33G9A zL|DPTwojmowT(FNk4JxqC5{QS`r1yAsJ{sNwNm|A)}QdhK%?XC0!QgM!CdYBf6)5R z))XCgXVv5{ea@%c>V|1zd`8-%|F3K{Kq>mW_ObW zizns{_g633KYd~Px0~wu|M>ioUl23p@VDQa@C#Jvf;2$_0-7K&j&?9{utF{|1aj1S znB&DR9aZaTqjF17X-1lvu<)Ex+ourS%h{g@*mCnOPmVX-e9}nyz)L8J$F{&glJjx2qwiYnY!t0vHaihz_*8fGUIdG1f5v)9 zFk4fs)@7XA+MRjrd5#x=1W%D&)biHVN`B6c(|{d4pjaIvb`9)IoT|F*mG-Tdy3s&(J3 z-hN}YCE+lu)7N?1I1lMgpPfx{GP=m(r8q`PCFjRYV|$YXg;ThyQngG$R2l`J((#5O za+g1|g=DT|WVdbbiyL0QW!CK*exsg>!!67I3w0Ix#i-zEqnYU#ePpG+!X$Ur+M~Az t2|iSkx#~22M4)q4E+DsGR0hmjJ<1J@g4>)Y27@8ziP_n&Ybcy2{(pVwglhl* literal 0 HcmV?d00001 diff --git a/CrossThreads.cpp b/CrossThreads.cpp new file mode 100644 index 0000000..93edd3c --- /dev/null +++ b/CrossThreads.cpp @@ -0,0 +1,109 @@ +// CrossThreads +// Copyright Jeroen Saey +// Created 29-01-2013 +// CrossThread.cpp + +#include "CrossThreads.h" +#include "errno.h" +#include + +CrossThreads::CrossThreads(threadCallBack callBack, long timeout) : _callBack(callBack), _threadID(0) +#ifdef __WIN32__ +, _timeout(timeout) , _thread(NULL) +#endif +{ +} + +CrossThreads::~CrossThreads() +{ + stop(); +} + +void CrossThreads::stop() +{ + #ifdef __WIN32__ + //waiting for the thread to terminate + if (_thread) + { + if (WAIT_TIMEOUT == ::WaitForSingleObject (_thread, _timeout)) + ::TerminateThread (_thread, 1); + + ::CloseHandle (_thread); + } + #endif +} + +int CrossThreads::create() +{ + +#ifdef __WIN32__ + _thread = ::CreateThread (NULL, 0, + (unsigned long (__stdcall *)(void *))_callBack, + NULL, 0, &_thread); + if (NULL == _thread) + { + break; + } +#endif + + pthread_attr_t attribute; + + // Initialize and set thread and set the attribute + pthread_attr_init(&attribute); + pthread_attr_setdetachstate(&attribute, PTHREAD_CREATE_DETACHED); + + int result; + do + { + result = pthread_create(&_threadID, &attribute, _callBack, (void *)this); + } while (false); + + if (result != 0) + { + std::cout << "CrossThread: Failed to create the thread\n"; + if (result == EAGAIN) + { + std::cout << "The system lacked the necessary resource to create another thread"; + } + else if (result == EINVAL) + { + std::cout << "CrossThread: The value given in the arguments is invalid!"; + } + else + { + std::cout << "CrossThread: The caller does not have the appropriate rights"; + } + } + + // Free the attributes of the thread + pthread_attr_destroy(&attribute); + return result; +} + +void CrossThreads::join() +{ + if (0 != pthread_join(_threadID, NULL)) + { + fprintf(stderr, "pthread_join error\n"); + } +} + +int CrossThreads::remove() +{ + return pthread_detach(_threadID); +} + +unsigned long CrossThreads::getThreadID() +{ + return printf("%lu\n", (unsigned long) _threadID); +} + +void CrossThreads::setThreadCallback(threadCallBack callBack) +{ + _callBack = callBack; +} + +bool CrossThreads::isCreated() +{ + return _threadID ? true : false; +} diff --git a/CrossThreads.h b/CrossThreads.h new file mode 100644 index 0000000..bc87284 --- /dev/null +++ b/CrossThreads.h @@ -0,0 +1,47 @@ +// CrossThreads +// Copyright Jeroen Saey +// Created 29-01-2013 +// CrossThreads.h + +#pragma once + +#ifndef __WIN32__ + +#include "pthread.h" + +typedef pthread_t threadID; +typedef void* (*threadCallBack)(void* parameter); + +#else + +#include +typedef unsigned long (*threadCallBack)(void* parameter); +typedef DWORD threadID; + +#endif + +class CrossThreads +{ + public: + + CrossThreads(threadCallBack callBack = NULL, long timeout = 3000); + virtual ~CrossThreads(); + + void setThreadCallback(threadCallBack callBack); + unsigned long getThreadID(); + int create(); + int remove(); + void join(); + bool isCreated(); + + private: + threadID _threadID; + threadCallBack _callBack; + + #ifdef __WIN32__ + long _timeout; + HANDLE _thread; + #endif + + void stop(); +}; diff --git a/CrossThreadsHandler.cpp b/CrossThreadsHandler.cpp new file mode 100644 index 0000000..7cfc6b9 --- /dev/null +++ b/CrossThreadsHandler.cpp @@ -0,0 +1,58 @@ +// CrossThreadsHandler +// Copyright Jeroen Saey +// Created 29-01-2013 +// CrossThreadsHandler.cpp + +#include "CrossThreadsHandler.h" + +#include +#include +#include + +using namespace std; + +CrossThreadsHandler::CrossThreadsHandler() +{ +} + +unsigned long CrossThreadsHandler::createAndStartThread(threadCallBack callback) +{ + CrossThreads *thread = new CrossThreads(callback); + thread->create(); + _threadList.insert(pair(thread->getThreadID(),thread)); + return thread->getThreadID(); +} + +bool CrossThreadsHandler::joinThread(unsigned long threadID) +{ + map ::iterator iterator = _threadList.find(threadID); + if (iterator != _threadList.end()) + { + iterator->second->join(); + return true; + } + else + { + cout << "The client could not be found in the threadList."; + return false; + } +} + +bool CrossThreadsHandler::removeThread(unsigned long threadID) +{ + map ::iterator iterator = _threadList.find(threadID); + if (iterator != _threadList.end()) + { + _threadList.erase(iterator); + return true; + } + else + { + cout << "The client could not be found in the threadList."; + return false; + } +} + +CrossThreadsHandler::~CrossThreadsHandler() +{ +} diff --git a/CrossThreadsHandler.h b/CrossThreadsHandler.h new file mode 100644 index 0000000..4fe2cea --- /dev/null +++ b/CrossThreadsHandler.h @@ -0,0 +1,25 @@ +// CrossThreadsHandler +// Copyright Jeroen Saey +// Created 29-01-2013 +// CrossThreadsHandler.h + +#pragma once + +#include "CrossThreads.h" + +#include +#include + +class CrossThreadsHandler +{ + public: + CrossThreadsHandler(); + virtual ~CrossThreadsHandler(); + + unsigned long createAndStartThread (threadCallBack callback); + bool removeThread (unsigned long threadID); + bool joinThread (unsigned long threadID); + + private: + std::map _threadList; +}; diff --git a/Example/server.cpp b/Example/server.cpp new file mode 100644 index 0000000..531ee1e --- /dev/null +++ b/Example/server.cpp @@ -0,0 +1,66 @@ +/* + * File: Server.cpp + * Author: SuperSmash + * + * Created on 15 february 2013, 21:10 + */ + +#include "Server.h" +#include "CrossSockets/CrossThreadsHandler.h" + +#include + +using namespace std; + +static Server *self; + +Server::Server() +{ + self = this; + + // Setup the listener into listeningMode and define the serverport + _server.bind(2013); + _server.listen(); + _server.setPassword("welcome"); + + stringstream startMessage; + LogManagement::getInstance()->write(startMessage << "CrossSocket server started.\n" << "PORT: 2013"); + cout << APPLICATIONNAME << " server started.\n"; + + _threadHandler = new CrossThreadsHandler(); + + while (_server.isConnected()) + { + listenForConnections((CrossSocket*)_server.accept()); + } +} + +void Server::listenForConnections(CrossSocket* socket) +{ + _clientSocket = socket; + stringstream welcomeMessage; + welcomeMessage << "Welcome to the CrossSocket server!"; + socket->writeLine(welcomeMessage.str()); + _threadID = _threadHandler->createAndStartThread((threadCallBack) &Server::handleLoopCallback); +} + +void* Server::handleLoopCallback(void *functionPointer) +{ + static_cast (functionPointer)->handleLoop(self->_clientSocket, self->_threadID); +} + +void Server::handleLoop(CrossSocket *socket, unsigned long threadID) +{ + if (self->_server.checkPassword(socket)) + { + while (socket->isConnected()) + { + // Do something here because we got an active connection to the server using CrossSockets ^^ + } + delete socket; + } +} + +Server::~Server() +{ +} diff --git a/Example/server.h b/Example/server.h new file mode 100644 index 0000000..e47a4de --- /dev/null +++ b/Example/server.h @@ -0,0 +1,33 @@ +/* + * File: Server.h + * Author: SuperSmash + * + * Created on 15 february 2013, 21:10 + */ + +#pragma once + +#include "CrossSockets/CrossSockets.h" +#include "CrossSockets/CrossThreads.h" + +class CrossThreadsHandler; + +class Server +{ + public: + Server(); + virtual ~Server(); + + void listenForConnections(CrossSocket* socket); + void deleteClientSocketWithForce(int signalnumber); + + private: + static void* handleLoopCallback(void *functionPointer); + void handleLoop(CrossSocket *socket, unsigned long threadID); + + CrossSocket _server; + CrossThreadsHandler *_threadHandler; + + CrossSocket *_clientSocket; + unsigned long _threadID; +}; diff --git a/README.md b/README.md index 2d9caaa..bb8e8c4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ -# CrossSockets +CrossSockets: -CrossSockets C++ \ No newline at end of file +CrossSockets is a library for C++ to work with the POSIX and Winsock2 sockets. +CrossSockets can help you implement a network communication application. +CrossSockets was created to serve as a client - server communication protocol. + +Example: + +If the server is running you can establish a connection using putty or any other client. +(if you use putty you need to connect to the server using a RAW connection) + +Port: 2013 +Password: welcome