12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //
- // 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
|