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