static void deliverAllMessages(MetaPool pool, MwsrThreadQueue msgQueue, String filePrefix, ref int msgCnt)
        {
            ThreadQueueItem[] messages = new ThreadQueueItem[16];

            while (true)
            {
                int popped = msgQueue.pop_front(messages);
                if (popped == 0)
                {
                    break;
                }
                for (int i = 0; i < popped; ++i)
                {
                    pool.onMessage(messages[i].msg);
                    ++msgCnt;
                    if (filePrefix != null)
                    {
                        SimpleBuffer buffer   = (SimpleBuffer)messages[i].msg;
                        String       fileName = TestCommon.DataPathPrefix + filePrefix + msgCnt + ".json";

                        // uncomment to update file
                        //buffer.writeToFile(fileName);

                        SimpleBuffer expected = SimpleBuffer.readFromFile(fileName);
                        Assert.True(SimpleBuffer.AreEqualIgnoreEol(expected, buffer));
                    }
                }
            }
        }