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(); } }
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(); }