1 // Copyright (c) 2010 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 NET_SOCKET_STREAM_SOCKET_STREAM_JOB_MANAGER_H_ 6 #define NET_SOCKET_STREAM_SOCKET_STREAM_JOB_MANAGER_H_ 7 8 #include <map> 9 #include <string> 10 11 #include "net/socket_stream/socket_stream.h" 12 #include "net/socket_stream/socket_stream_job.h" 13 14 template <typename T> struct DefaultSingletonTraits; 15 class GURL; 16 17 namespace net { 18 19 class SocketStreamJobManager { 20 public: 21 // Returns the singleton instance. 22 static SocketStreamJobManager* GetInstance(); 23 24 SocketStreamJob* CreateJob( 25 const GURL& url, SocketStream::Delegate* delegate, 26 URLRequestContext* context, CookieStore* cookie_store) const; 27 28 SocketStreamJob::ProtocolFactory* RegisterProtocolFactory( 29 const std::string& scheme, SocketStreamJob::ProtocolFactory* factory); 30 31 private: 32 friend struct DefaultSingletonTraits<SocketStreamJobManager>; 33 typedef std::map<std::string, SocketStreamJob::ProtocolFactory*> FactoryMap; 34 35 SocketStreamJobManager(); 36 ~SocketStreamJobManager(); 37 38 mutable base::Lock lock_; 39 FactoryMap factories_; 40 41 DISALLOW_COPY_AND_ASSIGN(SocketStreamJobManager); 42 }; 43 44 } // namespace net 45 46 #endif // NET_SOCKET_STREAM_SOCKET_STREAM_JOB_MANAGER_H_ 47