示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServerContainer" /> class.
        /// </summary>
        /// <param name="loggerFactory">The logger factory.</param>
        /// <param name="servers">The servers.</param>
        /// <param name="gameServers">The game servers.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="connectServerContainer">The connect server container.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="ipResolver">The ip resolver.</param>
        /// <param name="plugInManager">The plug in manager.</param>
        public GameServerContainer(
            ILoggerFactory loggerFactory,
            IList <IManageableServer> servers,
            IDictionary <int, IGameServer> gameServers,
            IPersistenceContextProvider persistenceContextProvider,
            ConnectServerContainer connectServerContainer,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IFriendServer friendServer,
            IIpAddressResolver ipResolver,
            PlugInManager plugInManager)
        {
            this.loggerFactory = loggerFactory;
            this.servers       = servers;
            this.gameServers   = gameServers;
            this.persistenceContextProvider = persistenceContextProvider;
            this.connectServerContainer     = connectServerContainer;
            this.guildServer   = guildServer;
            this.loginServer   = loginServer;
            this.friendServer  = friendServer;
            this.ipResolver    = ipResolver;
            this.plugInManager = plugInManager;

            this.logger = this.loggerFactory.CreateLogger <GameServerContainer>();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultTcpGameServerListener" /> class.
 /// </summary>
 /// <param name="endPoint">The endpoint to which this listener is listening.</param>
 /// <param name="gameServerInfo">The game server information.</param>
 /// <param name="gameContext">The game context.</param>
 /// <param name="stateObserver">The connect server.</param>
 /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
 public DefaultTcpGameServerListener(GameServerEndpoint endPoint, IGameServerInfo gameServerInfo, GameServerContext gameContext, IGameServerStateObserver stateObserver, IIpAddressResolver addressResolver)
 {
     this.endPoint        = endPoint;
     this.gameServerInfo  = gameServerInfo;
     this.gameContext     = gameContext;
     this.stateObserver   = stateObserver;
     this.addressResolver = addressResolver;
 }
示例#3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultTcpGameServerListener" /> class.
 /// </summary>
 /// <param name="endPoint">The endpoint to which this listener is listening.</param>
 /// <param name="gameServerInfo">The game server information.</param>
 /// <param name="gameContext">The game context.</param>
 /// <param name="connectServer">The connect server.</param>
 /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
 public DefaultTcpGameServerListener(GameServerEndpoint endPoint, IGameServerInfo gameServerInfo, GameServerContext gameContext, IConnectServer connectServer, IIpAddressResolver addressResolver)
 {
     this.endPoint        = endPoint;
     this.gameServerInfo  = gameServerInfo;
     this.gameContext     = gameContext;
     this.connectServer   = connectServer;
     this.addressResolver = addressResolver;
 }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultTcpGameServerListener" /> class.
 /// </summary>
 /// <param name="port">The tcp port.</param>
 /// <param name="gameServerInfo">The game server information.</param>
 /// <param name="gameContext">The game context.</param>
 /// <param name="connectServer">The connect server.</param>
 /// <param name="mainPacketHandler">The main packet handler which should be used by clients which connected through this listener.</param>
 /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
 public DefaultTcpGameServerListener(int port, IGameServerInfo gameServerInfo, GameServerContext gameContext, IConnectServer connectServer, IMainPacketHandler mainPacketHandler, IIpAddressResolver addressResolver)
 {
     this.port              = port;
     this.gameServerInfo    = gameServerInfo;
     this.gameContext       = gameContext;
     this.connectServer     = connectServer;
     this.mainPacketHandler = mainPacketHandler;
     this.addressResolver   = addressResolver;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultTcpGameServerListener" /> class.
 /// </summary>
 /// <param name="endPoint">The endpoint to which this listener is listening.</param>
 /// <param name="gameServerInfo">The game server information.</param>
 /// <param name="gameContext">The game context.</param>
 /// <param name="stateObserver">The connect server.</param>
 /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
 /// <param name="loggerFactory">The logger factory.</param>
 public DefaultTcpGameServerListener(GameServerEndpoint endPoint, IGameServerInfo gameServerInfo, GameServerContext gameContext, IGameServerStateObserver stateObserver, IIpAddressResolver addressResolver, ILoggerFactory loggerFactory)
 {
     this.endPoint        = endPoint;
     this.gameServerInfo  = gameServerInfo;
     this.gameContext     = gameContext;
     this.stateObserver   = stateObserver;
     this.addressResolver = addressResolver;
     this.loggerFactory   = loggerFactory;
     this.logger          = this.loggerFactory.CreateLogger <DefaultTcpGameServerListener>();
 }
示例#6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ChatServerListener" /> class.
        /// </summary>
        /// <param name="port">The port.</param>
        /// <param name="stateObserver">The state observer.</param>
        /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
        public ChatServerListener(int port, IServerStateObserver stateObserver, IIpAddressResolver addressResolver)
        {
            this.port                  = port;
            this.stateObserver         = stateObserver;
            this.addressResolver       = addressResolver;
            this.manager               = new ChatRoomManager();
            this.randomNumberGenerator = RandomNumberGenerator.Create();

            this.clientCleanupTimer          = new Timer(1000 * 60); // every 60 seconds
            this.clientCleanupTimer.Elapsed += this.ClientCleanupInactiveClients;
            this.clientCleanupTimer.Start();
            this.roomCleanupTimer          = new Timer(1000 * 5); // every 5 seconds
            this.roomCleanupTimer.Elapsed += this.ClientCleanupUnusedRooms;
            this.roomCleanupTimer.Start();
        }
        public WebpackAssetsResolver(IWebHostEnvironment env, IIpAddressResolver ipAddressResolver)
        {
            _env = env;

            _localIp = _env.IsDevelopment() ? ipAddressResolver.GetLocalAddress().ToString() : null;

            var fileName = "webpack-assets.json";
            var fileInfo = _env.WebRootFileProvider.GetFileInfo(fileName);

            if (fileInfo.Exists == false || fileInfo.IsDirectory)
            {
                throw new FileNotFoundException($"{fileName} not found in {_env.WebRootPath}.");
            }

            using var stream = fileInfo.CreateReadStream();
            using var reader = new StreamReader(stream);

            _assets = JsonConvert.DeserializeObject <IReadOnlyDictionary <string, WebpackAssetsEntry> >(reader.ReadToEnd());
        }
示例#8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ChatServer" /> class.
 /// </summary>
 /// <param name="settings">The settings.</param>
 /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
 /// <param name="loggerFactory">The logger factory.</param>
 /// <param name="plugInManager">The plug in manager.</param>
 public ChatServer(ChatServerSettings settings, IIpAddressResolver addressResolver, ILoggerFactory loggerFactory, PlugInManager plugInManager)
 {
     this.loggerFactory               = loggerFactory;
     this.logger                      = loggerFactory.CreateLogger <ChatServer>();
     this.settings                    = settings;
     this.addressResolver             = addressResolver;
     this.manager                     = new ChatRoomManager(loggerFactory);
     this.randomNumberGenerator       = RandomNumberGenerator.Create();
     this.clientCleanupTimer          = new Timer(this.settings.ClientCleanUpInterval.TotalMilliseconds);
     this.clientCleanupTimer.Elapsed += this.ClientCleanupInactiveClients;
     this.clientCleanupTimer.Start();
     this.roomCleanupTimer          = new Timer(this.settings.RoomCleanUpInterval.TotalMilliseconds);
     this.roomCleanupTimer.Elapsed += this.ClientCleanupUnusedRooms;
     this.roomCleanupTimer.Start();
     foreach (var endpoint in this.settings.Endpoints)
     {
         var listener = new ChatServerListener(endpoint, plugInManager, loggerFactory);
         listener.ClientAccepted  += this.ChatClientAccepted;
         listener.ClientAccepting += this.ChatClientAccepting;
         this.listeners.Add(listener);
     }
 }
示例#9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ChatServer" /> class.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="addressResolver">The address resolver which returns the address on which the listener will be bound to.</param>
        public ChatServer(ChatServerSettings settings, IIpAddressResolver addressResolver)
        {
            this.settings                    = settings;
            this.addressResolver             = addressResolver;
            this.manager                     = new ChatRoomManager();
            this.randomNumberGenerator       = RandomNumberGenerator.Create();
            this.clientCleanupTimer          = new Timer(this.settings.ClientCleanUpInterval.TotalMilliseconds);
            this.clientCleanupTimer.Elapsed += this.ClientCleanupInactiveClients;
            this.clientCleanupTimer.Start();
            this.roomCleanupTimer          = new Timer(this.settings.RoomCleanUpInterval.TotalMilliseconds);
            this.roomCleanupTimer.Elapsed += this.ClientCleanupUnusedRooms;
            this.roomCleanupTimer.Start();
            var plugInManager = new PlugInManager();

            plugInManager.DiscoverAndRegisterPlugInsOf <INetworkEncryptionFactoryPlugIn>();
            foreach (var endpoint in this.settings.Endpoints)
            {
                var listener = new ChatServerListener(endpoint, plugInManager);
                listener.ClientAccepted  += this.ChatClientAccepted;
                listener.ClientAccepting += this.ChatClientAccepting;
                this.listeners.Add(listener);
            }
        }