title: How to generate BlockingStub in C++ in Protobuf?
body: <p>I'm having the following .proto for <code>Protobuf</code> (2.6.1 to be more detailed):</p>
  
  <pre><code>service InstallService {
      rpc getWifiNetworks (WifiRequest) returns (WifiResponse);
  }
  </code></pre>
  
  <p>I've generated java files and i'm having BlockingStub:</p>
  
  <pre><code>TestInstallService.BlockingInterface service = TestInstallService.newBlockingStub(channel);
  </code></pre>
  
  <p>and i can use if in blocking way (works good):</p>
  
  <pre><code>Wifi.WifiResponse response = service.getWifiNetworks(controller, request);
  </code></pre>
  
  <p>Now i'm creating C++ client which should work in blocking way too but i can't see any <code>Blocking</code> interfaces neither in proto nor in generated C++ code. How to generate BlockingStub in C++ in Protobuf? How can i pass closure if working in async way? </p>
  
  <p>Generated C++ service file (.cpp):</p>
  
  <pre><code>class InstallService_Stub;
  
  class InstallService : public ::google::protobuf::Service {
   protected:
    // This class should be treated as an abstract interface.
    inline InstallService() {};
   public:
    virtual ~InstallService();
  
    typedef InstallService_Stub Stub;
  
    static const ::google::protobuf::ServiceDescriptor* descriptor();
  
    virtual void getWifiNetworks(::google::protobuf::RpcController* controller,
                         const ::WifiRequest* request,
                         ::WifiResponse* response,
                         ::google::protobuf::Closure* done);
  
    // implements Service ----------------------------------------------
  
    const ::google::protobuf::ServiceDescriptor* GetDescriptor();
    void CallMethod(const ::google::protobuf::MethodDescriptor* method,
                    ::google::protobuf::RpcController* controller,
                    const ::google::protobuf::Message* request,
                    ::google::protobuf::Message* response,
                    ::google::protobuf::Closure* done);
    const ::google::protobuf::Message&amp; GetRequestPrototype(
      const ::google::protobuf::MethodDescriptor* method) const;
    const ::google::protobuf::Message&amp; GetResponsePrototype(
      const ::google::protobuf::MethodDescriptor* method) const;
  
   private:
    GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(InstallService);
  };
  
  class InstallService_Stub : public InstallService {
   public:
    InstallService_Stub(::google::protobuf::RpcChannel* channel);
    InstallService_Stub(::google::protobuf::RpcChannel* channel,
                     ::google::protobuf::Service::ChannelOwnership ownership);
    ~InstallService_Stub();
  
    inline ::google::protobuf::RpcChannel* channel() { return channel_; }
  
    // implements InstallService ------------------------------------------
  
    void getWifiNetworks(::google::protobuf::RpcController* controller,
                         const ::WifiRequest* request,
                         ::WifiResponse* response,
                         ::google::protobuf::Closure* done);
   private:
    ::google::protobuf::RpcChannel* channel_;
    bool owns_channel_;
    GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(InstallService_Stub);
  };
  </code></pre>