/// <summary> /// Creates a new sub server /// </summary> protected SubServerApplication(SubServerType subServerType) { this.serverId = Utils.NewGuidInt32(GuidCreationCulture.SplitGuid); this.ServerConfig = ServerConfig.Initialize(BinaryPath); this.ServerType = subServerType; this.subServerId = ServerConfig.SubServer.SubServerId; var ip = IPAddress.Parse(ServerConfig.MasterServer.IP); var port = ServerConfig.MasterServer.ServerPort; this.MasterIPEndPoint = new IPEndPoint(ip, port); }
protected virtual OperationResponse HandleRegisterGameServerRequest(OperationRequest request) { var registerRequest = new RegisterSubServer(Protocol, request); if (registerRequest.IsValid == false) { string msg = registerRequest.GetErrorMessage(); if (Log.IsDebugEnabled) { Log.DebugFormat("Invalid register request: {0}", msg); } return(new OperationResponse(request.OperationCode) { DebugMessage = msg, ReturnCode = (short)ErrorCode.OperationInvalid }); } if (Log.IsDebugEnabled) { Log.DebugFormat( "Received register request: Address={0}, UdpPort={2}, TcpPort={1}, Type={3}", registerRequest.GameServerAddress, registerRequest.TcpPort, registerRequest.UdpPort, registerRequest.ServerType); } if (registerRequest.UdpPort.HasValue) { UdpAddress = registerRequest.GameServerAddress + ":" + registerRequest.UdpPort; } if (registerRequest.TcpPort.HasValue) { TcpAddress = registerRequest.GameServerAddress + ":" + registerRequest.TcpPort; } ServerId = registerRequest.ServerId; Type = (SubServerType)registerRequest.ServerType; _server.SubServers.OnConnect(this); return(new OperationResponse(request.OperationCode)); }
/// <summary> /// Gets all the <see cref="Karen90MmoFramework.Server.Master.IncomingSubServerPeer"/> of a specific type /// </summary> /// <param name="subServerType"></param> /// <returns></returns> public IEnumerable <IncomingSubServerPeer> GetSubServersOfType(SubServerType subServerType) { lock (syncRoot) return(Values.Where(server => server.ServerType == subServerType).ToArray()); }
/// <summary> /// Tries to get a(n) <see cref="Karen90MmoFramework.Server.Master.IncomingSubServerPeer"/> by its server type. /// </summary> /// <returns>Returns true if found and false otherwise</returns> public bool TryGetSubserverByType(SubServerType serverType, int subServerId, out IncomingSubServerPeer peer) { lock (syncRoot) return((peer = this.Values.FirstOrDefault(server => server.ServerType == serverType && server.SubServerId == subServerId)) != null); }
/// <summary> /// Tries to get any <see cref="Karen90MmoFramework.Server.Master.IncomingSubServerPeer"/> by its server type. /// </summary> /// <returns>Returns true if found and false otherwise</returns> public bool TryGetSubserverByTypeAny(SubServerType serverType, out IncomingSubServerPeer peer) { lock (syncRoot) return((peer = this.Values.FirstOrDefault(server => (server.ServerType & serverType) == serverType)) != null); }