Wt  3.7.1
Public Member Functions | List of all members
Wt::WMemoryResource Class Reference

A resource which streams data from memory. More...

#include <Wt/WMemoryResource>

Inheritance diagram for Wt::WMemoryResource:
Inheritance graph

Public Member Functions

 WMemoryResource (WObject *parent=0)
 Creates a new resource. More...
 WMemoryResource (const std::string &mimeType, WObject *parent=0)
 Creates a new resource with given mime-type. More...
 WMemoryResource (const std::string &mimeType, const std::vector< unsigned char > &data, WObject *parent=0)
 Creates a new resource with given mime-type and data.
void setData (const std::vector< unsigned char > &data)
 Sets new data for the resource to serve.
void setData (const unsigned char *data, int count)
 Sets new data for the resource to serve. More...
const std::vector< unsigned char > data () const
 Returns the data this resource will serve.
const std::string mimeType () const
 Returns the mime-type.
void setMimeType (const std::string &mimeType)
 Sets the mime-type.
virtual void handleRequest (const Http::Request &request, Http::Response &response)
 Handles a request. More...
- Public Member Functions inherited from Wt::WResource
 WResource (WObject *parent=0)
 Creates a new resource.
 ~WResource ()
 Destroys the resource. More...
void suggestFileName (const Wt::WString &name, DispositionType dispositionType=Attachment)
 Suggests a filename to the user for the data streamed by this resource. More...
const Wt::WStringsuggestedFileName () const
 Returns the suggested file name. More...
void setDispositionType (DispositionType cd)
 Configures the Content-Disposition header. More...
DispositionType dispositionType () const
 Returns the currently configured content disposition. More...
void setChanged ()
 Generates a new URL for this resource and emits the changed signal. More...
void setInternalPath (const std::string &path)
 Sets an internal path for this resource. More...
std::string internalPath () const
 Returns the internal path. More...
const std::string & generateUrl ()
 Generates an URL for this resource. More...
const std::string & url () const
 Returns the current URL for this resource. More...
SignaldataChanged ()
 Signal emitted when the data presented in this resource has changed. More...
void setUploadProgress (bool enabled)
 Indicate interest in upload progress. More...
Signal< ::uint64_t, ::uint64_t > & dataReceived ()
 Signal emitted when data has been received for this resource. More...
void write (std::ostream &out, const Http::ParameterMap &parameters=Http::ParameterMap(), const Http::UploadedFileMap &files=Http::UploadedFileMap())
 Stream the resource to a stream. More...
virtual void handleAbort (const Http::Request &request)
 Handles a continued request being aborted. More...
void haveMoreData ()
 Indicate that more data is available. More...
void setTakesUpdateLock (bool enabled)
 Set whether this resource takes the WApplication's update lock. More...
bool takesUpdateLock () const
 Returns whether this resources takes the WApplication's update lock. More...
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 Create a WObject with a given parent object. More...
virtual ~WObject ()
 Destructor. More...
virtual const std::string id () const
 Returns the (unique) identifier for this object. More...
virtual void setObjectName (const std::string &name)
 Sets an object name. More...
virtual std::string objectName () const
 Returns the object name. More...
void resetLearnedSlots ()
 Resets learned stateless slot implementations. More...
template<class T >
void resetLearnedSlot (void(T::*method)())
 Resets a learned stateless slot implementation. More...
template<class T >
WStatelessSlot * implementStateless (void(T::*method)())
 Declares a slot to be stateless and learn client-side behaviour on first invocation. More...
template<class T >
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 Declares a slot to be stateless and learn client-side behaviour in advance. More...
void isNotStateless ()
 Marks the current function as not stateless. More...
template<class T >
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 Provides a JavaScript implementation for a method. More...
void addChild (WObject *child)
 Adds a child object. More...
virtual void removeChild (WObject *child)
 Removes a child object. More...
const std::vector< WObject * > & children () const
 Returns the children.
WObjectparent () const
 Returns the parent object.

Additional Inherited Members

- Public Types inherited from Wt::WResource
enum  DispositionType { NoDisposition, Attachment, Inline }
 Values for the disposition type in the Content-Disposition header. More...
- Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
 Typedef for a WObject method without arguments.
- Protected Member Functions inherited from Wt::WResource
void beingDeleted ()
 Prepares the resource for deletion. More...
- Protected Member Functions inherited from Wt::WObject
virtual WStatelessSlot * getStateless (Method method)
 On-demand stateless slot implementation. More...
- Static Protected Member Functions inherited from Wt::WObject
static WObjectsender ()
 Returns the sender of the current slot call. More...

Detailed Description

A resource which streams data from memory.

Use this resource if you want to serve resource data from memory. This is suitable for relatively small resources, which still require some computation.

If creating the data requires computation which you would like to post-pone until the resource is served, then you may want to directly reimplement WResource instead and compute the data on the fly while streaming.

Usage examples:

Wt::WMemoryResource *imageResource = new Wt::WMemoryResource("image/gif", this);
static const unsigned char gifData[]
= { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00,
0x80, 0x00, 0x00, 0xdb, 0xdf, 0xef, 0x00, 0x00, 0x00, 0x21,
0xf9, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x44,
0x01, 0x00, 0x3b };
imageResource->setData(gifData, 43);
Wt::WImage *image = new Wt::WImage(imageResource, "1 transparent pixel");
See also

Constructor & Destructor Documentation

◆ WMemoryResource() [1/2]

Wt::WMemoryResource::WMemoryResource ( WObject parent = 0)

Creates a new resource.

You must call setMimeType() and setData() before using the resource.

◆ WMemoryResource() [2/2]

Wt::WMemoryResource::WMemoryResource ( const std::string &  mimeType,
WObject parent = 0 

Creates a new resource with given mime-type.

You must call setData() before using the resource.

Member Function Documentation

◆ handleRequest()

void Wt::WMemoryResource::handleRequest ( const Http::Request request,
Http::Response response 

Handles a request.

Reimplement this method so that a proper response is generated for the given request. From the request object you can access request parameters and whether the request is a continuation request. In the response object, you should set the mime type and stream the output data.

A request may also concern a continuation, indicated in Http::Request::continuation(), in which case the next part for a previously created continuation should be served.

While handling a request, which may happen at any time together with event handling, the library makes sure that the resource is not being concurrently deleted, but multiple requests may happend simultaneously for a single resource.

Implements Wt::WResource.

◆ setData()

void Wt::WMemoryResource::setData ( const unsigned char *  data,
int  count 

Sets new data for the resource to serve.

Sets the data from using the first count bytes from the C-style data array.

Generated on Tue Dec 15 2020 for the C++ Web Toolkit (Wt) by doxygen 1.8.13