public Server(ServerSettings settings) { // Attempt to load world if (!File.Exists(settings.SavePath)) { throw new FileNotFoundException("Save file not found."); } string worldData = File.ReadAllText(settings.SavePath); WorldStateData worldStateData = new WorldStateData(worldData); this.settings = settings; SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); processorContext = new ServerProcessorContext(this); router = new PacketRouter(processorContext); foreach (PacketProcessor packetProcessor in PacketProcessor.GetProcessors()) { router.RegisterPacketProcessor(packetProcessor); } playerConnections = new Dictionary <Guid, long>(); playerManager = new PlayerManager(this); simulationManager = new SimulationManager(this); worldStateManager = new WorldStateManager(this, settings.SavePath, worldStateData); worldRequestQueueManager = new WorldRequestQueueManager(this); timeManager = new TimeManager(this); environmentManager = new EnvironmentManager(this); disasterManager = new DisasterManager(this); Initialize(); }
protected Server(ushort port, PacketRouter <T> router, ILogger logger, IComponentContext context) { this.port = port; this.router = router; this.logger = logger; this.context = context ?? throw new ArgumentException("null context provided"); }
public NecServer(NecSetting setting) { Setting = setting; Router = new PacketRouter(); _authConsumer = new NecQueueConsumer(Setting); _authConsumer.SetIdentity("Auth"); _msgConsumer = new NecQueueConsumer(Setting); _msgConsumer.SetIdentity("Msg"); _areaConsumer = new NecQueueConsumer(Setting); _areaConsumer.SetIdentity("Area"); _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer ); LoadHandler(); }
private void InitializeServerEvents() { _server.ClientConnected += (sender, e) => Logger.Trace("Client connected: {0}", e.Client.ToString()); _server.ClientDisconnected += (sender, e) => Logger.Trace("Client disconnected: {0}", e.Client.ToString()); _server.DataReceived += (sender, e) => PacketRouter.Route(e); _server.DataSent += (sender, e) => { }; }
private BaseClient(string playerName, Rooms rooms, PlayerChannels playerChannels, RoomChannels roomChannels) { if (playerName == null) { throw new ArgumentNullException("playerName"); } if (rooms == null) { throw new ArgumentNullException("rooms"); } if (playerChannels == null) { throw new ArgumentNullException("playerChannels"); } if (roomChannels == null) { throw new ArgumentNullException("roomChannels"); } Log = Logs.Create(LogCategory.Network, GetType().Name); _playerName = playerName; _byteBufferPool = new ConcurrentPool <byte[]>(10, () => new byte[1024]); _queuedUnreliableTransmissions = new TransferBuffer <ArraySegment <byte> >(16); _queuedReliableTransmissions = new TransferBuffer <ArraySegment <byte> >(16); _queuedEvents = new List <NetworkEvent>(); _peers = new PeerCollection(this); _channels = new ChannelCollection(_peers.RoutingTable, playerChannels, roomChannels); _connectionNegotiator = new ConnectionNegotiator(this); _router = new PacketRouter(this, _connectionNegotiator); _commsProcessor = new CommsProcessor(this, _peers.RoutingTable, rooms, _channels); _roomsManager = new RoomMembershipManager(this, _connectionNegotiator, rooms); }
private void InitializeProcessors() { router = new PacketRouter(processorContext); foreach (PacketProcessor packetProcessor in PacketProcessor.GetProcessors()) { router.RegisterPacketProcessor(packetProcessor); } }
public Server(PacketRouter <T> router, IComponentContext context) { Trace.Assert(context != null); Source = new(); ClientConnected = new(false); Router = router; Context = context; }
public NecServer(NecSetting setting) { _running = false; Setting = new NecSetting(setting); NecromancyBot = new NecromancyBot(setting); NecromancyBot.AddSingleton(this); Instances = new InstanceGenerator(); Instances64 = new InstanceGenerator64(); Clients = new ClientLookup(); Characters = new CharacterLookup(); Maps = new MapLookup(); Chat = new ChatManager(this); Router = new PacketRouter(); Database = new NecDatabaseBuilder().Build(Setting.DatabaseSettings); SettingRepository = new SettingRepository(Setting.RepositoryFolder).Initialize(); _authConsumer = new NecQueueConsumer(ServerType.Auth, Setting, Setting.AuthSocketSettings); _authConsumer.ClientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(ServerType.Msg, Setting, Setting.MsgSocketSettings); _msgConsumer.ClientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(ServerType.Area, Setting, Setting.AreaSocketSettings); _areaConsumer.ClientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer, Setting.AuthSocketSettings ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer, Setting.MsgSocketSettings ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer, Setting.AreaSocketSettings ); LoadChatCommands(); LoadSettingRepository(); LoadHandler(); LoadCharacterRepository(); }
public virtual void InitializeService(INetContext context) { Context = context; scheduledEvents = new List <Tuple <DateTime, Action> >(); if (IsClient) { Router = new PacketRouter(Client.Router, GetRouterPrefix()); } if (IsServer) { Router = new PacketRouter(Server.Router, GetRouterPrefix()); } }
public NetRoomControllerChannels(PacketRouter router) { this.MatchCreatedEventChannel = router.Route <MatchCreatedEventModel>(); this.RoomEndedEventChannel = router.Route <RoomEndedEventModel>(); this.RoomStartedEventChannel = router.Route <RoomStartedEventModel>(); this.UserJoinedEventChannel = router.Route <UserJoinedEventModel>(); this.UserLeftEventChannel = router.Route <UserLeftEventModel>(); this.CloseRoomRequestChannel = router.Route <CloseRoomRequest>(); this.CreateMatchRequestChannel = router.Route <CreateMatchRequest>(); this.GetMatchListRequestChannel = router.Route <GetMatchListRequest>(); this.GetMatchListResponseChannel = router.Route <GetMatchListResponse>(); this.StartRoomRequestChannel = router.Route <StartRoomRequest>(); this.JoinMatchRequestChannel = router.Route <JoinMatchRequest>(); }
public NecServer(NecSetting setting) { _running = false; this.setting = new NecSetting(setting); necromancyBot = new NecromancyBot(this.setting); necromancyBot.AddSingleton(this); instances = new InstanceGenerator(this); clients = new ClientLookup(); maps = new MapLookup(); chat = new ChatManager(this); router = new PacketRouter(); settingRepository = new SettingRepository(this.setting.repositoryFolder).Initialize(); database = new NecDatabaseBuilder(this.setting, settingRepository).Build(); _authConsumer = new NecQueueConsumer(ServerType.Auth, this.setting, this.setting.authSocketSettings); _authConsumer.clientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(ServerType.Msg, this.setting, this.setting.msgSocketSettings); _msgConsumer.clientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(ServerType.Area, this.setting, this.setting.areaSocketSettings); _areaConsumer.clientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.authPort, _authConsumer, this.setting.authSocketSettings ); _msgServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.msgPort, _msgConsumer, this.setting.msgSocketSettings ); _areaServer = new AsyncEventServer( this.setting.listenIpAddress, this.setting.areaPort, _areaConsumer, this.setting.areaSocketSettings ); LoadChatCommands(); LoadDatabaseObjects(); LoadHandler(); }
public NetMatchControllerChannels(PacketRouter router) { this.MatchEndedEventChannel = router.Route <MatchEndedEventModel>(); this.MatchStartedEventChannel = router.Route <MatchStartedEventModel>(); this.RoundCreatedEventChannel = router.Route <RoundCreatedEventModel>(); this.RoundEndedEventChannel = router.Route <RoundEndedEventModel>(); this.UserJoinedEventChannel = router.Route <UserJoinedEventModel>(); this.UserLeftEventChannel = router.Route <UserLeftEventModel>(); this.StartMatchRequestChannel = router.Route <StartMatchRequest>(); this.EndMatchRequestChannel = router.Route <EndMatchRequest>(); this.PlayCardRequestChannel = router.Route <PlayCardRequest>(); this.PlayCardResponseChannel = router.Route <PlayCardResponse>(); }
protected BaseServer() { Log = Logs.Create(LogCategory.Network, GetType().Name); RecvClientState = new TrafficCounter(); RecvVoiceData = new TrafficCounter(); RecvTextData = new TrafficCounter(); RecvHandshakeRequest = new TrafficCounter(); SentTraffic = new TrafficCounter(); _sessionId = unchecked ((uint)new Random().Next()); Log.Debug("Session Id = {0}", _sessionId); _packetRouter = new PacketRouter <TPeer>(this); _clients = new ClientCollection <TPeer>(this, _sessionId); _handshakeResponse = new PacketWriter(new byte[21]).WriteHandshakeResponse(_sessionId).Written; }
private void OnStartup(object sender, StartupEventArgs ev) { var cd = AppDomain.CurrentDomain; cd.UnhandledException += GlobalUnhandledExceptionHandler; System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.High; if (File.Exists(Environment.CurrentDirectory + "/TCCupdater.exe")) { File.Delete(Environment.CurrentDirectory + "/TCCupdater.exe"); } UpdateManager.CheckAppVersion(); UpdateManager.CheckDatabaseVersion(); TeraSniffer.Instance.Enabled = true; WindowManager.Init(); LoadSettings(); PacketRouter.Init(); TeraSniffer.Instance.NewConnection += (srv) => SkillManager.Clear(); TeraSniffer.Instance.EndConnection += () => SkillManager.Clear(); var LoadThread = new Thread(new ThreadStart(() => { SkillsDatabase.Load(); Console.WriteLine("Skills loaded."); BroochesDatabase.SetBroochesIcons(); Console.WriteLine("Set brooches icons"); MonsterDatabase.Populate(); Console.WriteLine("Monsters loaded"); AbnormalityDatabase.Load(); Console.WriteLine("Abnormalities loaded"); WindowManager.CooldownWindow.LoadingDone(); })); SessionManager.CurrentPlayer.Class = Class.None; WindowManager.ShowWindow(WindowManager.CooldownWindow); LoadThread.Start(); //Debug(); }
public MhfServer(MhfSetting setting) { Setting = new MhfSetting(setting); LogProvider.Configure <MhfLogger>(Setting); _logger = LogProvider.Logger <MhfLogger>(this); Instances = new InstanceGenerator(); Clients = new ClientLookup(); Router = new PacketRouter(); Database = new MhfDatabaseBuilder().Build(Setting.DatabaseSetting); _authConsumer = new QueueConsumer(Setting, Setting.ServerSocketSettings); _authConsumer.ClientDisconnected += AuthClientDisconnected; _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthServerPort, _authConsumer, Setting.ServerSocketSettings ); _lobbyConsumer = new QueueConsumer(Setting, Setting.ServerSocketSettings); _lobbyConsumer.ClientDisconnected += LobbyClientDisconnected; _lobbyServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.LobbyServerPort, _lobbyConsumer, Setting.ServerSocketSettings ); _webServer = new WebServer(Setting, new KestrelWebServer(Setting)); WebFileProvider = new PhysicalFileProvider(Setting.WebSetting.WebFolder); LoadPacketHandler(); LoadWebRoutes(); }
public NecServer(NecSetting setting) { ClientLookup = new ClientLookup(); MapLookup = new MapLookup(); Setting = setting; Router = new PacketRouter(); _authConsumer = new NecQueueConsumer(Setting); _authConsumer.SetIdentity("Auth"); _authConsumer.ClientDisconnected += AuthClientDisconnected; _msgConsumer = new NecQueueConsumer(Setting); _msgConsumer.SetIdentity("Msg"); _msgConsumer.ClientDisconnected += MsgClientDisconnected; _areaConsumer = new NecQueueConsumer(Setting); _areaConsumer.SetIdentity("Area"); _areaConsumer.ClientDisconnected += AreaClientDisconnected; _authServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AuthPort, _authConsumer ); _msgServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.MsgPort, _msgConsumer ); _areaServer = new AsyncEventServer( Setting.ListenIpAddress, Setting.AreaPort, _areaConsumer ); LoadHandler(); }
public LoginServer(PacketRouter <LoginSession> router, ILogger <LoginServer> logger, IComponentContext context) : base(Target.LOGIN_PORT, router, logger, context) { }
public LoginServer(PacketRouter <LoginSession> router, ILogger <LoginServer> logger, IComponentContext context) : base(router, logger, context) { }
internal async static void PacketReceived(Packet packet, Stream stream) { //Handle Direct return messages : it is possible this should be placed in the packet class! if (packet.Header == PacketHeaderType.CommandStationOperationResponse && packet.Payload[0] == Convert.ToByte(PacketIdentifier.CommandStationOperationResponse.TransferErrors)) { var ackResp = new AckRespMessage(); //if (XpressNetConstants.UseAsyncWrite) //{ // //ackResp.WriteAsync(stream); //} //else //{ await ackResp.WriteAsync(stream); //} } //Handle Broadcast Messages if (packet.Header == PacketHeaderType.EmergencyStopAll) { var bmr = new BroadcastMessageReceivedEventArgs { ResponseType = BroadcastType.EmergencyStop, ReceivedTime = DateTime.Now }; OnBroadcastMessageReceived(bmr); } else if (packet.Header == PacketHeaderType.CommandStationOperationResponse && packet.Payload[0] == Convert.ToByte(PacketIdentifier.CommandStationOperationResponse.NormalOperationsResumedBroadcast)) { var bmr = new BroadcastMessageReceivedEventArgs { ResponseType = BroadcastType.NormalOperationResumed, ReceivedTime = DateTime.Now }; OnBroadcastMessageReceived(bmr); } else if (packet.Header == PacketHeaderType.CommandStationOperationResponse && packet.Payload[0] == Convert.ToByte(PacketIdentifier.CommandStationOperationResponse.TrackPowerOffBroadcast)) { var bmr = new BroadcastMessageReceivedEventArgs { ResponseType = BroadcastType.TrackPowerOff, ReceivedTime = DateTime.Now }; OnBroadcastMessageReceived(bmr); } else if (packet.Header == PacketHeaderType.CommandStationOperationResponse && packet.Payload[0] == Convert.ToByte(PacketIdentifier.CommandStationOperationResponse.ServiceModeEntryBroadcast)) { var bmr = new BroadcastMessageReceivedEventArgs { ResponseType = BroadcastType.ServiceModeEntry, ReceivedTime = DateTime.Now }; OnBroadcastMessageReceived(bmr); } else if (packet.Header == PacketHeaderType.AccessoryDecoderInformation) { var bmr = new BroadcastMessageReceivedEventArgs { ResponseType = BroadcastType.AccessoryFeedback, ReceivedTime = DateTime.Now }; //bmr.Response = OnBroadcastMessageReceived(bmr); } //else if (packet.Header == PacketHeaderType.LocomotiveFunction && packet.Payload[0] == Convert.ToByte(PacketIdentifier.LocomotiveFunctionResponses.LocomotiveOperatedByAnotherDevice)) //{ //BroadcastMessageReceivedEventArgs bmr = new BroadcastMessageReceivedEventArgs(); //bmr.ResponseType = BroadcastType.LocomotiveOperatedByAnotherDevice; //bmr.Response = //OnBroadcastMessageReceived(bmr); //} //else if (packet.Header == PacketHeaderType.LocomotiveFunction && packet.Payload[0] == Convert.ToByte(PacketIdentifier.LocomotiveFunctionResponses.LocomotiveDoubleHeaderOccupied)) //{ //BroadcastMessageReceivedEventArgs bmr = new BroadcastMessageReceivedEventArgs(); //bmr.ResponseType = BroadcastType.DoubleHeaderOccupied; //bmr.Response = //OnBroadcastMessageReceived(bmr); //} //else //we may wish to send the broadcasts on anyway so this else may have to be removed!! //{ var pump = new PacketRouter(); pump.DisseminatePacket(packet); //} }
public GameServer(PacketRouter <GameSession> router, ILogger <GameServer> logger, IComponentContext context) : base(Target.GAME_PORT, router, logger, context) { this.sessions = new List <GameSession>(); }
private void OnPacket(ClientSocket client, byte[] buffer) => PacketRouter.Route((Client)client.StateObject, buffer);
public MessageChannel(PacketRouter parent, string key, Type type) { this.SourceType = type; this.Parent = parent; this.Key = key; }