// Implementation of the ServerSocket class

#include "ServerSocket.h"



ServerSocket::ServerSocket ( int port ){
	if ( ! Socket::create() ){
		throw SocketException ( "Could not create server socket." );
	}

	if ( ! Socket::bind ( port ) ){
		throw SocketException ( "Could not bind to port." );
	}

	if ( ! Socket::listen() ){
		throw SocketException ( "Could not listen to socket." );
	}

}
ServerSocket::ServerSocket(){

}

ServerSocket::~ServerSocket(){
	this->close();
	delete this;
}


const ServerSocket& ServerSocket::operator << ( const std::string& s ) const {
	if ( ! Socket::send ( s ) ){
		throw SocketException ( "Could not write to socket." );
	}
	return *this;
}


const ServerSocket& ServerSocket::operator >> ( std::string& s ) const{
	if ( ! Socket::recv ( s ) ){
		throw SocketException ( "Could not read from socket." );
	}
	return *this;
}

void ServerSocket::accept ( ServerSocket& sock ){
	if ( ! Socket::accept ( sock ) ){
		throw SocketException ( "Could not accept socket." );
	}
}


void ServerSocket::close (){
	if ( ! Socket::shutdown () ){
		throw SocketException ( "Could not shutdown socket." );
	}
}
