Exemplo n.º 1
0
TEST(AsyncTransportTest, getSocketFromWrappedTransport) {
  AsyncSocket::UniquePtr transport(new AsyncSocket());
  auto transportAddr = transport.get();

  test::MockAsyncTransport wrapped1;
  test::MockAsyncTransport wrapped2;

  EXPECT_CALL(wrapped2, getWrappedTransport())
    .WillOnce(Return(&wrapped1));
  EXPECT_CALL(wrapped1, getWrappedTransport())
    .WillOnce(Return(transportAddr));

  auto sock = wrapped2.getUnderlyingTransport<AsyncSocket>();
  ASSERT_EQ(transportAddr, sock);
}
Exemplo n.º 2
0
AsyncSocket* getSocketFromTransport(folly::AsyncTransportWrapper* transport) {
  auto current = transport;
  while (current) {
    auto sock = dynamic_cast<AsyncSocket*>(current);
    if (sock) {
      return sock;
    }
    current = current->getWrappedTransport();
  }
  return nullptr;
}