public override void StartServer(string name, string ipAdress, int port, bool bNeedRegistration,
                                 NetServerType serverType, int maxPlayers)
 {         
     ConnectToDatabase();
     base.StartServer(name, ipAdress, port, bNeedRegistration, serverType, maxPlayers);
     m_bIsRunning = true;
 }
 public F3_NetServerInfo()
 {
     m_serverName = "";
     m_serverType = NetServerType.eTYPE_UNKOWN;
     m_currentNbPlayers = -1;
     m_maxPlayers = -1;
 }
 public F3_ServerConfig()
 {
     m_appID = "default";
     m_ip = NetUtility.Resolve("localhost");
     m_port = 7980;
     m_needRegistration = true;
     m_serverType = NetServerType.eTYPE_UNKOWN;
     m_maxplayers = F3_NetCommonConstants.UNLIMITED_PLAYERS;
 }
        public void PopulateFromMsg(NetIncomingMessage msg)
        {
            m_serverName = msg.ReadString();
            m_serverType = (NetServerType)msg.ReadByte();
            m_serverInternalAdress = msg.ReadIPEndPoint();
            m_serverExternalAdress = msg.SenderEndPoint;
            m_currentNbPlayers = msg.ReadInt32();
            m_maxPlayers = msg.ReadInt32();
            m_NATtoken = msg.ReadString();

            m_lastContact = DateTime.Now;
        }
 //FromNetMsg is handled by F3_NetServerInfo.
 public static void ToNetMsg(long serverUUID,
                             string serverName,
                             NetServerType serverType,
                             IPEndPoint serverAddress,
                             int connectedPlayers,
                             int maxPlayers,
                             string token,
                             ref NetOutgoingMessage netMsg)
 {
     netMsg.Write((byte)NetDataType.eDATA_REGISTER_HOST);
     netMsg.Write(serverUUID);
     netMsg.Write(serverName);
     netMsg.Write((byte)serverType);
     netMsg.Write(serverAddress);
     netMsg.Write(connectedPlayers);
     netMsg.Write(maxPlayers);
     netMsg.Write(token);
 }
        public virtual void StartServer(F3_ServerConfig serverConfig)
        {
            m_connectedPlayers = new Dictionary<long, F3_NetPlayerInfo>();

            NetPeerConfiguration config = new NetPeerConfiguration(serverConfig.GetAppID());
            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            config.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess);
            config.EnableMessageType(NetIncomingMessageType.UnconnectedData);
            config.EnableMessageType(NetIncomingMessageType.StatusChanged);
            config.LocalAddress = serverConfig.GetIpAdress();
            config.Port = serverConfig.GetPort();

            m_server = new NetServer(config);
            m_server.Start();

            m_listener = new F3_ServerListenerThread(serverConfig.GetAppID(), this);

            m_bNeedRegistration = serverConfig.HasToRegister();
            m_serverType = serverConfig.GetServerType();
            m_maxPlayers = serverConfig.GetMaxPlayers();

            if (m_bNeedRegistration)
            {
                RegisterToMasterServer(true);
            }
        }
        public bool LoadFromXML(string filename)
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load(filename);
            }
            catch (System.IO.FileNotFoundException)
            {
                Console.WriteLine("ServerConfig not found .. using defaults");
                return false;
            }
            XmlNode serverNode = doc.SelectSingleNode("serverConfig");

            if (serverNode != null)
            {
                m_appID = serverNode.SelectSingleNode("name").InnerText;
                m_ip = NetUtility.Resolve(serverNode.SelectSingleNode("ip").InnerText);
                int.TryParse(serverNode.SelectSingleNode("port").InnerText, out m_port);

                int register;
                int.TryParse(serverNode.SelectSingleNode("register").InnerText, out register);
                m_needRegistration = Convert.ToBoolean(register);

                int type;
                int.TryParse(serverNode.SelectSingleNode("serverType").InnerText, out type);
                m_serverType = (NetServerType)type;

                int.TryParse(serverNode.SelectSingleNode("maxplayers").InnerText, out m_maxplayers);
            }

            return true;
        }