/usr/include/gnash/StreamProvider.h is in gnash-dev 0.8.11~git20160109-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | //
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
// Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef GNASH_STREAMPROVIDER_H
#define GNASH_STREAMPROVIDER_H
#include "NetworkAdapter.h"
#include "dsodefs.h" // for DSOEXPORT
#include "NamingPolicy.h"
#include <string>
#include <memory>
// Forward declarations
namespace gnash {
class URL;
class IOChannel;
}
namespace gnash {
/// A StreamProvider makes IOChannels available to the core on request.
//
/// The current functions of this class are:
/// 1. Inform users whether a connection to a certain URL is allowed.
/// 2. Make a connection and return an IOChannel (this performs a separate
/// access check).
///
/// The class should in future also:
/// 3. Take relative URLs and resolve them against the base URL.
//
/// TODO: this class should become an abstract interface.
class DSOEXPORT StreamProvider
{
public:
/// Construct a StreamProvider
//
/// @param original The original URL, used to decide whether to allow
/// connections.
/// @param base The base URL, used to resolve URLs.
/// @param np A policy to decide the name of cached files.
StreamProvider(URL original, URL base,
std::unique_ptr<NamingPolicy> np =
std::unique_ptr<NamingPolicy>(new NamingPolicy));
virtual ~StreamProvider() {}
/// Returned stream ownership is transferred to caller.
//
/// On error NULL is returned
/// Derive from this for a CachingStreamProvider
virtual std::unique_ptr<IOChannel> getStream(const URL& url,
bool namedCacheFile = false) const;
/// Get a stream from the response of a POST operation
//
/// Returned stream ownership is transferred to caller.
///
/// On error NULL is returned
/// Derive from this for a CachingStreamProvider
///
/// @param url The url to post to.
/// @param postdata Post data in url-encoded form.
virtual std::unique_ptr<IOChannel> getStream(const URL& url,
const std::string& postdata, bool namedCacheFile = false) const;
virtual std::unique_ptr<IOChannel> getStream(const URL& url,
const std::string& postdata,
const NetworkAdapter::RequestHeaders& headers,
bool namedCacheFile = false) const;
/// Set the NamingPolicy for cache files
//
/// This is only used when cache file naming is requested in getStream()
/// This StreamProvider owns the NamingPolicy instance.
void setNamingPolicy(std::unique_ptr<NamingPolicy> np) {
_namingPolicy = std::move(np);
}
/// Return the currently selected policy for converting URL to filename
const NamingPolicy& namingPolicy() const {
assert(_namingPolicy.get());
return *_namingPolicy;
}
/// Check whether access to a URL is allowed
//
/// This is used by the core to check whether a connection can be
/// made before trying to make it. It's useful currently for
/// some functions to decide what to return.
//
/// @param url The url to check
/// @return true if allowed, false if not.
bool allow(const URL& url) const;
/// The base URL that should be used to resolve all relative URLs.
//
/// TODO: drop this if possible and handle all resolution in
/// this class.
const URL& baseURL() const {
return _base;
}
private:
/// The current naming policy for cache files.
std::unique_ptr<NamingPolicy> _namingPolicy;
const URL _base;
const URL _original;
};
} // namespace gnash
#endif
// Local Variables:
// mode: C++
// indent-tabs-mode: t
// End:
|