예제 #1
0
 public Service(Pricefeed.PricefeedClient client)
 {
     if (client == null)
     {
         throw new ArgumentNullException(nameof(client));
     }
     m_client = client;
 }
예제 #2
0
        static void Main(string[] args)
        {
            var channel = new Channel("127.0.0.1:12346", ChannelCredentials.Insecure);
            var client  = new Pricefeed.PricefeedClient(channel);

            long m_receivedMessages = 0;

            var subscriptions =
                Enumerable.Range(0, 1000)
                .Select(i => Task.Run(async() => {
                var subscription = client.Subscribe(new PriceUpdateSubscription());
                try
                {
                    while (await subscription.ResponseStream.MoveNext())
                    {
                        var msg = subscription.ResponseStream.Current;
                        Interlocked.Increment(ref m_receivedMessages);
                    }
                }
                catch (Exception ex)
                {
                    Console.Error.WriteLine(ex);
                }
            }))
                .ToArray();

            var printMessagesPerSecond =
                Task.Run(async() => {
                var waitTime = TimeSpan.FromSeconds(3);
                var watch    = new Stopwatch();
                watch.Start();
                while (true)
                {
                    await Task.Delay(waitTime);
                    var numMessages = Interlocked.Exchange(ref m_receivedMessages, 0);
                    var elapsed     = watch.Elapsed;
                    watch.Restart();

                    Console.WriteLine($"Updates per second: {numMessages/elapsed.TotalSeconds}");
                }
            });

            Console.WriteLine("Client is running!");
            Console.ReadLine();
            channel.ShutdownAsync().Wait();
        }
예제 #3
0
        static void Main(string[] args)
        {
            var channel = new Channel("127.0.0.1:12345", ChannelCredentials.Insecure);
            var client  = new Pricefeed.PricefeedClient(channel);

            var service = new Service(client);
            var server  = new Server {
                Services = { Pricefeed.BindService(service) },
                Ports    = { new ServerPort("localhost", 12346, ServerCredentials.Insecure) },
            };

            server.Start();
            Console.WriteLine("Proxy is running!");
            Console.ReadLine();
            Console.WriteLine("Proxy is shutting down...");
            server.ShutdownAsync().Wait();
        }