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