DatagramSink

class DatagramSink

This class defines the abstract interface to sending datagrams to any target, whether it be into a file or across the net

Inheritance diagram

Inheritance diagram of DatagramSink

virtual bool copy_datagram(SubfileInfo &result, Filename const &filename)
virtual bool copy_datagram(SubfileInfo &result, SubfileInfo const &source)

Copies the file data from the entire indicated file (via the vfs) as the next datagram. This is intended to support potentially very large datagrams.

Returns true on success, false on failure or if this method is unimplemented. On true, fills “result” with the information that references the copied file, if possible.

Copies the file data from the range of the indicated file (outside of the vfs) as the next datagram. This is intended to support potentially very large datagrams.

Returns true on success, false on failure or if this method is unimplemented. On true, fills “result” with the information that references the copied file, if possible.

virtual void flush(void) = 0
virtual FileReference const *get_file(void)

Returns the FileReference that provides the target for these datagrams, if any, or NULL if the datagrams do not written to a file on disk.

virtual std::streamoff get_file_pos(void)

Returns the current file position within the data stream, if any, or 0 if the file position is not meaningful or cannot be determined.

For DatagramSinks that return a meaningful file position, this will be pointing to the first byte following the datagram returned after a call to put_datagram().

virtual Filename const &get_filename(void)

Returns the filename that provides the target for these datagrams, if any, or empty string if the datagrams do not get written to a file on disk.

virtual bool is_error(void) = 0
virtual bool put_datagram(Datagram const &data) = 0