Wt  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
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.
 WStreamResource (const std::string &mimeType, WObject *parent=0)
 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 (WObject *parent=0)
 Creates a new resource.
 ~WResource ()
 Destroys the resource.
void suggestFileName (const Wt::WString &name, DispositionType dispositionType=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 (DispositionType cd)
 Configures the Content-Disposition header.
DispositionType dispositionType () const
 Returns the currently configured content disposition.
void setChanged ()
 Generates a new URL for this resource and emits the changed signal.
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.
void haveMoreData ()
 Indicate that more data is available.
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 Create a WObject with a given parent object.
virtual ~WObject ()
 Destructor.
virtual const std::string id () const
 Returns the (unique) identifier for this object.
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.
template<class T >
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 Provides a JavaScript implementation for a method.
void addChild (WObject *child)
 Adds a child object.
virtual void removeChild (WObject *child)
 Removes a child object.
const std::vector< WObject * > & children () const
 Returns the children.
WObject * parent () 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.
- 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::WResource
enum  DispositionType { NoDisposition, Attachment, Inline }
 Values for the disposition type in the Content-Disposition header. More...
- Static Protected Member Functions inherited from Wt::WObject
static WObject * sender ()
 Returns the sender of the current slot call.

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

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

Default constructor.

The mime type defaults to "text/plain".

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

int Wt::WStreamResource::bufferSize ( ) const

Returns the buffer size.

See Also
setBufferSize()
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.

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 Mon Aug 25 2014 for the C++ Web Toolkit (Wt) by doxygen 1.8.1.2