public static Server.GatewayRef CreateGateway(ActorSystem system, ChannelType type, string name, IPEndPoint endPoint,
                                                      XunitOutputLogger.Source outputSource,
                                                      Action <Server.GatewayInitiator> clientInitiatorSetup = null)
        {
            // initialize gateway initiator

            var initiator = new Server.GatewayInitiator()
            {
                GatewayLogger       = new XunitOutputLogger($"Gateway({name})", outputSource),
                ListenEndPoint      = endPoint,
                ConnectEndPoint     = endPoint,
                TokenRequired       = false,
                CreateChannelLogger = (_, o) => new XunitOutputLogger($"ServerChannel({name})", outputSource),
                CheckCreateChannel  = (_, o) => true,
                ConnectionSettings  = new Server.TcpConnectionSettings {
                    PacketSerializer = s_serverSerializer
                },
                PacketSerializer = s_serverSerializer,
            };

            clientInitiatorSetup?.Invoke(initiator);

            // create gateway and start it

            var gateway = (type == ChannelType.Tcp)
                ? system.ActorOf(Props.Create(() => new Server.TcpGateway(initiator))).Cast <Server.GatewayRef>()
                : system.ActorOf(Props.Create(() => new Server.UdpGateway(initiator))).Cast <Server.GatewayRef>();

            gateway.Start().Wait();

            return(gateway);
        }
 public ChannelTest(ITestOutputHelper output)
     : base(output: output)
 {
     _outputSource = new XunitOutputLogger.Source { Output = output, Lock = new object(), Active = true };
     _testEndPoint = s_lastTestEndPoint;
     s_lastTestEndPoint.Port += 2;
     _environment = new EntryActorEnvironment();
 }
 public ChannelTest(ITestOutputHelper output)
     : base(output: output)
 {
     _outputSource = new XunitOutputLogger.Source {
         Output = output, Lock = new object(), Active = true
     };
     _testEndPoint            = s_lastTestEndPoint;
     s_lastTestEndPoint.Port += 2;
     _environment             = new EntryActorEnvironment();
 }
        public static Client.IChannel CreateClientChannel(string name, string address, XunitOutputLogger.Source outputSource)
        {
            // create channel and start it

            var logger = new XunitOutputLogger($"ClientChannel({name})", outputSource);

            var factory = new Client.ChannelFactory
            {
                CreateChannelLogger    = () => logger,
                CreateObserverRegistry = () => new ObserverRegistry(),
                PacketSerializer       = s_clientSerializer
            };

            var udpConfig = ((NetPeerConfiguration)factory.UdpConfig);

            udpConfig.MaximumHandshakeAttempts = 1; // to fail faster

            return(factory.Create(address));
        }
 public static Client.IChannel CreateClientChannel(string name, ChannelType type, IPEndPoint endPoint,
                                                   XunitOutputLogger.Source outputSource)
 {
     return(CreateClientChannel(name, $"{type}|{endPoint}|", outputSource));
 }