• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 CHROME_BROWSER_SYNC_ENGINE_HTTP_POST_PROVIDER_FACTORY_H_
6 #define CHROME_BROWSER_SYNC_ENGINE_HTTP_POST_PROVIDER_FACTORY_H_
7 #pragma once
8 
9 namespace sync_api {
10 
11 class HttpPostProviderInterface;
12 
13 // A factory to create HttpPostProviders to hide details about the
14 // implementations and dependencies.
15 // A factory instance itself should be owned by whomever uses it to create
16 // HttpPostProviders.
17 class HttpPostProviderFactory {
18  public:
~HttpPostProviderFactory()19   virtual ~HttpPostProviderFactory() {}
20 
21   // Obtain a new HttpPostProviderInterface instance, owned by caller.
22   virtual HttpPostProviderInterface* Create() = 0;
23 
24   // When the interface is no longer needed (ready to be cleaned up), clients
25   // must call Destroy().
26   // This allows actual HttpPostProvider subclass implementations to be
27   // reference counted, which is useful if a particular implementation uses
28   // multiple threads to serve network requests.
29   virtual void Destroy(HttpPostProviderInterface* http) = 0;
30 };
31 
32 }  // namespace sync_api
33 
34 #endif  // CHROME_BROWSER_SYNC_ENGINE_HTTP_POST_PROVIDER_FACTORY_H_
35