Commit 98a8a89d authored by Hans Fugal's avatar Hans Fugal Committed by Sara Golemon

Future<Unit> wangle fixup

Summary: Mostly this is `s/(Promise|Future|Try)<void>/\1<Unit>/`

Reviewed By: @djwatson

Differential Revision: D2201272
parent e845ef57
...@@ -27,7 +27,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -27,7 +27,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
} }
typedef size_t Handle; typedef size_t Handle;
typedef std::function<Future<void>()> FutureFunc; typedef std::function<Future<Unit>()> FutureFunc;
Handle add(FutureFunc func, Executor* executor = nullptr) { Handle add(FutureFunc func, Executor* executor = nullptr) {
nodes.emplace_back(std::move(func), executor); nodes.emplace_back(std::move(func), executor);
...@@ -39,9 +39,9 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -39,9 +39,9 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
nodes[a].hasDependents = true; nodes[a].hasDependents = true;
} }
Future<void> go() { Future<Unit> go() {
if (hasCycle()) { if (hasCycle()) {
return makeFuture<void>(std::runtime_error("Cycle in FutureDAG graph")); return makeFuture<Unit>(std::runtime_error("Cycle in FutureDAG graph"));
} }
std::vector<Handle> rootNodes; std::vector<Handle> rootNodes;
std::vector<Handle> leafNodes; std::vector<Handle> leafNodes;
...@@ -54,7 +54,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -54,7 +54,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
} }
} }
auto sinkHandle = add([] { return Future<void>(); }); auto sinkHandle = add([] { return Future<Unit>(); });
for (auto handle : leafNodes) { for (auto handle : leafNodes) {
dependency(handle, sinkHandle); dependency(handle, sinkHandle);
} }
...@@ -65,7 +65,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -65,7 +65,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
} }
for (Handle handle = 0; handle < nodes.size() - 1; handle++) { for (Handle handle = 0; handle < nodes.size() - 1; handle++) {
std::vector<Future<void>> dependencies; std::vector<Future<Unit>> dependencies;
for (auto depHandle : nodes[handle].dependencies) { for (auto depHandle : nodes[handle].dependencies) {
dependencies.push_back(nodes[depHandle].promise.getFuture()); dependencies.push_back(nodes[depHandle].promise.getFuture());
} }
...@@ -74,7 +74,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -74,7 +74,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
.via(nodes[handle].executor) .via(nodes[handle].executor)
.then([this, handle] { .then([this, handle] {
nodes[handle].func() nodes[handle].func()
.then([this, handle] (Try<void>&& t) { .then([this, handle] (Try<Unit>&& t) {
nodes[handle].promise.setTry(std::move(t)); nodes[handle].promise.setTry(std::move(t));
}); });
}) })
...@@ -139,7 +139,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> { ...@@ -139,7 +139,7 @@ class FutureDAG : public std::enable_shared_from_this<FutureDAG> {
FutureFunc func{nullptr}; FutureFunc func{nullptr};
Executor* executor{nullptr}; Executor* executor{nullptr};
SharedPromise<void> promise; SharedPromise<Unit> promise;
std::vector<Handle> dependencies; std::vector<Handle> dependencies;
bool hasDependents{false}; bool hasDependents{false};
bool visited{false}; bool visited{false};
......
...@@ -53,7 +53,7 @@ struct FutureDAGTest : public testing::Test { ...@@ -53,7 +53,7 @@ struct FutureDAGTest : public testing::Test {
explicit TestNode(FutureDAGTest* test) { explicit TestNode(FutureDAGTest* test) {
func = [this, test] { func = [this, test] {
test->order.push_back(handle); test->order.push_back(handle);
return Future<void>(); return Future<Unit>();
}; };
handle = test->dag->add(func); handle = test->dag->add(func);
} }
...@@ -150,7 +150,7 @@ FutureDAG::FutureFunc makeFutureFunc = []{ ...@@ -150,7 +150,7 @@ FutureDAG::FutureFunc makeFutureFunc = []{
}; };
FutureDAG::FutureFunc throwFunc = []{ FutureDAG::FutureFunc throwFunc = []{
return makeFuture<void>(std::runtime_error("oops")); return makeFuture<Unit>(std::runtime_error("oops"));
}; };
TEST_F(FutureDAGTest, ThrowBegin) { TEST_F(FutureDAGTest, ThrowBegin) {
...@@ -193,11 +193,11 @@ TEST_F(FutureDAGTest, Cycle3) { ...@@ -193,11 +193,11 @@ TEST_F(FutureDAGTest, Cycle3) {
TEST_F(FutureDAGTest, DestroyBeforeComplete) { TEST_F(FutureDAGTest, DestroyBeforeComplete) {
auto barrier = std::make_shared<boost::barrier>(2); auto barrier = std::make_shared<boost::barrier>(2);
Future<void> f; Future<Unit> f;
{ {
auto dag = FutureDAG::create(); auto dag = FutureDAG::create();
auto h1 = dag->add([barrier] { auto h1 = dag->add([barrier] {
auto p = std::make_shared<Promise<void>>(); auto p = std::make_shared<Promise<Unit>>();
std::thread t([p, barrier]{ std::thread t([p, barrier]{
barrier->wait(); barrier->wait();
p->setValue(); p->setValue();
......
...@@ -78,7 +78,7 @@ class AsyncSocketHandler ...@@ -78,7 +78,7 @@ class AsyncSocketHandler
detachReadCallback(); detachReadCallback();
} }
folly::Future<void> write( folly::Future<Unit> write(
Context* ctx, Context* ctx,
std::unique_ptr<folly::IOBuf> buf) override { std::unique_ptr<folly::IOBuf> buf) override {
if (UNLIKELY(!buf)) { if (UNLIKELY(!buf)) {
...@@ -87,7 +87,7 @@ class AsyncSocketHandler ...@@ -87,7 +87,7 @@ class AsyncSocketHandler
if (!socket_->good()) { if (!socket_->good()) {
VLOG(5) << "socket is closed in write()"; VLOG(5) << "socket is closed in write()";
return folly::makeFuture<void>(AsyncSocketException( return folly::makeFuture<Unit>(AsyncSocketException(
AsyncSocketException::AsyncSocketExceptionType::NOT_OPEN, AsyncSocketException::AsyncSocketExceptionType::NOT_OPEN,
"socket is closed in write()")); "socket is closed in write()"));
} }
...@@ -98,7 +98,7 @@ class AsyncSocketHandler ...@@ -98,7 +98,7 @@ class AsyncSocketHandler
return future; return future;
}; };
folly::Future<void> close(Context* ctx) override { folly::Future<Unit> close(Context* ctx) override {
if (socket_) { if (socket_) {
detachReadCallback(); detachReadCallback();
socket_->closeNow(); socket_->closeNow();
...@@ -153,7 +153,7 @@ class AsyncSocketHandler ...@@ -153,7 +153,7 @@ class AsyncSocketHandler
private: private:
friend class AsyncSocketHandler; friend class AsyncSocketHandler;
folly::Promise<void> promise_; folly::Promise<Unit> promise_;
}; };
folly::IOBufQueue bufQueue_{folly::IOBufQueue::cacheChainLength()}; folly::IOBufQueue bufQueue_{folly::IOBufQueue::cacheChainLength()};
......
...@@ -19,10 +19,10 @@ namespace folly { namespace wangle { ...@@ -19,10 +19,10 @@ namespace folly { namespace wangle {
class EventBaseHandler : public OutboundBytesToBytesHandler { class EventBaseHandler : public OutboundBytesToBytesHandler {
public: public:
folly::Future<void> write( folly::Future<Unit> write(
Context* ctx, Context* ctx,
std::unique_ptr<folly::IOBuf> buf) override { std::unique_ptr<folly::IOBuf> buf) override {
folly::Future<void> retval; folly::Future<Unit> retval;
DCHECK(ctx->getTransport()); DCHECK(ctx->getTransport());
DCHECK(ctx->getTransport()->getEventBase()); DCHECK(ctx->getTransport()->getEventBase());
ctx->getTransport()->getEventBase()->runImmediatelyOrRunInEventBaseThreadAndWait([&](){ ctx->getTransport()->getEventBase()->runImmediatelyOrRunInEventBaseThreadAndWait([&](){
...@@ -31,10 +31,10 @@ class EventBaseHandler : public OutboundBytesToBytesHandler { ...@@ -31,10 +31,10 @@ class EventBaseHandler : public OutboundBytesToBytesHandler {
return retval; return retval;
} }
Future<void> close(Context* ctx) override { Future<Unit> close(Context* ctx) override {
DCHECK(ctx->getTransport()); DCHECK(ctx->getTransport());
DCHECK(ctx->getTransport()->getEventBase()); DCHECK(ctx->getTransport()->getEventBase());
Future<void> retval; Future<Unit> retval;
ctx->getTransport()->getEventBase()->runImmediatelyOrRunInEventBaseThreadAndWait([&](){ ctx->getTransport()->getEventBase()->runImmediatelyOrRunInEventBaseThreadAndWait([&](){
retval = ctx->fireClose(); retval = ctx->fireClose();
}); });
......
...@@ -30,7 +30,7 @@ class FileRegion { ...@@ -30,7 +30,7 @@ class FileRegion {
FileRegion(int fd, off_t offset, size_t count) FileRegion(int fd, off_t offset, size_t count)
: fd_(fd), offset_(offset), count_(count) {} : fd_(fd), offset_(offset), count_(count) {}
Future<void> transferTo(std::shared_ptr<AsyncTransport> transport) { Future<Unit> transferTo(std::shared_ptr<AsyncTransport> transport) {
auto socket = std::dynamic_pointer_cast<AsyncSocket>( auto socket = std::dynamic_pointer_cast<AsyncSocket>(
transport); transport);
CHECK(socket); CHECK(socket);
...@@ -56,7 +56,7 @@ class FileRegion { ...@@ -56,7 +56,7 @@ class FileRegion {
} }
friend class FileRegion; friend class FileRegion;
folly::Promise<void> promise_; folly::Promise<Unit> promise_;
}; };
const int fd_; const int fd_;
......
...@@ -71,8 +71,8 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> { ...@@ -71,8 +71,8 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
ctx->fireTransportInactive(); ctx->fireTransportInactive();
} }
virtual Future<void> write(Context* ctx, Win msg) = 0; virtual Future<Unit> write(Context* ctx, Win msg) = 0;
virtual Future<void> close(Context* ctx) { virtual Future<Unit> close(Context* ctx) {
return ctx->fireClose(); return ctx->fireClose();
} }
...@@ -89,15 +89,15 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> { ...@@ -89,15 +89,15 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
virtual void channelWritabilityChanged(HandlerContext* ctx) {} virtual void channelWritabilityChanged(HandlerContext* ctx) {}
// outbound // outbound
virtual Future<void> bind( virtual Future<Unit> bind(
HandlerContext* ctx, HandlerContext* ctx,
SocketAddress localAddress) {} SocketAddress localAddress) {}
virtual Future<void> connect( virtual Future<Unit> connect(
HandlerContext* ctx, HandlerContext* ctx,
SocketAddress remoteAddress, SocketAddress localAddress) {} SocketAddress remoteAddress, SocketAddress localAddress) {}
virtual Future<void> disconnect(HandlerContext* ctx) {} virtual Future<Unit> disconnect(HandlerContext* ctx) {}
virtual Future<void> deregister(HandlerContext* ctx) {} virtual Future<Unit> deregister(HandlerContext* ctx) {}
virtual Future<void> read(HandlerContext* ctx) {} virtual Future<Unit> read(HandlerContext* ctx) {}
virtual void flush(HandlerContext* ctx) {} virtual void flush(HandlerContext* ctx) {}
*/ */
}; };
...@@ -141,8 +141,8 @@ class OutboundHandler : public HandlerBase<OutboundHandlerContext<Wout>> { ...@@ -141,8 +141,8 @@ class OutboundHandler : public HandlerBase<OutboundHandlerContext<Wout>> {
typedef OutboundHandlerContext<Wout> Context; typedef OutboundHandlerContext<Wout> Context;
virtual ~OutboundHandler() = default; virtual ~OutboundHandler() = default;
virtual Future<void> write(Context* ctx, Win msg) = 0; virtual Future<Unit> write(Context* ctx, Win msg) = 0;
virtual Future<void> close(Context* ctx) { virtual Future<Unit> close(Context* ctx) {
return ctx->fireClose(); return ctx->fireClose();
} }
}; };
...@@ -156,7 +156,7 @@ class HandlerAdapter : public Handler<R, R, W, W> { ...@@ -156,7 +156,7 @@ class HandlerAdapter : public Handler<R, R, W, W> {
ctx->fireRead(std::forward<R>(msg)); ctx->fireRead(std::forward<R>(msg));
} }
Future<void> write(Context* ctx, W msg) override { Future<Unit> write(Context* ctx, W msg) override {
return ctx->fireWrite(std::forward<W>(msg)); return ctx->fireWrite(std::forward<W>(msg));
} }
}; };
......
...@@ -55,8 +55,8 @@ template <class Out> ...@@ -55,8 +55,8 @@ template <class Out>
class OutboundLink { class OutboundLink {
public: public:
virtual ~OutboundLink() = default; virtual ~OutboundLink() = default;
virtual Future<void> write(Out msg) = 0; virtual Future<Unit> write(Out msg) = 0;
virtual Future<void> close() = 0; virtual Future<Unit> close() = 0;
}; };
template <class H, class Context> template <class H, class Context>
...@@ -198,7 +198,7 @@ class ContextImpl ...@@ -198,7 +198,7 @@ class ContextImpl
} }
} }
Future<void> fireWrite(Wout msg) override { Future<Unit> fireWrite(Wout msg) override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
if (this->nextOut_) { if (this->nextOut_) {
return this->nextOut_->write(std::forward<Wout>(msg)); return this->nextOut_->write(std::forward<Wout>(msg));
...@@ -208,7 +208,7 @@ class ContextImpl ...@@ -208,7 +208,7 @@ class ContextImpl
} }
} }
Future<void> fireClose() override { Future<Unit> fireClose() override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
if (this->nextOut_) { if (this->nextOut_) {
return this->nextOut_->close(); return this->nextOut_->close();
...@@ -267,12 +267,12 @@ class ContextImpl ...@@ -267,12 +267,12 @@ class ContextImpl
} }
// OutboundLink overrides // OutboundLink overrides
Future<void> write(Win msg) override { Future<Unit> write(Win msg) override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
return this->handler_->write(this, std::forward<Win>(msg)); return this->handler_->write(this, std::forward<Win>(msg));
} }
Future<void> close() override { Future<Unit> close() override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
return this->handler_->close(this); return this->handler_->close(this);
} }
...@@ -410,7 +410,7 @@ class OutboundContextImpl ...@@ -410,7 +410,7 @@ class OutboundContextImpl
~OutboundContextImpl() = default; ~OutboundContextImpl() = default;
// OutboundHandlerContext overrides // OutboundHandlerContext overrides
Future<void> fireWrite(Wout msg) override { Future<Unit> fireWrite(Wout msg) override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
if (this->nextOut_) { if (this->nextOut_) {
return this->nextOut_->write(std::forward<Wout>(msg)); return this->nextOut_->write(std::forward<Wout>(msg));
...@@ -420,7 +420,7 @@ class OutboundContextImpl ...@@ -420,7 +420,7 @@ class OutboundContextImpl
} }
} }
Future<void> fireClose() override { Future<Unit> fireClose() override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
if (this->nextOut_) { if (this->nextOut_) {
return this->nextOut_->close(); return this->nextOut_->close();
...@@ -435,12 +435,12 @@ class OutboundContextImpl ...@@ -435,12 +435,12 @@ class OutboundContextImpl
} }
// OutboundLink overrides // OutboundLink overrides
Future<void> write(Win msg) override { Future<Unit> write(Win msg) override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
return this->handler_->write(this, std::forward<Win>(msg)); return this->handler_->write(this, std::forward<Win>(msg));
} }
Future<void> close() override { Future<Unit> close() override {
DestructorGuard dg(this->pipeline_); DestructorGuard dg(this->pipeline_);
return this->handler_->close(this); return this->handler_->close(this);
} }
......
...@@ -35,8 +35,8 @@ class HandlerContext { ...@@ -35,8 +35,8 @@ class HandlerContext {
virtual void fireTransportActive() = 0; virtual void fireTransportActive() = 0;
virtual void fireTransportInactive() = 0; virtual void fireTransportInactive() = 0;
virtual Future<void> fireWrite(Out msg) = 0; virtual Future<Unit> fireWrite(Out msg) = 0;
virtual Future<void> fireClose() = 0; virtual Future<Unit> fireClose() = 0;
virtual PipelineBase* getPipeline() = 0; virtual PipelineBase* getPipeline() = 0;
std::shared_ptr<AsyncTransport> getTransport() { std::shared_ptr<AsyncTransport> getTransport() {
...@@ -88,8 +88,8 @@ class OutboundHandlerContext { ...@@ -88,8 +88,8 @@ class OutboundHandlerContext {
public: public:
virtual ~OutboundHandlerContext() = default; virtual ~OutboundHandlerContext() = default;
virtual Future<void> fireWrite(Out msg) = 0; virtual Future<Unit> fireWrite(Out msg) = 0;
virtual Future<void> fireClose() = 0; virtual Future<Unit> fireClose() = 0;
virtual PipelineBase* getPipeline() = 0; virtual PipelineBase* getPipeline() = 0;
std::shared_ptr<AsyncTransport> getTransport() { std::shared_ptr<AsyncTransport> getTransport() {
......
...@@ -34,7 +34,7 @@ namespace folly { namespace wangle { ...@@ -34,7 +34,7 @@ namespace folly { namespace wangle {
class OutputBufferingHandler : public OutboundBytesToBytesHandler, class OutputBufferingHandler : public OutboundBytesToBytesHandler,
protected EventBase::LoopCallback { protected EventBase::LoopCallback {
public: public:
Future<void> write(Context* ctx, std::unique_ptr<IOBuf> buf) override { Future<Unit> write(Context* ctx, std::unique_ptr<IOBuf> buf) override {
CHECK(buf); CHECK(buf);
if (!queueSends_) { if (!queueSends_) {
return ctx->fireWrite(std::move(buf)); return ctx->fireWrite(std::move(buf));
...@@ -54,15 +54,15 @@ class OutputBufferingHandler : public OutboundBytesToBytesHandler, ...@@ -54,15 +54,15 @@ class OutputBufferingHandler : public OutboundBytesToBytesHandler,
} }
void runLoopCallback() noexcept override { void runLoopCallback() noexcept override {
MoveWrapper<SharedPromise<void>> sharedPromise; MoveWrapper<SharedPromise<Unit>> sharedPromise;
std::swap(*sharedPromise, sharedPromise_); std::swap(*sharedPromise, sharedPromise_);
getContext()->fireWrite(std::move(sends_)) getContext()->fireWrite(std::move(sends_))
.then([sharedPromise](Try<void> t) mutable { .then([sharedPromise](Try<Unit> t) mutable {
sharedPromise->setTry(std::move(t)); sharedPromise->setTry(std::move(t));
}); });
} }
Future<void> close(Context* ctx) override { Future<Unit> close(Context* ctx) override {
if (isLoopCallbackScheduled()) { if (isLoopCallbackScheduled()) {
cancelLoopCallback(); cancelLoopCallback();
} }
...@@ -72,11 +72,11 @@ class OutputBufferingHandler : public OutboundBytesToBytesHandler, ...@@ -72,11 +72,11 @@ class OutputBufferingHandler : public OutboundBytesToBytesHandler,
folly::make_exception_wrapper<std::runtime_error>( folly::make_exception_wrapper<std::runtime_error>(
"close() called while sends still pending")); "close() called while sends still pending"));
sends_.reset(); sends_.reset();
sharedPromise_ = SharedPromise<void>(); sharedPromise_ = SharedPromise<Unit>();
return ctx->fireClose(); return ctx->fireClose();
} }
SharedPromise<void> sharedPromise_; SharedPromise<Unit> sharedPromise_;
std::unique_ptr<IOBuf> sends_{nullptr}; std::unique_ptr<IOBuf> sends_{nullptr};
bool queueSends_{true}; bool queueSends_{true};
}; };
......
...@@ -204,7 +204,7 @@ Pipeline<R, W>::readException(exception_wrapper e) { ...@@ -204,7 +204,7 @@ Pipeline<R, W>::readException(exception_wrapper e) {
template <class R, class W> template <class R, class W>
template <class T> template <class T>
typename std::enable_if<!std::is_same<T, Unit>::value, Future<void>>::type typename std::enable_if<!std::is_same<T, Unit>::value, Future<Unit>>::type
Pipeline<R, W>::write(W msg) { Pipeline<R, W>::write(W msg) {
if (!back_) { if (!back_) {
throw std::invalid_argument("write(): no outbound handler in Pipeline"); throw std::invalid_argument("write(): no outbound handler in Pipeline");
...@@ -214,7 +214,7 @@ Pipeline<R, W>::write(W msg) { ...@@ -214,7 +214,7 @@ Pipeline<R, W>::write(W msg) {
template <class R, class W> template <class R, class W>
template <class T> template <class T>
typename std::enable_if<!std::is_same<T, Unit>::value, Future<void>>::type typename std::enable_if<!std::is_same<T, Unit>::value, Future<Unit>>::type
Pipeline<R, W>::close() { Pipeline<R, W>::close() {
if (!back_) { if (!back_) {
throw std::invalid_argument("close(): no outbound handler in Pipeline"); throw std::invalid_argument("close(): no outbound handler in Pipeline");
......
...@@ -168,11 +168,11 @@ class Pipeline : public PipelineBase { ...@@ -168,11 +168,11 @@ class Pipeline : public PipelineBase {
transportInactive(); transportInactive();
template <class T = W> template <class T = W>
typename std::enable_if<!std::is_same<T, Unit>::value, Future<void>>::type typename std::enable_if<!std::is_same<T, Unit>::value, Future<Unit>>::type
write(W msg); write(W msg);
template <class T = W> template <class T = W>
typename std::enable_if<!std::is_same<T, Unit>::value, Future<void>>::type typename std::enable_if<!std::is_same<T, Unit>::value, Future<Unit>>::type
close(); close();
void finalize() override; void finalize() override;
......
...@@ -89,7 +89,7 @@ TEST_F(FileRegionTest, Repeated) { ...@@ -89,7 +89,7 @@ TEST_F(FileRegionTest, Repeated) {
int sendCount = 1000; int sendCount = 1000;
FileRegion fileRegion(fd, 0, count); FileRegion fileRegion(fd, 0, count);
std::vector<Future<void>> fs; std::vector<Future<Unit>> fs;
for (int i = 0; i < sendCount; i++) { for (int i = 0; i < sendCount; i++) {
fs.push_back(fileRegion.transferTo(socket)); fs.push_back(fileRegion.transferTo(socket));
} }
......
...@@ -45,13 +45,13 @@ class MockHandler : public Handler<Rin, Rout, Win, Wout> { ...@@ -45,13 +45,13 @@ class MockHandler : public Handler<Rin, Rout, Win, Wout> {
read_(ctx, msg); read_(ctx, msg);
} }
Future<void> write(Context* ctx, Win msg) override { Future<Unit> write(Context* ctx, Win msg) override {
return makeFutureWith([&](){ return makeFutureWith([&](){
write_(ctx, msg); write_(ctx, msg);
}); });
} }
Future<void> close(Context* ctx) override { Future<Unit> close(Context* ctx) override {
return makeFutureWith([&](){ return makeFutureWith([&](){
close_(ctx); close_(ctx);
}); });
......
...@@ -266,7 +266,7 @@ class ConcreteHandler : public Handler<Rin, Rout, Win, Wout> { ...@@ -266,7 +266,7 @@ class ConcreteHandler : public Handler<Rin, Rout, Win, Wout> {
typedef typename Handler<Rin, Rout, Win, Wout>::Context Context; typedef typename Handler<Rin, Rout, Win, Wout>::Context Context;
public: public:
void read(Context* ctx, Rin msg) override {} void read(Context* ctx, Rin msg) override {}
Future<void> write(Context* ctx, Win msg) override { return makeFuture(); } Future<Unit> write(Context* ctx, Win msg) override { return makeFuture(); }
}; };
typedef HandlerAdapter<std::string, std::string> StringHandler; typedef HandlerAdapter<std::string, std::string> StringHandler;
......
...@@ -44,7 +44,7 @@ class FrameTester ...@@ -44,7 +44,7 @@ class FrameTester
class BytesReflector class BytesReflector
: public BytesToBytesHandler { : public BytesToBytesHandler {
public: public:
Future<void> write(Context* ctx, std::unique_ptr<IOBuf> buf) override { Future<Unit> write(Context* ctx, std::unique_ptr<IOBuf> buf) override {
IOBufQueue q_(IOBufQueue::cacheChainLength()); IOBufQueue q_(IOBufQueue::cacheChainLength());
q_.append(std::move(buf)); q_.append(std::move(buf));
ctx->fireRead(q_); ctx->fireRead(q_);
......
...@@ -32,7 +32,7 @@ LengthFieldPrepender::LengthFieldPrepender( ...@@ -32,7 +32,7 @@ LengthFieldPrepender::LengthFieldPrepender(
lengthFieldLength == 8 ); lengthFieldLength == 8 );
} }
Future<void> LengthFieldPrepender::write( Future<Unit> LengthFieldPrepender::write(
Context* ctx, std::unique_ptr<IOBuf> buf) { Context* ctx, std::unique_ptr<IOBuf> buf) {
int length = lengthAdjustment_ + buf->computeChainDataLength(); int length = lengthAdjustment_ + buf->computeChainDataLength();
if (lengthIncludesLengthField_) { if (lengthIncludesLengthField_) {
......
...@@ -55,7 +55,7 @@ class LengthFieldPrepender ...@@ -55,7 +55,7 @@ class LengthFieldPrepender
bool lengthIncludesLengthField = false, bool lengthIncludesLengthField = false,
bool networkByteOrder = true); bool networkByteOrder = true);
Future<void> write(Context* ctx, std::unique_ptr<IOBuf> buf); Future<Unit> write(Context* ctx, std::unique_ptr<IOBuf> buf);
private: private:
int lengthFieldLength_; int lengthFieldLength_;
......
...@@ -37,7 +37,7 @@ class StringCodec : public Handler<std::unique_ptr<IOBuf>, std::string, ...@@ -37,7 +37,7 @@ class StringCodec : public Handler<std::unique_ptr<IOBuf>, std::string,
ctx->fireRead(data); ctx->fireRead(data);
} }
Future<void> write(Context* ctx, std::string msg) override { Future<Unit> write(Context* ctx, std::string msg) override {
auto buf = IOBuf::copyBuffer(msg.data(), msg.length()); auto buf = IOBuf::copyBuffer(msg.data(), msg.length());
return ctx->fireWrite(std::move(buf)); return ctx->fireWrite(std::move(buf));
} }
......
...@@ -62,9 +62,9 @@ class FutureExecutor : public ExecutorImpl { ...@@ -62,9 +62,9 @@ class FutureExecutor : public ExecutorImpl {
*/ */
template <typename F> template <typename F>
typename std::enable_if<!isFuture<typename std::result_of<F()>::type>::value, typename std::enable_if<!isFuture<typename std::result_of<F()>::type>::value,
Future<typename std::result_of<F()>::type>>::type Future<typename Unit::Lift<typename std::result_of<F()>::type>::type>>::type
addFuture(F func) { addFuture(F func) {
typedef typename std::result_of<F()>::type T; using T = typename Unit::Lift<typename std::result_of<F()>::type>::type;
Promise<T> promise; Promise<T> promise;
auto future = promise.getFuture(); auto future = promise.getFuture();
auto movePromise = folly::makeMoveWrapper(std::move(promise)); auto movePromise = folly::makeMoveWrapper(std::move(promise));
......
...@@ -255,17 +255,17 @@ static void futureExecutor() { ...@@ -255,17 +255,17 @@ static void futureExecutor() {
EXPECT_EQ(100, t.value()); EXPECT_EQ(100, t.value());
}); });
fe.addFuture([] () { return makeFuture(); }).then( fe.addFuture([] () { return makeFuture(); }).then(
[&] (Try<void>&& t) { [&] (Try<Unit>&& t) {
c++; c++;
EXPECT_NO_THROW(t.value()); EXPECT_NO_THROW(t.value());
}); });
fe.addFuture([] () { return; }).then( fe.addFuture([] () { return; }).then(
[&] (Try<void>&& t) { [&] (Try<Unit>&& t) {
c++; c++;
EXPECT_NO_THROW(t.value()); EXPECT_NO_THROW(t.value());
}); });
fe.addFuture([] () { throw std::runtime_error("oops"); }).then( fe.addFuture([] () { throw std::runtime_error("oops"); }).then(
[&] (Try<void>&& t) { [&] (Try<Unit>&& t) {
c++; c++;
EXPECT_THROW(t.value(), std::runtime_error); EXPECT_THROW(t.value(), std::runtime_error);
}); });
......
...@@ -68,11 +68,11 @@ class SerialClientDispatcher : public HandlerAdapter<Req, Resp> ...@@ -68,11 +68,11 @@ class SerialClientDispatcher : public HandlerAdapter<Req, Resp>
return f; return f;
} }
virtual Future<void> close() override { virtual Future<Unit> close() override {
return HandlerAdapter<Req, Resp>::close(nullptr); return HandlerAdapter<Req, Resp>::close(nullptr);
} }
virtual Future<void> close(Context* ctx) override { virtual Future<Unit> close(Context* ctx) override {
return HandlerAdapter<Req, Resp>::close(ctx); return HandlerAdapter<Req, Resp>::close(ctx);
} }
......
...@@ -34,7 +34,7 @@ class Service { ...@@ -34,7 +34,7 @@ class Service {
public: public:
virtual Future<Resp> operator()(Req request) = 0; virtual Future<Resp> operator()(Req request) = 0;
virtual ~Service() = default; virtual ~Service() = default;
virtual Future<void> close() { virtual Future<Unit> close() {
return makeFuture(); return makeFuture();
} }
virtual bool isAvailable() { virtual bool isAvailable() {
...@@ -69,7 +69,7 @@ class ServiceFilter : public Service<ReqA, RespA> { ...@@ -69,7 +69,7 @@ class ServiceFilter : public Service<ReqA, RespA> {
: service_(service) {} : service_(service) {}
virtual ~ServiceFilter() = default; virtual ~ServiceFilter() = default;
virtual Future<void> close() override { virtual Future<Unit> close() override {
return service_->close(); return service_->close();
} }
......
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