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