Panda3D
|
This class can be used to read a binary file that consists of an arbitrary header followed by a number of datagrams. More...
#include "datagramInputFile.h"
Public Member Functions | |
void | close () |
Closes the file. | |
virtual bool | get_datagram (Datagram &data) |
Reads the next datagram from the file. | |
virtual const FileReference * | get_file () |
Returns the FileReference that provides the source for these datagrams, if any, or NULL if the datagrams do not originate from 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 source for these datagrams, if any, or empty string if the datagrams do not originate from a file on disk. | |
istream & | get_stream () |
Returns the istream represented by the input file. | |
virtual VirtualFile * | get_vfile () |
Returns the VirtualFile that provides the source for these datagrams, if any, or NULL if the datagrams do not originate from a VirtualFile. | |
virtual bool | is_eof () |
Returns true if the file has reached the end-of-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 reading. | |
bool | open (const Filename &filename) |
Opens the indicated filename for reading. | |
bool | open (istream &in, const Filename &filename=Filename()) |
Starts reading from the indicated stream. | |
bool | read_header (string &header, size_t num_bytes) |
Reads a sequence of bytes from the beginning of the datagram file. | |
virtual bool | save_datagram (SubfileInfo &info) |
Skips over the next datagram without extracting it, but saves the relevant file information in the SubfileInfo object so that its data may be read later. |
This class can be used to read a binary file that consists of an arbitrary header followed by a number of datagrams.
Definition at line 31 of file datagramInputFile.h.
void DatagramInputFile::close | ( | ) |
Closes the file.
This is also implicitly done when the DatagramInputFile destructs.
Definition at line 84 of file datagramInputFile.cxx.
References VirtualFileSystem::close_read_file(), and VirtualFileSystem::get_global_ptr().
Referenced by RecorderController::close(), BamFile::close(), and open().
bool DatagramInputFile::get_datagram | ( | Datagram & | data | ) | [virtual] |
Reads the next datagram from the file.
Returns true on success, false if there is an error or end of file.
Implements DatagramGenerator.
Definition at line 135 of file datagramInputFile.cxx.
References Datagram::clear(), Thread::consider_yield(), and StreamReader::get_uint32().
Referenced by NodePath::decode_from_bam_stream().
const FileReference * DatagramInputFile::get_file | ( | ) | [virtual] |
Returns the FileReference that provides the source for these datagrams, if any, or NULL if the datagrams do not originate from a file on disk.
Reimplemented from DatagramGenerator.
Definition at line 320 of file datagramInputFile.cxx.
streampos DatagramInputFile::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 DatagramInputFiles that return a meaningful file position, this will be pointing to the first byte following the datagram returned after a call to get_datagram().
Reimplemented from DatagramGenerator.
Definition at line 349 of file datagramInputFile.cxx.
const Filename & DatagramInputFile::get_filename | ( | ) | [virtual] |
Returns the filename that provides the source for these datagrams, if any, or empty string if the datagrams do not originate from a file on disk.
Reimplemented from DatagramGenerator.
Definition at line 308 of file datagramInputFile.cxx.
istream & DatagramInputFile::get_stream | ( | ) | [inline] |
Returns the istream represented by the input file.
Definition at line 56 of file datagramInputFile.I.
VirtualFile * DatagramInputFile::get_vfile | ( | ) | [virtual] |
Returns the VirtualFile that provides the source for these datagrams, if any, or NULL if the datagrams do not originate from a VirtualFile.
Reimplemented from DatagramGenerator.
Definition at line 332 of file datagramInputFile.cxx.
bool DatagramInputFile::is_eof | ( | ) | [virtual] |
Returns true if the file has reached the end-of-file.
This test may only be made after a call to read_header() or get_datagram() has failed.
Implements DatagramGenerator.
Definition at line 278 of file datagramInputFile.cxx.
bool DatagramInputFile::is_error | ( | ) | [virtual] |
Returns true if the file has reached an error condition.
Implements DatagramGenerator.
Definition at line 289 of file datagramInputFile.cxx.
Referenced by RecorderController::is_error().
bool DatagramInputFile::open | ( | const FileReference * | file | ) |
Opens the indicated filename for reading.
Returns true on success, false on failure.
Definition at line 33 of file datagramInputFile.cxx.
References close(), VirtualFileSystem::get_global_ptr(), and Filename::set_binary().
Referenced by RecorderController::begin_playback(), NodePath::decode_from_bam_stream(), TypedWritable::decode_raw_from_bam_stream(), open(), and BamFile::open_read().
bool DatagramInputFile::open | ( | const Filename & | filename | ) | [inline] |
Opens the indicated filename for reading.
Returns true on success, false on failure.
Definition at line 46 of file datagramInputFile.I.
References open().
bool DatagramInputFile::open | ( | istream & | in, |
const Filename & | filename = Filename() |
||
) |
Starts reading from the indicated stream.
Returns true on success, false on failure. The DatagramInputFile does not take ownership of the stream; you are responsible for closing or deleting it when you are done.
Definition at line 63 of file datagramInputFile.cxx.
References close().
bool DatagramInputFile::read_header | ( | string & | header, |
size_t | num_bytes | ||
) |
Reads a sequence of bytes from 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 read. It may not be called once the first datagram has been read.
Definition at line 110 of file datagramInputFile.cxx.
References Thread::consider_yield().
Referenced by RecorderController::begin_playback(), NodePath::decode_from_bam_stream(), and TypedWritable::decode_raw_from_bam_stream().
bool DatagramInputFile::save_datagram | ( | SubfileInfo & | info | ) | [virtual] |
Skips over the next datagram without extracting it, but saves the relevant file information in the SubfileInfo object so that its data may be read later.
For non-file-based datagram generators, this may mean creating a temporary file and copying the contents of the datagram to disk.
Returns true on success, false on failure or if this method is unimplemented.
Reimplemented from DatagramGenerator.
Definition at line 203 of file datagramInputFile.cxx.
References StreamReader::get_uint32(), Filename::open_write(), and Filename::set_binary().