Home | History | Annotate | Download | only in protocol
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef REMOTING_PROTOCOL_DATAGRAM_CHANNEL_FACTORY_H_
      6 #define REMOTING_PROTOCOL_DATAGRAM_CHANNEL_FACTORY_H_
      7 
      8 #include <string>
      9 
     10 #include "base/callback_forward.h"
     11 
     12 namespace net {
     13 class Socket;
     14 }  // namespace net
     15 
     16 namespace remoting {
     17 namespace protocol {
     18 
     19 class DatagramChannelFactory {
     20  public:
     21   typedef base::Callback<void(scoped_ptr<net::Socket>)>
     22       ChannelCreatedCallback;
     23 
     24   DatagramChannelFactory() {}
     25 
     26   // Creates new channels and calls the |callback| when then new channel is
     27   // created and connected. The |callback| is called with NULL if channel setup
     28   // failed for any reason. Callback may be called synchronously, before the
     29   // call returns. All channels must be destroyed, and CancelChannelCreation()
     30   // called for any pending channels, before the factory is destroyed.
     31   virtual void CreateChannel(const std::string& name,
     32                              const ChannelCreatedCallback& callback) = 0;
     33 
     34   // Cancels a pending CreateChannel() operation for the named channel. If the
     35   // channel creation already completed then canceling it has no effect. When
     36   // shutting down this method must be called for each channel pending creation.
     37   virtual void CancelChannelCreation(const std::string& name) = 0;
     38 
     39  protected:
     40   virtual ~DatagramChannelFactory() {}
     41 
     42  private:
     43   DISALLOW_COPY_AND_ASSIGN(DatagramChannelFactory);
     44 };
     45 
     46 }  // namespace protocol
     47 }  // namespace remoting
     48 
     49 #endif  // REMOTING_PROTOCOL_DATAGRAM_CHANNEL_FACTORY_H_
     50