#ifndef NETWORK_DEPENDENCIES_CONNECTIONUDP_H
#define NETWORK_DEPENDENCIES_CONNECTIONUDP_H

//////////////////////////////////
// Created by Sam Svensson 2013 //
//////////////////////////////////

#include "IConnection.h"
#include "../NetworkDependencies/OysterByte.h"

namespace Oyster
{
	namespace Network
	{
		class ConnectionUDP : public IConnection
		{
		public:
			ConnectionUDP();
			ConnectionUDP( int socket);
			virtual ~ConnectionUDP();

			virtual int InitiateServer( unsigned short port );
			virtual int InitiateClient();

			virtual int InitiateBroadcastServer(unsigned short port, const char serverName[]);
			virtual int InitiateBroadcastClient(unsigned short port);

			virtual int Send ( OysterByte &byte );
			virtual int Recieve( OysterByte &byte );

			virtual int Connect( unsigned short port, const char serverName[] );

			//Doesn't do anything now.
			virtual int Reconnect() { return 0; }

			virtual int Disconnect();

			bool IsSending();
			bool IsConnected();
			int GetIpSize();
			int GetSocket();

			int SetBlockingMode( bool blocking );

		private:
			int InitiateSocket();

			int socket;
			//char ipAddress[16];
			//unsigned short port;
			int ipSize;
			
			unsigned long Address;
			unsigned short port;

			bool stillSending;
			bool closed;
		};
	}
}

#endif