Wt: Wt::WStreamResource Class Reference

Wt 4.10.4

Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
Wt::WStreamResource Class Reference

An object which streams the data from a std::istream. More...

`#include <Wt/WStreamResource.h>`

Inheritance diagram for Wt::WStreamResource:
[legend]

## Public Member Functions
| WStreamResource ()
| Default constructor.
| WStreamResource (const std::string &mimeType)
| Creates a new resource with given mime-type.
| ~WStreamResource ()
| Destructor.
void | setMimeType (const std::string &mimeType)
| Sets the mime-type.
const std::string & | mimeType () const
| Returns the mime-type.
void | setBufferSize (int size)
| Configures the buffer size.
int | bufferSize () const
| Returns the buffer size.
Public Member Functions inherited from Wt::WResource
| WResource ()
| Creates a new resource.
| ~WResource ()
| Destroys the resource.
void | suggestFileName (const Wt::WString &name, ContentDisposition disposition=ContentDisposition::Attachment)
| Suggests a filename to the user for the data streamed by this resource.
const Wt::WString & | suggestedFileName () const
| Returns the suggested file name.
void | setDispositionType (ContentDisposition cd)
| Configures the Content-Disposition header.
ContentDisposition | dispositionType () const
| Returns the currently configured content disposition.
void | setChanged ()
| Generates a new URL for this resource and emits the changed signal.
void | setInvalidAfterChanged (bool enabled)
| Return "page not found" for prior resource URLs after change.
bool | invalidAfterChanged () const
| Should "page not found" be returned for outdated resource URLs.
void | setInternalPath (const std::string &path)
| Sets an internal path for this resource.
std::string | internalPath () const
| Returns the internal path.
const std::string & | generateUrl ()
| Generates an URL for this resource.
const std::string & | url () const
| Returns the current URL for this resource.
Signal & | dataChanged ()
| Signal emitted when the data presented in this resource has changed.
void | setUploadProgress (bool enabled)
| Indicate interest in upload progress.
Signal< ::uint64_t, ::uint64_t > & | dataReceived ()
| Signal emitted when data has been received for this resource.
void | write (std::ostream &out, const Http::ParameterMap &parameters=Http::ParameterMap(), const Http::UploadedFileMap &files=Http::UploadedFileMap())
| Stream the resource to a stream.
virtual void | handleRequest (const Http::Request &request, Http::Response &response)=0
| Handles a request.
virtual void | handleAbort (const Http::Request &request)
| Handles a continued request being aborted.
void | haveMoreData ()
| Indicate that more data is available.
void | setTakesUpdateLock (bool enabled)
| Set whether this resource takes the WApplication's update lock.
bool | takesUpdateLock () const
| Returns whether this resources takes the WApplication's update lock.
Public Member Functions inherited from Wt::WObject
void | addChild (std::unique_ptr< WObject > child)
| Add a child WObject whose lifetime is determined by this WObject.
template<typename Child >
Child * | addChild (std::unique_ptr< Child > child)
| Add a child WObject, returning a raw pointer.
std::unique_ptr< WObject > | removeChild (WObject *child)
| Remove a child WObject, so its lifetime is no longer determined by this WObject.
template<typename Child >
std::unique_ptr< Child > | removeChild (Child *child)
| Remove a child WObject, so its lifetime is no longer determined by this WObject.
virtual const std::string | id () const
| Returns the (unique) identifier for this object.
virtual void | setObjectName (const std::string &name)
| Sets an object name.
virtual std::string | objectName () const
| Returns the object name.
void | resetLearnedSlots ()
| Resets learned stateless slot implementations.
template<class T >
void | resetLearnedSlot (void(T::*method)())
| Resets a learned stateless slot implementation.
template<class T >
WStatelessSlot * | implementStateless (void(T::*method)())
| Declares a slot to be stateless and learn client-side behaviour on first invocation.
template<class T >
WStatelessSlot * | implementStateless (void(T::*method)(), void(T::*undoMethod)())
| Declares a slot to be stateless and learn client-side behaviour in advance.
void | isNotStateless ()
| Marks the current function as not stateless.
template<class T >
WStatelessSlot * | implementJavaScript (void(T::*method)(), const std::string &jsCode)
| Provides a JavaScript implementation for a method.
Public Member Functions inherited from Wt::Core::observable
| observable () noexcept
| Default constructor.
virtual | ~observable ()
| Destructor.
template<typename... Args, typename C >
auto | bindSafe (void(C::*method)(Args...)) noexcept
| Protects a method call against object destruction.
template<typename... Args, typename C >
auto | bindSafe (void(C::*method)(Args...) const) const noexcept
| Protects a const method call against object destruction.
template<typename Function >
auto | bindSafe (const Function &function) noexcept
| Protects a function against object destruction.

