#ifndef __CVCMISERVER_H__
#define __CVCMISERVER_H__
#include "../global.h"
#include <set>

/*
 * CVCMIServer.h, part of VCMI engine
 *
 * Authors: listed in file AUTHORS in main folder
 *
 * License: GNU General Public License v2.0 or later
 * Full text of license available in license.txt file, in main folder
 *
 */

class CConnection;
namespace boost
{
	namespace asio
	{
		class io_service;
		namespace ip
		{
			class tcp;
		}
		template <typename Protocol> class socket_acceptor_service;
		template <typename Protocol,typename SocketAcceptorService>
		class basic_socket_acceptor;
	}
};

class CVCMIServer
{
	boost::asio::io_service *io;
	boost::asio::basic_socket_acceptor<boost::asio::ip::tcp, boost::asio::socket_acceptor_service<boost::asio::ip::tcp> > * acceptor;
	std::map<int,CConnection*> connections;
	std::set<CConnection*> conns;
public:
	CVCMIServer(); //c-tor
	~CVCMIServer(); //d-tor
	void setUpConnection(CConnection *c, std::string mapname, si32 checksum);
	void newGame(CConnection *c);
	void loadGame(CConnection *c);
	void start();
};
#endif // __CVCMISERVER_H__