stream_registry.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
1// Copyright (c) 2013 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 CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ 6#define CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ 7 8#include <map> 9 10#include "base/basictypes.h" 11#include "base/memory/ref_counted.h" 12#include "base/threading/non_thread_safe.h" 13#include "content/common/content_export.h" 14#include "url/gurl.h" 15 16namespace content { 17 18class Stream; 19 20// Maintains a mapping of blob: URLs to active streams. 21class CONTENT_EXPORT StreamRegistry : public base::NonThreadSafe { 22 public: 23 StreamRegistry(); 24 virtual ~StreamRegistry(); 25 26 // Registers a stream, and sets its URL. 27 void RegisterStream(scoped_refptr<Stream> stream); 28 29 // Clones a stream. Returns true on success, or false if |src_url| doesn't 30 // exist. 31 bool CloneStream(const GURL& url, const GURL& src_url); 32 33 void UnregisterStream(const GURL& url); 34 35 // Gets the stream associated with |url|. Returns NULL if there is no such 36 // stream. 37 scoped_refptr<Stream> GetStream(const GURL& url); 38 39 private: 40 typedef std::map<GURL, scoped_refptr<Stream> > StreamMap; 41 42 StreamMap streams_; 43 44 DISALLOW_COPY_AND_ASSIGN(StreamRegistry); 45}; 46 47} // namespace content 48 49#endif // CONTENT_BROWSER_STREAMS_STREAM_REGISTRY_H_ 50 51 52