Wt  3.3.5
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::WString & suggestedFileName () 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...
 
Signal & dataChanged ()
 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...
 
- 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...
 
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.
 
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. 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 WObject * sender ()
 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:

1 class MyStreamResource : public Wt::WStreamResource
2 {
3 public:
4  MyStreamResource(const std::string& fileName, Wt::WObject *parent = 0)
5  : Wt::WStreamResource(parent),
6  fileName_(fileName)
7  {
8  suggestFileName("data.txt");
9  }
10 
11  ~MyStreamResource() {
12  beingDeleted();
13  }
14 
15  void handleRequest(const Wt::Http::Request& request,
16  Wt::Http::Response& response) {
17  std::ifstream r(fileName_.c_str(), std::ios::in | std::ios::binary);
18  handleRequestPiecewise(request, response, r);
19  }
20 
21 private:
22  std::string fileName_;
23 };
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 Wed Nov 18 2015 for the C++ Web Toolkit (Wt) by doxygen 1.8.9.1