本文整理汇总了C++中TestThriftServerFactory::defaultWriteTransform方法的典型用法代码示例。如果您正苦于以下问题:C++ TestThriftServerFactory::defaultWriteTransform方法的具体用法?C++ TestThriftServerFactory::defaultWriteTransform怎么用?C++ TestThriftServerFactory::defaultWriteTransform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TestThriftServerFactory
的用法示例。
在下文中一共展示了TestThriftServerFactory::defaultWriteTransform方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Callback
TEST(ThriftServer, DefaultCompressionTest) {
/* Tests the functionality of default transforms, ensuring the server properly
applies them even if the client does not apply any transforms. */
class Callback : public RequestCallback {
public:
explicit Callback(bool compressionExpected, uint16_t expectedTransform)
: compressionExpected_(compressionExpected),
expectedTransform_(expectedTransform) {}
private:
void requestSent() override {}
void replyReceived(ClientReceiveState&& state) override {
auto trans = state.header()->getTransforms();
if (compressionExpected_) {
EXPECT_EQ(trans.size(), 1);
for (auto& tran : trans) {
EXPECT_EQ(tran, expectedTransform_);
}
} else {
EXPECT_EQ(trans.size(), 0);
}
}
void requestError(ClientReceiveState&& state) override {
std::rethrow_exception(state.exception());
}
bool compressionExpected_;
uint16_t expectedTransform_;
};
TestThriftServerFactory<TestInterface> factory;
factory.minCompressBytes(1);
factory.defaultWriteTransform(
apache::thrift::transport::THeader::ZLIB_TRANSFORM);
auto server = std::static_pointer_cast<ThriftServer>(factory.create());
ScopedServerThread sst(server);
folly::EventBase base;
// First, with minCompressBytes set low, ensure we compress even though the
// client did not compress
std::shared_ptr<TAsyncSocket> socket(
TAsyncSocket::newSocket(&base, *sst.getAddress()));
TestServiceAsyncClient client(HeaderClientChannel::newChannel(socket));
client.sendResponse(
folly::make_unique<Callback>(
true, apache::thrift::transport::THeader::ZLIB_TRANSFORM
),
64
);
base.loop();
// Ensure that client transforms take precedence
auto channel =
boost::polymorphic_downcast<HeaderClientChannel*>(client.getChannel());
channel->setTransform(apache::thrift::transport::THeader::SNAPPY_TRANSFORM);
client.sendResponse(
folly::make_unique<Callback>(
true, apache::thrift::transport::THeader::SNAPPY_TRANSFORM
),
64
);
base.loop();
// Ensure that minCompressBytes still works with default transforms. We
// Do not expect compression
server->setMinCompressBytes(1000);
std::shared_ptr<TAsyncSocket> socket2(
TAsyncSocket::newSocket(&base, *sst.getAddress()));
TestServiceAsyncClient client2(HeaderClientChannel::newChannel(socket2));
client2.sendResponse(folly::make_unique<Callback>(false, 0), 64);
base.loop();
}