Wt  3.7.1
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>

Inheritance diagram for Wt::WStreamResource:
Inheritance graph
[legend]

Public Member Functions

 WStreamResource (WObject *parent=0)
 Default constructor. More...
 
 WStreamResource (const std::string &mimeType, WObject *parent=0)
 Creates a new resource with given mime-type.
 
 ~WStreamResource ()
 Destructor. More...
 
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. More...
 
int bufferSize () const
 Returns the buffer size. 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 handleRequest (const Http::Request &request, Http::Response &response)=0
 Handles a request. 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.
 

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. More...
 
- 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...
 

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.
 
- Static Protected Member Functions inherited from Wt::WObject
static WObjectsender ()
 Returns the sender of the current slot call. More...
 

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::WObject *parent = 0)
: Wt::WStreamResource(parent),
fileName_(fileName)
{
suggestFileName("data.txt");
}
~MyStreamResource() {
}
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_;
};
See also
WFileResource

Constructor & Destructor Documentation

◆ WStreamResource()

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

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.


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