示例#1
0
        public void testPolling()
        {
            PollingClient client = new PollingClient(SUB_PORT);

            try
            {
                TopicPoller poller  = client.subscribe(REMOTE_HOST, REMOTE_PORT, REMOTE_TABLE_NAME, 0);
                int         count   = 0;
                bool        started = false;
                long        start   = DateTime.Now.Ticks;
                long        last    = DateTime.Now.Ticks;
                while (true)
                {
                    List <IMessage> messages = poller.poll(TIMEOUT);
                    if (messages == null || messages.Count == 0)
                    {
                        start = DateTime.Now.Ticks;
                        continue;
                    }
                    int messageCount = messages.Count;
                    if (messageCount > 0 && !started)
                    {
                        started = true;
                        start   = DateTime.Now.Ticks;
                    }
                    count += messageCount;
                    foreach (IMessage message in messages)
                    {
                        string symbol = message.getEntity(0).getString();
                        string price  = message.getEntity(1).getString();
                        string size   = message.getEntity(2).getString();
                        string ex     = message.getEntity(3).getString();
                    }

                    if (messageCount > 0)
                    {
                        if (((BasicInt)messages.Last().getEntity(4)).getValue() == -1)
                        {
                            break;
                        }
                    }
                    long now = DateTime.Now.Ticks;
                    if (now - last >= 1000)
                    {
                        long batchEnd = DateTime.Now.Ticks;
                        Console.WriteLine(count + " messages took " + ((batchEnd - start) / 1000.0) + " ms, throghput: " + count / ((batchEnd - start) / 1000000.0) + " messages/s");
                        last = now;
                    }
                }
                long end = DateTime.Now.Ticks;
                Console.WriteLine(count + " messages took " + ((end - start) / 1000.0) + " ms, throghput: " + count / ((end - start) / 1000000.0) + " messages/s");
                System.Environment.Exit(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.Write(ex.StackTrace);
                Assert.Fail(ex.Message);
            }
        }
示例#2
0
    public virtual void PollingClient()
    {
        PollingClient client = new PollingClient(subscribePORT);

        try
        {
            TopicPoller poller1 = client.subscribe(HOST, PORT, "Trades");
            int         count   = 0;
            bool        started = false;
            long        start   = DateTime.Now.Ticks;
            long        last    = DateTime.Now.Ticks;
            while (true)
            {
                List <IMessage> msgs = poller1.poll(1000);
                if (msgs == null)
                {
                    count = 0;
                    start = DateTime.Now.Ticks;
                    continue;
                }
                if (msgs.Count > 0 && started == false)
                {
                    started = true;
                    start   = DateTime.Now.Ticks;
                }

                count += msgs.Count;
                for (int i = 0; i < msgs.Count; ++i)
                {
                    BasicTime time = (BasicTime)msgs[i].getEntity(1);
                    Console.Write("time:" + time + " ");
                    string symbol = msgs[i].getEntity(2).getString();
                    Console.Write("sym:" + symbol + " ");
                    int qty = ((BasicInt)msgs[i].getEntity(3)).getValue();
                    Console.Write("qty:" + qty + " ");
                    double?price = ((BasicDouble)msgs[i].getEntity(4)).getValue();
                    Console.Write("price:" + price + " \n");
                }
                if (msgs.Count > 0)
                {
                    if (((BasicInt)msgs[msgs.Count - 1].getEntity(0)).getValue() == -1)
                    {
                        break;
                    }
                }
                long now = DateTime.Now.Ticks;
                if (now - last >= 1000)
                {
                    long endtime = DateTime.Now.Ticks;
                    Console.WriteLine(count + " messages took " + (endtime - start) + "ms, throughput: " + count / ((endtime - start) / 1000.0) + " messages/s");
                    last = now;
                }
            }
            long end = DateTime.Now.Ticks;
            Console.WriteLine(count + " messages took " + (end - start) + "ms, throughput: " + count / ((end - start) / 1000.0) + " messages/s");
            client.unsubscribe(HOST, PORT, "Trades");
        }
        catch (IOException e)
        {
            Console.WriteLine(e.ToString());
            Console.Write(e.StackTrace);
        }
        Environment.Exit(0);
    }