mirror of
https://github.com/clearlinux/folly.git
synced 2026-09-01 11:15:52 +00:00
Move StringHandler to its own file
Summary: Move this from a test to its own file in codec folder Test Plan: already has a unittest fbconfig -r folly/wangle; fbmake runtests Reviewed By: hans@fb.com Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1959152 Signature: t1:1959152:1427935371:9d1338986df97fd94f98ad2bf08c731d229bc2b1
This commit is contained in:
committed by
Viswanath Sivakumar
parent
d887f51c7e
commit
e426c673e9
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2015 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <folly/wangle/channel/ChannelHandler.h>
|
||||
|
||||
namespace folly { namespace wangle {
|
||||
|
||||
/*
|
||||
* StringCodec converts a pipeline from IOBufs to std::strings.
|
||||
*/
|
||||
class StringCodec : public ChannelHandler<IOBufQueue&, std::string,
|
||||
std::string, std::unique_ptr<IOBuf>> {
|
||||
public:
|
||||
typedef typename ChannelHandler<
|
||||
IOBufQueue&, std::string,
|
||||
std::string, std::unique_ptr<IOBuf>>::Context Context;
|
||||
|
||||
void read(Context* ctx, IOBufQueue& q) override {
|
||||
auto buf = q.pop_front();
|
||||
buf->coalesce();
|
||||
std::string data((const char*)buf->data(), buf->length());
|
||||
|
||||
ctx->fireRead(data);
|
||||
}
|
||||
|
||||
Future<void> write(Context* ctx, std::string msg) override {
|
||||
auto buf = IOBuf::copyBuffer(msg.data(), msg.length());
|
||||
return ctx->fireWrite(std::move(buf));
|
||||
}
|
||||
};
|
||||
|
||||
}} // namespace
|
||||
@@ -16,6 +16,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <folly/wangle/channel/ChannelHandler.h>
|
||||
#include <folly/wangle/service/Service.h>
|
||||
|
||||
namespace folly { namespace wangle {
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <folly/wangle/channel/ChannelHandler.h>
|
||||
#include <folly/wangle/service/Service.h>
|
||||
|
||||
namespace folly { namespace wangle {
|
||||
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
*/
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <folly/wangle/service/Service.h>
|
||||
#include <folly/wangle/service/ServerDispatcher.h>
|
||||
#include <folly/wangle/codec/StringCodec.h>
|
||||
#include <folly/wangle/service/ClientDispatcher.h>
|
||||
#include <folly/wangle/service/ServerDispatcher.h>
|
||||
#include <folly/wangle/service/Service.h>
|
||||
|
||||
namespace folly {
|
||||
|
||||
@@ -39,27 +40,6 @@ class EchoIntService : public Service<std::string, int> {
|
||||
}
|
||||
};
|
||||
|
||||
class StringCodec : public ChannelHandler<IOBufQueue&, std::string,
|
||||
std::string, std::unique_ptr<IOBuf>> {
|
||||
public:
|
||||
typedef typename ChannelHandler<
|
||||
IOBufQueue&, std::string,
|
||||
std::string, std::unique_ptr<IOBuf>>::Context Context;
|
||||
|
||||
void read(Context* ctx, IOBufQueue& q) override {
|
||||
auto buf = q.pop_front();
|
||||
buf->coalesce();
|
||||
std::string data((const char*)buf->data(), buf->length());
|
||||
|
||||
ctx->fireRead(data);
|
||||
}
|
||||
|
||||
Future<void> write(Context* ctx, std::string msg) override {
|
||||
auto buf = IOBuf::copyBuffer(msg.data(), msg.length());
|
||||
return ctx->fireWrite(std::move(buf));
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Req, typename Resp>
|
||||
class ServerPipelineFactory
|
||||
: public PipelineFactory<Pipeline> {
|
||||
|
||||
Reference in New Issue
Block a user