Exemplo n.º 1
0
        private async Task <AssociationHandle> StartClient(Address remoteAddress)
        {
            if (InternalTransport != TransportMode.Tcp)
            {
                throw new NotSupportedException("Currently Akka.Streams server supports only TCP transport mode.");
            }

            var addressFamily = Settings.DnsUseIpv6 ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;


            var socketAddress = RemotingAddressHelpers.AddressToSocketAddress(remoteAddress);

            socketAddress = await MapEndpointAsync(socketAddress).ConfigureAwait(false);

            // TODO: socket options
            var clientSource = System.TcpStream().OutgoingConnection(socketAddress, connectionTimeout: Settings.ConnectTimeout)
                               .AddAttributes(ActorAttributes.CreateDispatcher(System.Settings.Config.GetString("akka.remote.use-dispatcher")));

            var joined = clientSource.JoinMaterialized(
                StreamTransportFlows.OutboundConnectionHandler(this, remoteAddress, socketAddress), (connectTask, associate) => (connectTask, associate))
                         .Join(Flow.Create <Google.Protobuf.ByteString>().Where(_ => true))
                         .Run(StreamMaterializer);

            await joined.connectTask.ConfigureAwait(false);

            return(await joined.associate.ConfigureAwait(false));
        }
Exemplo n.º 2
0
        private void StartServer()
        {
            if (InternalTransport != TransportMode.Tcp)
            {
                throw new NotSupportedException("Currently Akka.Streams server supports only TCP transport mode.");
            }

            var addressFamily = Settings.DnsUseIpv6 ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;

            var serverSource = System.TcpStream().Bind(Settings.Hostname, Settings.Port, Settings.Backlog)
                               .AddAttributes(ActorAttributes.CreateDispatcher(System.Settings.Config.GetString("akka.remote.use-dispatcher")));

            serverSource.RunForeach(connection =>
            {
                connection.Flow.Join(StreamTransportFlows.OutboundConnectionHandler(Settings, connection.));
            });
        }