Commit e426c673 authored by Dave Watson's avatar Dave Watson Committed by Viswanath Sivakumar

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
parent d887f51c
/*
* 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> {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment