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:
Dave Watson
2015-04-09 20:35:14 -07:00
committed by Viswanath Sivakumar
parent d887f51c7e
commit e426c673e9
4 changed files with 52 additions and 23 deletions
+47
View File
@@ -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
+1
View File
@@ -16,6 +16,7 @@
#pragma once
#include <folly/wangle/channel/ChannelHandler.h>
#include <folly/wangle/service/Service.h>
namespace folly { namespace wangle {
+1
View File
@@ -16,6 +16,7 @@
#pragma once
#include <folly/wangle/channel/ChannelHandler.h>
#include <folly/wangle/service/Service.h>
namespace folly { namespace wangle {
+3 -23
View File
@@ -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> {