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