Finagle interfaces
[folly.git] / folly / wangle / bootstrap / ClientBootstrap.h
index 8ee8fad9a4f0b8f43532df8a217730c90fc71aa9..4010519519cb649d1ff3f128bb748c5dd510c92a 100644 (file)
@@ -33,13 +33,24 @@ class ClientBootstrap {
     return this;
   }
   ClientBootstrap* connect(SocketAddress address) {
+    DCHECK(pipelineFactory_);
     pipeline_.reset(
-      newPipeline(
+      pipelineFactory_->newPipeline(
         AsyncSocket::newSocket(EventBaseManager::get()->getEventBase(), address)
       ));
     return this;
   }
 
+  ClientBootstrap* pipelineFactory(
+      std::shared_ptr<PipelineFactory<Pipeline>> factory) {
+    pipelineFactory_ = factory;
+    return this;
+  }
+
+  Pipeline* getPipeline() {
+    return pipeline_.get();
+  }
+
   virtual ~ClientBootstrap() {}
 
  protected:
@@ -48,7 +59,7 @@ class ClientBootstrap {
 
   int port_;
 
-  virtual Pipeline* newPipeline(std::shared_ptr<AsyncSocket> socket) = 0;
+  std::shared_ptr<PipelineFactory<Pipeline>> pipelineFactory_;
 };
 
 } // namespace