## Protected Member Functions
void | handleRequestPiecewise (const Http::Request &request, Http::Response &response, std::istream &input)
| Handles a request and streams the data from a std::istream.
Protected Member Functions inherited from Wt::WResource
void | beingDeleted ()
| Prepares the resource for deletion.
Protected Member Functions inherited from Wt::WObject
virtual WStatelessSlot * | getStateless (Method method)
| On-demand stateless slot implementation.

## Additional Inherited Members
Public Types inherited from Wt::WObject
typedef void(WObject::*) | Method()
| Typedef for a WObject method without arguments.
Static Public Member Functions inherited from Wt::WObject

## Detailed Description

An object which streams the data from a std::istream.

This class can be useful base for implementing resources which streams the data from std::istream derivatives.

The utility method handleRequestPiecewise() makes use of continuations to transmit data piecewise, without blocking a thread or requiring the whole data to be read in memory. The size of the buffer can be changed by using setBufferSize().

Example for a custom stream resource implementation:

class MyStreamResource : public Wt::WStreamResource
{
public:
MyStreamResource(const std::string& fileName)
: Wt::WStreamResource(),
fileName_(fileName)
{
suggestFileName("data.txt");
}
~MyStreamResource() {
beingDeleted();
}
void handleRequest(const Wt::Http::Request& request,
Wt::Http::Response& response) {
std::ifstream r(fileName_.c_str(), std::ios::in | std::ios::binary);
handleRequestPiecewise(request, response, r);
}
private:
std::string fileName_;
};
Wt::Http::Request
A resource request.
Definition Request.h:131
Wt::Http::Response
A resource response.
Definition Response.h:42
Wt::WResource::beingDeleted
void beingDeleted()
Prepares the resource for deletion.
Wt::WResource::handleRequest
virtual void handleRequest(const Http::Request &request, Http::Response &response)=0
Handles a request.
Wt::WResource::suggestFileName
void suggestFileName(const Wt::WString &name, ContentDisposition disposition=ContentDisposition::Attachment)
Suggests a filename to the user for the data streamed by this resource.
Wt::WStreamResource
An object which streams the data from a std::istream.
Definition WStreamResource.h:59
Wt::WStreamResource::handleRequestPiecewise
void handleRequestPiecewise(const Http::Request &request, Http::Response &response, std::istream &input)
Handles a request and streams the data from a std::istream.
Wt
The namespace for Wt.
Definition strand.hpp:29

See also
  WFileResource

## Constructor & Destructor Documentation

## ◆ WStreamResource()

Wt::WStreamResource::WStreamResource | ( |  | ) |

Default constructor.

The mime type defaults to "text/plain".

## ◆ ~WStreamResource()

Wt::WStreamResource::~WStreamResource | ( |  | ) |

Destructor.

It is up to the user to make sure that the resource is no longer in use (by e.g. a WImage).

## Member Function Documentation

## ◆ bufferSize()

int Wt::WStreamResource::bufferSize | ( |  | ) | const

Returns the buffer size.

See also
  setBufferSize()

## ◆ handleRequestPiecewise()

void Wt::WStreamResource::handleRequestPiecewise | ( | const Http::Request & | request,
|  | Http::Response & | response,
|  | std::istream & | input )
| protected

Handles a request and streams the data from a std::istream.

You can call this method from a custom handleRequest() implementations.

## ◆ setBufferSize()

void Wt::WStreamResource::setBufferSize | ( | int | size | ) |

Configures the buffer size.

This configures the size of the buffer used to transmit the data piece by piece.