| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SYNC_INTERNAL_API_PUBLIC_HTTP_POST_PROVIDER_FACTORY_H_ |
| #define SYNC_INTERNAL_API_PUBLIC_HTTP_POST_PROVIDER_FACTORY_H_ |
| |
| #include <string> |
| |
| #include "sync/base/sync_export.h" |
| |
| namespace syncer { |
| |
| class HttpPostProviderInterface; |
| |
| // A factory to create HttpPostProviders to hide details about the |
| // implementations and dependencies. |
| // A factory instance itself should be owned by whomever uses it to create |
| // HttpPostProviders. |
| class SYNC_EXPORT HttpPostProviderFactory { |
| public: |
| virtual ~HttpPostProviderFactory() {} |
| |
| virtual void Init(const std::string& user_agent) = 0; |
| |
| // Obtain a new HttpPostProviderInterface instance, owned by caller. |
| virtual HttpPostProviderInterface* Create() = 0; |
| |
| // When the interface is no longer needed (ready to be cleaned up), clients |
| // must call Destroy(). |
| // This allows actual HttpPostProvider subclass implementations to be |
| // reference counted, which is useful if a particular implementation uses |
| // multiple threads to serve network requests. |
| virtual void Destroy(HttpPostProviderInterface* http) = 0; |
| }; |
| |
| } // namespace syncer |
| |
| #endif // SYNC_INTERNAL_API_PUBLIC_HTTP_POST_PROVIDER_FACTORY_H_ |