Panda3D
|
This class can be used to write a binary file that consists of an arbitrary header followed by a number of datagrams. More...
#include "datagramOutputFile.h"
Public Member Functions | |
void | close () |
Closes the file. | |
virtual bool | copy_datagram (SubfileInfo &result, const Filename &filename) |
Copies the file data from the entire indicated file (via the vfs) as the next datagram. | |
virtual bool | copy_datagram (SubfileInfo &result, const SubfileInfo &source) |
Copies the file data from the range of the indicated file (outside of the vfs) as the next datagram. | |
virtual void | flush () |
Ensures that all datagrams previously written will be visible in the output file. | |
virtual const FileReference * | get_file () |
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 streampos | get_file_pos () |
Returns the current file position within the data stream, if any, or 0 if the file position is not meaningful or cannot be determined. | |
virtual const Filename & | get_filename () |
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. | |
ostream & | get_stream () |
Returns the ostream represented by the output file. | |
virtual bool | is_error () |
Returns true if the file has reached an error condition. | |
bool | open (const FileReference *file) |
Opens the indicated filename for writing. | |
bool | open (const Filename &filename) |
Opens the indicated filename for writing. | |
bool | open (ostream &out, const Filename &filename=Filename()) |
Starts writing to the indicated stream. | |
virtual bool | put_datagram (const Datagram &data) |
Writes the given datagram to the file. | |
bool | write_header (const string &header) |
Writes a sequence of bytes to the beginning of the datagram file. |
This class can be used to write a binary file that consists of an arbitrary header followed by a number of datagrams.
Definition at line 31 of file datagramOutputFile.h.
void DatagramOutputFile::close | ( | ) |
Closes the file.
This is also implicitly done when the DatagramOutputFile destructs.
Definition at line 77 of file datagramOutputFile.cxx.
References VirtualFileSystem::close_write_file(), and VirtualFileSystem::get_global_ptr().
Referenced by RecorderController::close(), BamFile::close(), open(), and BamCache::store().
bool DatagramOutputFile::copy_datagram | ( | SubfileInfo & | result, |
const Filename & | filename | ||
) | [virtual] |
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.
Reimplemented from DatagramSink.
Definition at line 147 of file datagramOutputFile.cxx.
References StreamWriter::add_uint32(), VirtualFileSystem::get_global_ptr(), and VirtualFileSystem::open_read_file().
bool DatagramOutputFile::copy_datagram | ( | SubfileInfo & | result, |
const SubfileInfo & | source | ||
) | [virtual] |
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.
Reimplemented from DatagramSink.
Definition at line 214 of file datagramOutputFile.cxx.
References StreamWriter::add_uint32(), SubfileInfo::get_filename(), SubfileInfo::get_size(), SubfileInfo::get_start(), and Filename::open_read().
void DatagramOutputFile::flush | ( | void | ) | [virtual] |
Ensures that all datagrams previously written will be visible in the output file.
Implements DatagramSink.
Definition at line 283 of file datagramOutputFile.cxx.
const FileReference * DatagramOutputFile::get_file | ( | ) | [virtual] |
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.
Reimplemented from DatagramSink.
Definition at line 310 of file datagramOutputFile.cxx.
streampos DatagramOutputFile::get_file_pos | ( | ) | [virtual] |
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 DatagramOutputFiles that return a meaningful file position, this will be pointing to the first byte following the datagram returned after a call to put_datagram().
Reimplemented from DatagramSink.
Definition at line 327 of file datagramOutputFile.cxx.
Referenced by BamCache::store().
const Filename & DatagramOutputFile::get_filename | ( | ) | [virtual] |
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.
Reimplemented from DatagramSink.
Definition at line 298 of file datagramOutputFile.cxx.
ostream & DatagramOutputFile::get_stream | ( | ) | [inline] |
Returns the ostream represented by the output file.
Definition at line 56 of file datagramOutputFile.I.
bool DatagramOutputFile::is_error | ( | ) | [virtual] |
Returns true if the file has reached an error condition.
Implements DatagramSink.
Definition at line 265 of file datagramOutputFile.cxx.
Referenced by RecorderController::is_error().
bool DatagramOutputFile::open | ( | const FileReference * | file | ) |
Opens the indicated filename for writing.
Returns true if successful, false on failure.
Definition at line 26 of file datagramOutputFile.cxx.
References close(), VirtualFileSystem::get_global_ptr(), and Filename::set_binary().
Referenced by RecorderController::begin_record(), TypedWritable::encode_to_bam_stream(), NodePath::encode_to_bam_stream(), open(), BamFile::open_write(), and BamCache::store().
bool DatagramOutputFile::open | ( | const Filename & | filename | ) | [inline] |
Opens the indicated filename for writing.
Returns true on success, false on failure.
Definition at line 46 of file datagramOutputFile.I.
References open().
bool DatagramOutputFile::open | ( | ostream & | out, |
const Filename & | filename = Filename() |
||
) |
Starts writing to the indicated stream.
Returns true on success, false on failure. The DatagramOutputFile does not take ownership of the stream; you are responsible for closing or deleting it when you are done.
Definition at line 56 of file datagramOutputFile.cxx.
References close().
bool DatagramOutputFile::put_datagram | ( | const Datagram & | data | ) | [virtual] |
Writes the given datagram to the file.
Returns true on success, false if there is an error.
Implements DatagramSink.
Definition at line 119 of file datagramOutputFile.cxx.
References StreamWriter::add_uint32(), Datagram::get_data(), and Datagram::get_length().
Referenced by NodePath::encode_to_bam_stream().
bool DatagramOutputFile::write_header | ( | const string & | header | ) |
Writes a sequence of bytes to the beginning of the datagram file.
This may be called any number of times after the file has been opened and before the first datagram is written. It may not be called once the first datagram is written.
Definition at line 103 of file datagramOutputFile.cxx.
Referenced by RecorderController::begin_record(), TypedWritable::encode_to_bam_stream(), NodePath::encode_to_bam_stream(), and BamCache::store().