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 14template <typename T> struct DefaultSingletonTraits; 15class GURL; 16 17namespace net { 18 19class 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