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
9namespace sync_api {
10
11class 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.
17class HttpPostProviderFactory {
18 public:
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