Future<Unit> wangle fixup
[folly.git] / folly / wangle / channel / Handler.h
index 676c2fabf3783e4ee14e6d643cb3d7b8255ab672..127ac97314648ec462fb092ab34109e8376eebaf 100644 (file)
@@ -26,13 +26,10 @@ namespace folly { namespace wangle {
 template <class Context>
 class HandlerBase {
  public:
-  virtual ~HandlerBase() {}
+  virtual ~HandlerBase() = default;
 
   virtual void attachPipeline(Context* ctx) {}
-  virtual void attachTransport(Context* ctx) {}
-
   virtual void detachPipeline(Context* ctx) {}
-  virtual void detachTransport(Context* ctx) {}
 
   Context* getContext() {
     if (attachCount_ != 1) {
@@ -58,7 +55,7 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
   typedef Win win;
   typedef Wout wout;
   typedef HandlerContext<Rout, Wout> Context;
-  virtual ~Handler() {}
+  virtual ~Handler() = default;
 
   virtual void read(Context* ctx, Rin msg) = 0;
   virtual void readEOF(Context* ctx) {
@@ -67,9 +64,15 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
   virtual void readException(Context* ctx, exception_wrapper e) {
     ctx->fireReadException(std::move(e));
   }
+  virtual void transportActive(Context* ctx) {
+    ctx->fireTransportActive();
+  }
+  virtual void transportInactive(Context* ctx) {
+    ctx->fireTransportInactive();
+  }
 
-  virtual Future<void> write(Context* ctx, Win msg) = 0;
-  virtual Future<void> close(Context* ctx) {
+  virtual Future<Unit> write(Context* ctx, Win msg) = 0;
+  virtual Future<Unit> close(Context* ctx) {
     return ctx->fireClose();
   }
 
@@ -81,28 +84,24 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
       exception_wrapper e) {}
   virtual void channelRegistered(HandlerContext* ctx) {}
   virtual void channelUnregistered(HandlerContext* ctx) {}
-  virtual void channelActive(HandlerContext* ctx) {}
-  virtual void channelInactive(HandlerContext* ctx) {}
   virtual void channelReadComplete(HandlerContext* ctx) {}
   virtual void userEventTriggered(HandlerContext* ctx, void* evt) {}
   virtual void channelWritabilityChanged(HandlerContext* ctx) {}
 
   // outbound
-  virtual Future<void> bind(
+  virtual Future<Unit> bind(
       HandlerContext* ctx,
       SocketAddress localAddress) {}
-  virtual Future<void> connect(
+  virtual Future<Unit> connect(
           HandlerContext* ctx,
           SocketAddress remoteAddress, SocketAddress localAddress) {}
-  virtual Future<void> disconnect(HandlerContext* ctx) {}
-  virtual Future<void> deregister(HandlerContext* ctx) {}
-  virtual Future<void> read(HandlerContext* ctx) {}
+  virtual Future<Unit> disconnect(HandlerContext* ctx) {}
+  virtual Future<Unit> deregister(HandlerContext* ctx) {}
+  virtual Future<Unit> read(HandlerContext* ctx) {}
   virtual void flush(HandlerContext* ctx) {}
   */
 };
 
-struct Unit{};
-
 template <class Rin, class Rout = Rin>
 class InboundHandler : public HandlerBase<InboundHandlerContext<Rout>> {
  public:
@@ -113,7 +112,7 @@ class InboundHandler : public HandlerBase<InboundHandlerContext<Rout>> {
   typedef Unit win;
   typedef Unit wout;
   typedef InboundHandlerContext<Rout> Context;
-  virtual ~InboundHandler() {}
+  virtual ~InboundHandler() = default;
 
   virtual void read(Context* ctx, Rin msg) = 0;
   virtual void readEOF(Context* ctx) {
@@ -122,6 +121,12 @@ class InboundHandler : public HandlerBase<InboundHandlerContext<Rout>> {
   virtual void readException(Context* ctx, exception_wrapper e) {
     ctx->fireReadException(std::move(e));
   }
+  virtual void transportActive(Context* ctx) {
+    ctx->fireTransportActive();
+  }
+  virtual void transportInactive(Context* ctx) {
+    ctx->fireTransportInactive();
+  }
 };
 
 template <class Win, class Wout = Win>
@@ -134,10 +139,10 @@ class OutboundHandler : public HandlerBase<OutboundHandlerContext<Wout>> {
   typedef Win win;
   typedef Wout wout;
   typedef OutboundHandlerContext<Wout> Context;
-  virtual ~OutboundHandler() {}
+  virtual ~OutboundHandler() = default;
 
-  virtual Future<void> write(Context* ctx, Win msg) = 0;
-  virtual Future<void> close(Context* ctx) {
+  virtual Future<Unit> write(Context* ctx, Win msg) = 0;
+  virtual Future<Unit> close(Context* ctx) {
     return ctx->fireClose();
   }
 };
@@ -151,7 +156,7 @@ class HandlerAdapter : public Handler<R, R, W, W> {
     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));
   }
 };