mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2026-08-01 05:17:13 +02:00
Major plugin refactor and cleanup.
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// URIStreamFactory.h
|
||||
//
|
||||
// Library: Foundation
|
||||
// Package: URI
|
||||
// Module: URIStreamFactory
|
||||
//
|
||||
// Definition of the URIStreamFactory class.
|
||||
//
|
||||
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Foundation_URIStreamFactory_INCLUDED
|
||||
#define Foundation_URIStreamFactory_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Foundation.h"
|
||||
#include <istream>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
|
||||
|
||||
class URI;
|
||||
|
||||
|
||||
class Foundation_API URIStreamFactory
|
||||
/// This class defines the interface that all
|
||||
/// URI stream factories must implement.
|
||||
///
|
||||
/// Subclasses must implement the open() method.
|
||||
{
|
||||
public:
|
||||
URIStreamFactory();
|
||||
/// Creates the URIStreamFactory.
|
||||
|
||||
virtual std::istream* open(const URI& uri) = 0;
|
||||
/// Tries to create and open an input stream for the
|
||||
/// resource specified by the given URI.
|
||||
///
|
||||
/// If the stream cannot be opened for whatever reason,
|
||||
/// an appropriate IOException must be thrown.
|
||||
///
|
||||
/// If opening the stream results in a redirect, a
|
||||
/// URIRedirection exception should be thrown.
|
||||
|
||||
protected:
|
||||
virtual ~URIStreamFactory();
|
||||
/// Destroys the URIStreamFactory.
|
||||
|
||||
private:
|
||||
URIStreamFactory(const URIStreamFactory&);
|
||||
URIStreamFactory& operator = (const URIStreamFactory&);
|
||||
|
||||
friend class URIStreamOpener;
|
||||
};
|
||||
|
||||
|
||||
class Foundation_API URIRedirection
|
||||
/// An instance of URIRedirection is thrown by a URIStreamFactory::open()
|
||||
/// if opening the original URI resulted in a redirection response
|
||||
/// (such as a MOVED PERMANENTLY in HTTP).
|
||||
{
|
||||
public:
|
||||
URIRedirection(const std::string& uri);
|
||||
URIRedirection(const URIRedirection& redir);
|
||||
|
||||
URIRedirection& operator = (const URIRedirection& redir);
|
||||
void swap(URIRedirection& redir);
|
||||
|
||||
const std::string& uri() const;
|
||||
/// Returns the new URI.
|
||||
|
||||
private:
|
||||
URIRedirection();
|
||||
|
||||
std::string _uri;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
inline const std::string& URIRedirection::uri() const
|
||||
{
|
||||
return _uri;
|
||||
}
|
||||
|
||||
|
||||
} // namespace Poco
|
||||
|
||||
|
||||
#endif // Foundation_URIStreamFactory_INCLUDED
|
||||
Reference in New Issue
Block a user