
#ifndef SOCKETS_H
#define SOCKETS_H

#include "common.h"

#include <winsock.h>
#include <windows.h>

namespace sockets 
{
	// ################################################################################################

	class clientSocket
	{
	private:
		SOCKET socketHandle_;
	public:
		clientSocket(void);
		clientSocket(SOCKET socketHandle);
		bool connectToHost(const char* hostName, int port);
		int sendData(const char* data, int size);
		int recvData(char* buf, int size);
		void close(void);
	};

	// ################################################################################################

	class serverSocket
	{
	private:
		SOCKET socketHandle_;
	public:
		serverSocket(void);
		void listenPort(int port);
		void listenPort(int port, int maxConnections);
		clientSocket* acceptConnection(void);
		void close(void);
	};

	// ################################################################################################

	/// library boot up, always call this routine at the first use of this classes
	void socketsStart(void);


};


#endif