示例#1
0
        public IDisposable StartServer()
        {
            var monitor = new ConnectionRateMonitor();
            var binding = new NetTcpBinding { Security = { Mode = SecurityMode.None } };
            var listener = binding.Start(this.ConnectArguments.CreateNetTcpAddress());
            Console.WriteLine("Listening on {0} for {1}", listener.Uri, typeof(SimpleObject).Name);

            listener.GetChannels()
                .SubscribeOn(System.Reactive.Concurrency.ThreadPoolScheduler.Instance)
                .Subscribe(c =>
                {
                    monitor.OnConnect();
                    c.GetMessages()
                        .Subscribe(
                            m =>
                            {
                                monitor.OnMessage();
                                var obj = m.GetBody<SimpleObject>();
                            },
                        ex => monitor.OnDisconnect(),
                        monitor.OnDisconnect);
                });

            monitor.Start();
            return Disposable.Create(listener.Abort);
        }
示例#2
0
        private IDisposable FixedLenghtWithAck()
        {
            var sockets = SocketEvents.GetTcpStreamSockets(_port);
            var monitor = new ConnectionRateMonitor();

            sockets.GetConnections()
            .Subscribe(connection =>
            {
                monitor.OnConnect();
                connection
                .ToLengthPrefixed()
                .Subscribe(context =>
                {
                    var response = HandleMessage(context.Message);
                    monitor.OnMessage();
                    context.Publish(response);
                },
                           ex => monitor.OnDisconnect(),
                           monitor.OnDisconnect);
            });

            monitor.Start();

            return(sockets);
        }
示例#3
0
        public IDisposable StartServer()
        {
            var monitor = new ConnectionRateMonitor();
            var binding = new NetTcpBinding {
                Security = { Mode = SecurityMode.None }
            };
            var listener = binding.Start(_address);

            Console.WriteLine("Listening on " + listener.Uri);

            listener.GetChannels()
            .SubscribeOn(System.Reactive.Concurrency.ThreadPoolScheduler.Instance)
            .Subscribe(c =>
            {
                monitor.OnConnect();
                c.GetMessages()
                .Subscribe(
                    m => monitor.OnMessage(),
                    ex => monitor.OnDisconnect(),
                    monitor.OnDisconnect);
            });

            monitor.Start();

            return(Disposable.Create(listener.Abort));
        }
        private IDisposable FixedLenghtWithAck()
        {
            var sockets = SocketEvents.GetTcpStreamSockets(_port);
            var monitor = new ConnectionRateMonitor();

            sockets.GetConnections()
                   .Subscribe(connection =>
            {
                monitor.OnConnect();
                connection
                    .ToLengthPrefixed()
                    .Subscribe(context =>
                    {
                        var response = HandleMessage(context.Message);
                        monitor.OnMessage();
                        context.Publish(response);
                    },
                    ex => monitor.OnDisconnect(),
                    monitor.OnDisconnect);
            });

            monitor.Start();

            return sockets;
        }
示例#5
0
        public IDisposable StartServer()
        {
            var monitor = new ConnectionRateMonitor();
            var binding = new NetTcpBinding { Security = { Mode = SecurityMode.None } };
            var listener = binding.Start(this.ConnectArguments.CreateNetTcpAddress());
            Console.WriteLine("Listening on {0} for {1}", listener.Uri, typeof(SimpleObject).Name);

            listener.GetChannels()
                .SubscribeOn(System.Reactive.Concurrency.ThreadPoolScheduler.Instance)
                .Subscribe(c =>
                {
                    monitor.OnConnect();
                    c.GetMessages()
                        .Subscribe(
                            m =>
                            {
                                monitor.OnMessage();
                                var obj = m.GetBody<SimpleObject>();
                            },
                        ex => monitor.OnDisconnect(),
                        monitor.OnDisconnect);
                });

            monitor.Start();
            return Disposable.Create(listener.Abort);
        }
        private IDisposable SimpleReceiver()
        {
            var sockets = SocketEvents.GetTcpStreamSockets(_port);
            var monitor = new ConnectionRateMonitor();

            sockets.Subscribe(s =>
            {
                monitor.OnConnect();
                var receiver = s.CreateReceiver();
                receiver.Subscribe(
                    d => monitor.OnMessage(),
                    ex => monitor.OnDisconnect(),
                    monitor.OnDisconnect);
            });

            monitor.Start();

            return sockets;
        }
        private IDisposable SimpleReceiver()
        {
            var sockets = SocketEvents.GetTcpStreamSockets(_port);
            var monitor = new ConnectionRateMonitor();

            sockets.Subscribe(s =>
            {
                monitor.OnConnect();
                var receiver = s.CreateReceiver();
                receiver.Subscribe(
                    d => monitor.OnMessage(),
                    ex => monitor.OnDisconnect(),
                    monitor.OnDisconnect);
            });

            monitor.Start();

            return(sockets);
        }
示例#8
0
        public IDisposable StartServer()
        {
            var monitor = new ConnectionRateMonitor();
            var binding = new NetTcpBinding { Security = { Mode = SecurityMode.None } };
            var listener = binding.Start(_address);
            Console.WriteLine("Listening on " + listener.Uri);

            listener.GetChannels()
                .SubscribeOn(System.Reactive.Concurrency.ThreadPoolScheduler.Instance)
                .Subscribe(c =>
                {
                    monitor.OnConnect();
                    c.GetMessages()
                        .Subscribe(
                        m => monitor.OnMessage(),
                        ex => monitor.OnDisconnect(),
                        monitor.OnDisconnect);
                });

            monitor.Start();

            return Disposable.Create(listener.Abort);
        }