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
12namespace syncer {
13
14class 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.
20class SYNC_EXPORT HttpPostProviderFactory {
21 public:
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