Panda3D
Public Member Functions
DatagramInputFile Class Reference

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"

Inheritance diagram for DatagramInputFile:
DatagramGenerator

List of all members.

Public Member Functions

void close ()
 Closes the file.
virtual bool get_datagram (Datagram &data)
 Reads the next datagram from the file.
virtual const FileReferenceget_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 Filenameget_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 VirtualFileget_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.

Detailed Description

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.


Member Function Documentation

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().

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.

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.

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().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations