#ifndef NETWORK_API_NETWORK_SERVER_H #define NETWORK_API_NETWORK_SERVER_H ////////////////////////////////////// // Created by Pontus Fransson 2013 // // Modified by Dennis Andersen 2014 // ////////////////////////////////////// #include "NetworkAPI_Preprocessor.h" #include "NetworkClient.h" #include "NetworkSession.h" #include namespace Oyster { namespace Network { extern "C" { struct ServerOptions { struct BroadcastOptions { //bool broadcast; //float broadcastInterval; //std::wstring subnetToBroadcast; //CustomNetProtocol broadcastMessage; //BroadcastOptions() //{ // broadcast = true; // broadcastInterval = 1.0f; // subnetToBroadcast = L"192.168.0.1"; //} } broadcastOptions; struct MainOptions { NetworkSession* ownerSession; int listenPort; MainOptions() { ownerSession = 0; listenPort = 0; } } mainOptions; }; class NET_API_EXPORT NetworkServer { public: enum ServerReturnCode { ServerReturnCode_Error, ServerReturnCode_Sucess }; public: NetworkServer(); NetworkServer(const NetworkServer&); const NetworkServer& operator=(const NetworkServer&); virtual ~NetworkServer(); /** Creates a server that clients can connect to * @param port The port the server will be listening for clients. * @param mainSession The main session the server will send connected clients to. * @return The server returncode */ ServerReturnCode Init(ServerOptions& options); /** Starts the server allowing clients to connect * @return The server returncode */ ServerReturnCode Start(); /** Parses asynchronous connected clients. */ int Update(); /** * */ void Stop(); /** Shutdown the server and return all resources. */ void Shutdown(); /** Set the main session connected clients will enter when connected to server. * @param mainSession The session to connect as main server session. */ void SetSession(NetworkSession const* mainSession); /** Get the main session connected with the server * @return Returns the main session */ NetworkSession const* GetMainSession(); /** Sets the main session to NULL and returns it * @return Returns the main session */ NetworkSession const* ReleaseMainSession(); /** * */ bool IsRunning() const; /** * */ std::string GetLanAddress(); /** Returns the port the server is listening on. * @return Returns the port the server has been initiated with. */ int NetworkServer::GetPort(); private: struct PrivateData; PrivateData* privateData; }; } } } #endif