1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace net { 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass HttpCache; 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass HttpNetworkSession; 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass HttpTransaction; 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// An interface to a class that can create HttpTransaction objects. 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass HttpTransactionFactory { 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual ~HttpTransactionFactory() {} 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Creates a HttpTransaction object. On success, saves the new 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // transaction to |*trans| and returns OK. 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual int CreateTransaction(scoped_ptr<HttpTransaction>* trans) = 0; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Returns the associated cache if any (may be NULL). 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual HttpCache* GetCache() = 0; 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Returns the associated HttpNetworkSession used by new transactions. 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual HttpNetworkSession* GetSession() = 0; 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Suspends the creation of new transactions. If |suspend| is false, creation 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // of new transactions is resumed. 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual void Suspend(bool suspend) = 0; 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace net 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ 41