コード例 #1
0
    ~TestProxy()
    {
      IMessageQueue::size_type count = 0;

#ifdef _WIN32
      BOOL result = 0;

      MSG msg;
      memset(&msg, 0, sizeof(msg));
      while ((result = ::GetMessage(&msg, NULL, 0, 0)) != 0)
      {
        BOOST_CHECK(-1 != result)

        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);

        count = mThread->getTotalUnprocessedMessages();
        count += mThread->getTotalUnprocessedMessages();
        if (0 == count)
          break;

        memset(&msg, 0, sizeof(msg));
      }
#elif __APPLE__
        count = mThread->getTotalUnprocessedMessages();
        do
        {
            //Run loop to handle sources
            CFRunLoopRunInMode(kCFRunLoopDefaultMode,1,false);
            count = mThread->getTotalUnprocessedMessages();

        } while (count > 0);
#else
      do
      {
        count = mThread->getTotalUnprocessedMessages();
        count += mThreadNeverCalled->getTotalUnprocessedMessages();
        if (0 != count)
          boost::this_thread::yield();
      } while (count > 0);
#endif //_WIN32

      BOOST_EQUAL(0, mThread->getTotalUnprocessedMessages());
      BOOST_EQUAL(0, mThreadNeverCalled->getTotalUnprocessedMessages());

      mThread->waitForShutdown();
      mThreadNeverCalled->waitForShutdown();

      BOOST_EQUAL(getCheck().mCalledFunc3, "func3");
      BOOST_EQUAL(getCheck().mCalledFunc2, 1000);
      BOOST_CHECK(getCheck().mCalledFunc1);
      BOOST_CHECK(getCheck().mDestroyedTestProxyCallback);
    }
コード例 #2
0
    TestProxy()
    {
      mThread = zsLib::MessageQueueThread::singletonUsingCurrentGUIThreadsMessageQueue();
      mThreadNeverCalled = zsLib::MessageQueueThread::singletonUsingCurrentGUIThreadsMessageQueue();

      TestProxyCallbackPtr testObject = TestProxyCallback::create(mThread);

      ITestProxyDelegatePtr delegate = zsLib::Proxy<ITestProxyDelegate>::create(testObject);

      delegate->func1();
      for (int i = 0; i < 1000; ++i)
      {
        delegate->func2();
      }
      zsLib::String str("func3");
      delegate->func3(str);
      str = "bogus3";

      delegate->func4(0xFFFF);
      BOOST_EQUAL(getCheck().mCalledFunc4, 0xFFFF);

      BOOST_EQUAL(delegate->func5(0xABC, 0xDEF), "abc def");
    }
コード例 #3
0
    SocketTest()
    {
      zsLib::MessageQueueThreadPtr thread(zsLib::MessageQueueThread::createBasic());

      SocketServerPtr server(SocketServer::create(thread));

      boost::this_thread::sleep(zsLib::Seconds(1));
      zsLib::IPAddress address = zsLib::IPAddress(zsLib::IPAddress::loopbackV4(), 43217);
      zsLib::SocketPtr socket = zsLib::Socket::createUDP();
      socket->bind(address);

      socket->sendTo(server->getAddress(), (BYTE *)"HELLO1", sizeof("HELLO1") + sizeof(char));
      boost::this_thread::sleep(zsLib::Seconds(5));

      socket->sendTo(server->getAddress(), (BYTE *)"HELLO2", sizeof("HELLO2") + sizeof(char));

      boost::this_thread::sleep(zsLib::Seconds(10));

      BOOST_EQUAL(2, server->mReadReadyCalled);
      BOOST_EQUAL(1, server->mWriteReadyCalled);
      BOOST_EQUAL(0, server->mExceptionCalled);
      BOOST_EQUAL(2, server->mReadData.size());
      BOOST_EQUAL(2, server->mReadAddresses.size());

      BOOST_EQUAL("HELLO1", server->mReadData[0]);
      BOOST_EQUAL("HELLO2", server->mReadData[1]);

      BOOST_CHECK(address == server->mReadAddresses[0]);
      BOOST_CHECK(address == server->mReadAddresses[1]);

      server.reset();

      ULONG count = 0;
      do
      {
        count = thread->getTotalUnprocessedMessages();
        if (0 != count)
          boost::this_thread::yield();
      } while (count > 0);
      thread->waitForShutdown();

      BOOST_EQUAL(zsLib::proxyGetTotalConstructed(), 0);
    }