Exemple #1
0
        public override async Task Start()
        {
            var serializer = PacketSerializer.CreatePacketSerializer();

            var name      = "UserLoginGateway";
            var initiator = new GatewayInitiator
            {
                ListenEndPoint      = _listenEndPoint,
                GatewayLogger       = LogManager.GetLogger(name),
                CreateChannelLogger = (ep, _) => LogManager.GetLogger($"Channel({ep}"),
                ConnectionSettings  = new TcpConnectionSettings {
                    PacketSerializer = serializer
                },
                PacketSerializer    = serializer,
                CreateInitialActors = (context, connection) => new[]
                {
                    Tuple.Create(
                        context.ActorOf(Props.Create(() =>
                                                     new UserLoginActor(_context, context.Self.Cast <ActorBoundChannelRef>(), GatewayInitiator.GetRemoteEndPoint(connection)))),
                        new TaggedType[] { typeof(IUserLogin) },
                        ActorBindingFlags.CloseThenStop | ActorBindingFlags.StopThenCloseChannel)
                }
            };

            _gateway = (_channelType == ChannelType.Tcp)
                ? _context.System.ActorOf(Props.Create(() => new TcpGateway(initiator)), name).Cast <GatewayRef>()
                : _context.System.ActorOf(Props.Create(() => new UdpGateway(initiator)), name).Cast <GatewayRef>();
            await _gateway.Start();
        }
Exemple #2
0
        public override async Task Start()
        {
            // create UserTableContainer

            _userContainer = _context.System.ActorOf(
                Props.Create(() => new DistributedActorTableContainer <long>(
                                 "User", _context.ClusterActorDiscovery, typeof(UserActorFactory), new object[] { _context }, InterfacedPoisonPill.Instance)),
                "UserTableContainer");

            // create gateway for users to connect to

            if (_listenEndPoint.Port != 0)
            {
                var serializer = PacketSerializer.CreatePacketSerializer();

                var name      = "UserGateway";
                var initiator = new GatewayInitiator
                {
                    ListenEndPoint      = _listenEndPoint,
                    ConnectEndPoint     = _connectEndPoint,
                    TokenRequired       = true,
                    GatewayLogger       = LogManager.GetLogger(name),
                    CreateChannelLogger = (ep, _) => LogManager.GetLogger($"Channel({ep}"),
                    ConnectionSettings  = new TcpConnectionSettings {
                        PacketSerializer = serializer
                    },
                    PacketSerializer = serializer,
                };

                _gateway = (_channelType == ChannelType.Tcp)
                    ? _context.System.ActorOf(Props.Create(() => new TcpGateway(initiator)), name).Cast <GatewayRef>()
                    : _context.System.ActorOf(Props.Create(() => new UdpGateway(initiator)), name).Cast <GatewayRef>();
                await _gateway.Start();
            }
        }
        bool ServiceControl.Start(HostControl hostControl)
        {
            // initialize actor system
            _system = ActorSystem.Create("GameServer");
            DeadRequestProcessingActor.Install(_system);

            // start gateway to accept clients
            _gateway = StartListen(_system, ChannelType.Tcp, 5000).Result;
            return(true);
        }