Public Member Functions | Private Member Functions | Private Attributes | Friends
rosbag::Bag Class Reference

#include <bag.h>

List of all members.

Public Member Functions

 Bag ()
 Bag (std::string const &filename, uint32_t mode=bagmode::Read)
 Open a bag file.
void close ()
 Close the bag file.
uint32_t getChunkThreshold () const
 Get the threshold for creating new chunks.
CompressionType getCompression () const
 Get the compression method to use for writing chunks.
std::string getFileName () const
 Get the filename of the bag.
uint32_t getMajorVersion () const
 Get the major-version of the open bag file.
uint32_t getMinorVersion () const
 Get the minor-version of the open bag file.
BagMode getMode () const
 Get the mode the bag is in.
uint64_t getSize () const
 Get the current size of the bag file (a lower bound)
void open (std::string const &filename, uint32_t mode=bagmode::Read)
 Open a bag file.
void setChunkThreshold (uint32_t chunk_threshold)
 Set the threshold for creating new chunks.
void setCompression (CompressionType compression)
 Set the compression method to use for writing chunks.
template<class T >
void write (std::string const &topic, ros::MessageEvent< T > const &event)
 Write a message into the bag file.
template<class T >
void write (std::string const &topic, ros::Time const &time, T const &msg, boost::shared_ptr< ros::M_string > connection_header=boost::shared_ptr< ros::M_string >())
 Write a message into the bag file.
template<class T >
void write (std::string const &topic, ros::Time const &time, boost::shared_ptr< T const > const &msg, boost::shared_ptr< ros::M_string > connection_header=boost::shared_ptr< ros::M_string >())
 Write a message into the bag file.
template<class T >
void write (std::string const &topic, ros::Time const &time, boost::shared_ptr< T > const &msg, boost::shared_ptr< ros::M_string > connection_header=boost::shared_ptr< ros::M_string >())
 Write a message into the bag file.
 ~Bag ()

Private Member Functions

void appendConnectionRecordToBuffer (Buffer &buf, ConnectionInfo const *connection_info)
void appendDataLengthToBuffer (Buffer &buf, uint32_t data_len)
void appendHeaderToBuffer (Buffer &buf, ros::M_string const &fields)
ros::M_string::const_iterator checkField (ros::M_string const &fields, std::string const &field, unsigned int min_len, unsigned int max_len, bool required) const
void closeWrite ()
void decompressBz2Chunk (ChunkHeader const &chunk_header) const
void decompressChunk (uint64_t chunk_pos) const
void decompressLz4Chunk (ChunkHeader const &chunk_header) const
void decompressRawChunk (ChunkHeader const &chunk_header) const
template<class T >
void doWrite (std::string const &topic, ros::Time const &time, T const &msg, boost::shared_ptr< ros::M_string > const &connection_header)
uint32_t getChunkOffset () const
template<class T >
boost::shared_ptr< T > instantiateBuffer (IndexEntry const &index_entry) const
 deserializes the message held in record_buffer_
bool isOp (ros::M_string &fields, uint8_t reqOp) const
void openAppend (std::string const &filename)
void openRead (std::string const &filename)
void openWrite (std::string const &filename)
void read (char *b, std::streamsize n) const
void readChunkHeader (ChunkHeader &chunk_header) const
void readChunkInfoRecord ()
void readConnectionIndexRecord200 ()
void readConnectionRecord ()
bool readDataLength (uint32_t &data_size) const
template<typename T >
bool readField (ros::M_string const &fields, std::string const &field_name, bool required, T *data) const
bool readField (ros::M_string const &fields, std::string const &field_name, unsigned int min_len, unsigned int max_len, bool required, std::string &data) const
bool readField (ros::M_string const &fields, std::string const &field_name, bool required, std::string &data) const
bool readField (ros::M_string const &fields, std::string const &field_name, bool required, ros::Time &data) const
void readFileHeaderRecord ()
bool readHeader (ros::Header &header) const
void readHeaderFromBuffer (Buffer &buffer, uint32_t offset, ros::Header &header, uint32_t &data_size, uint32_t &bytes_read) const
ros::Header readMessageDataHeader (IndexEntry const &index_entry)
void readMessageDataHeaderFromBuffer (Buffer &buffer, uint32_t offset, ros::Header &header, uint32_t &data_size, uint32_t &bytes_read) const
template<typename Stream >
void readMessageDataIntoStream (IndexEntry const &index_entry, Stream &stream) const
void readMessageDataRecord102 (uint64_t offset, ros::Header &header) const
uint32_t readMessageDataSize (IndexEntry const &index_entry) const
void readMessageDefinitionRecord102 ()
void readTopicIndexRecord102 ()
void readVersion ()
void seek (uint64_t pos, int origin=std::ios_base::beg) const
void startReadingVersion102 ()
void startReadingVersion200 ()
void startWriting ()
void startWritingChunk (ros::Time time)
void stopWriting ()
void stopWritingChunk ()
template<typename T >
std::string toHeaderString (T const *field) const
std::string toHeaderString (ros::Time const *field) const
void write (char const *s, std::streamsize n)
void write (std::string const &s)
void writeChunkHeader (CompressionType compression, uint32_t compressed_size, uint32_t uncompressed_size)
void writeChunkInfoRecords ()
void writeConnectionRecord (ConnectionInfo const *connection_info)
void writeConnectionRecords ()
void writeDataLength (uint32_t data_len)
void writeFileHeaderRecord ()
void writeHeader (ros::M_string const &fields)
void writeIndexRecords ()
template<class T >
void writeMessageDataRecord (uint32_t conn_id, ros::Time const &time, T const &msg)
void writeVersion ()

Private Attributes

uint32_t bag_revision_
Buffer chunk_buffer_
 reusable buffer to read chunk into
uint32_t chunk_count_
bool chunk_open_
uint32_t chunk_threshold_
std::vector< ChunkInfochunks_
CompressionType compression_
uint32_t connection_count_
std::map< uint32_t,
std::multiset< IndexEntry > > 
connection_indexes_
std::map< uint32_t,
ConnectionInfo * > 
connections_
std::map< uint32_t,
std::multiset< IndexEntry > > 
curr_chunk_connection_indexes_
uint64_t curr_chunk_data_pos_
ChunkInfo curr_chunk_info_
Buffercurrent_buffer_
Buffer decompress_buffer_
 reusable buffer to decompress chunks into
uint64_t decompressed_chunk_
 position of decompressed chunk
ChunkedFile file_
uint64_t file_header_pos_
uint64_t file_size_
Buffer header_buffer_
 reusable buffer in which to assemble the record header before writing to file
std::map< ros::M_string, uint32_t > header_connection_ids_
uint64_t index_data_pos_
BagMode mode_
Buffer outgoing_chunk_buffer_
 reusable buffer to read chunk into
Buffer record_buffer_
 reusable buffer in which to assemble the record data before writing to file
std::map< std::string, uint32_t > topic_connection_ids_
int version_

Friends

class MessageInstance
class View

Detailed Description

Definition at line 83 of file bag.h.


Constructor & Destructor Documentation

Definition at line 60 of file bag.cpp.

rosbag::Bag::Bag ( std::string const &  filename,
uint32_t  mode = bagmode::Read 
)

Open a bag file.

Parameters:
filenameThe bag file to open
modeThe mode to use (either read, write or append)

Can throw BagException

Definition at line 95 of file bag.cpp.


Member Function Documentation

void rosbag::Bag::appendConnectionRecordToBuffer ( Buffer buf,
ConnectionInfo const *  connection_info 
) [private]

Definition at line 654 of file bag.cpp.

void rosbag::Bag::appendDataLengthToBuffer ( Buffer buf,
uint32_t  data_len 
) [private]

Definition at line 991 of file bag.cpp.

void rosbag::Bag::appendHeaderToBuffer ( Buffer buf,
ros::M_string const &  fields 
) [private]

Definition at line 977 of file bag.cpp.

M_string::const_iterator rosbag::Bag::checkField ( ros::M_string const &  fields,
std::string const &  field,
unsigned int  min_len,
unsigned int  max_len,
bool  required 
) const [private]

Definition at line 1069 of file bag.cpp.

Close the bag file.

Definition at line 159 of file bag.cpp.

void rosbag::Bag::closeWrite ( ) [private]

Definition at line 178 of file bag.cpp.

void rosbag::Bag::decompressBz2Chunk ( ChunkHeader const &  chunk_header) const [private]

Definition at line 810 of file bag.cpp.

void rosbag::Bag::decompressChunk ( uint64_t  chunk_pos) const [private]

Definition at line 744 of file bag.cpp.

void rosbag::Bag::decompressLz4Chunk ( ChunkHeader const &  chunk_header) const [private]

Definition at line 826 of file bag.cpp.

void rosbag::Bag::decompressRawChunk ( ChunkHeader const &  chunk_header) const [private]

Definition at line 798 of file bag.cpp.

template<class T >
void rosbag::Bag::doWrite ( std::string const &  topic,
ros::Time const &  time,
T const &  msg,
boost::shared_ptr< ros::M_string > const &  connection_header 
) [private]

Definition at line 469 of file bag.h.

uint32_t rosbag::Bag::getChunkOffset ( ) const [private]

Definition at line 400 of file bag.cpp.

uint32_t rosbag::Bag::getChunkThreshold ( ) const

Get the threshold for creating new chunks.

Definition at line 186 of file bag.cpp.

Get the compression method to use for writing chunks.

Definition at line 195 of file bag.cpp.

string rosbag::Bag::getFileName ( ) const

Get the filename of the bag.

Definition at line 182 of file bag.cpp.

uint32_t rosbag::Bag::getMajorVersion ( ) const

Get the major-version of the open bag file.

Definition at line 242 of file bag.cpp.

uint32_t rosbag::Bag::getMinorVersion ( ) const

Get the minor-version of the open bag file.

Definition at line 243 of file bag.cpp.

Get the mode the bag is in.

Definition at line 183 of file bag.cpp.

uint64_t rosbag::Bag::getSize ( ) const

Get the current size of the bag file (a lower bound)

Definition at line 184 of file bag.cpp.

template<class T >
boost::shared_ptr< T > rosbag::Bag::instantiateBuffer ( IndexEntry const &  index_entry) const [private]

deserializes the message held in record_buffer_

Definition at line 384 of file bag.h.

bool rosbag::Bag::isOp ( ros::M_string fields,
uint8_t  reqOp 
) const [private]

Definition at line 959 of file bag.cpp.

void rosbag::Bag::open ( std::string const &  filename,
uint32_t  mode = bagmode::Read 
)

Open a bag file.

Parameters:
filenameThe bag file to open
modeThe mode to use (either read, write or append)

Can throw BagException

Definition at line 99 of file bag.cpp.

void rosbag::Bag::openAppend ( std::string const &  filename) [private]

Definition at line 137 of file bag.cpp.

void rosbag::Bag::openRead ( std::string const &  filename) [private]

Definition at line 118 of file bag.cpp.

void rosbag::Bag::openWrite ( std::string const &  filename) [private]

Definition at line 131 of file bag.cpp.

void rosbag::Bag::read ( char *  b,
std::streamsize  n 
) const [private]

Definition at line 1117 of file bag.cpp.

void rosbag::Bag::readChunkHeader ( ChunkHeader chunk_header) const [private]

Definition at line 475 of file bag.cpp.

Definition at line 914 of file bag.cpp.

Definition at line 584 of file bag.cpp.

Definition at line 664 of file bag.cpp.

bool rosbag::Bag::readDataLength ( uint32_t &  data_size) const [private]

Definition at line 1064 of file bag.cpp.

template<typename T >
bool rosbag::Bag::readField ( ros::M_string const &  fields,
std::string const &  field_name,
bool  required,
T *  data 
) const [private]

Definition at line 347 of file bag.h.

bool rosbag::Bag::readField ( ros::M_string const &  fields,
std::string const &  field_name,
unsigned int  min_len,
unsigned int  max_len,
bool  required,
std::string &  data 
) const [private]
bool rosbag::Bag::readField ( ros::M_string const &  fields,
std::string const &  field_name,
bool  required,
std::string &  data 
) const [private]
bool rosbag::Bag::readField ( ros::M_string const &  fields,
std::string const &  field_name,
bool  required,
ros::Time data 
) const [private]

Definition at line 370 of file bag.cpp.

bool rosbag::Bag::readHeader ( ros::Header header) const [private]

Definition at line 1046 of file bag.cpp.

void rosbag::Bag::readHeaderFromBuffer ( Buffer buffer,
uint32_t  offset,
ros::Header header,
uint32_t &  data_size,
uint32_t &  bytes_read 
) const [private]
Todo:
clean this up

Definition at line 1000 of file bag.cpp.

ros::Header rosbag::Bag::readMessageDataHeader ( IndexEntry const &  index_entry) [private]

Definition at line 843 of file bag.cpp.

void rosbag::Bag::readMessageDataHeaderFromBuffer ( Buffer buffer,
uint32_t  offset,
ros::Header header,
uint32_t &  data_size,
uint32_t &  bytes_read 
) const [private]

Definition at line 1026 of file bag.cpp.

template<typename Stream >
void rosbag::Bag::readMessageDataIntoStream ( IndexEntry const &  index_entry,
Stream stream 
) const [private]

Definition at line 356 of file bag.h.

void rosbag::Bag::readMessageDataRecord102 ( uint64_t  offset,
ros::Header header 
) const [private]

Definition at line 775 of file bag.cpp.

uint32_t rosbag::Bag::readMessageDataSize ( IndexEntry const &  index_entry) const [private]

Definition at line 862 of file bag.cpp.

Definition at line 700 of file bag.cpp.

Definition at line 522 of file bag.cpp.

void rosbag::Bag::readVersion ( ) [private]

Definition at line 223 of file bag.cpp.

void rosbag::Bag::seek ( uint64_t  pos,
int  origin = std::ios_base::beg 
) const [private]

Definition at line 1118 of file bag.cpp.

void rosbag::Bag::setChunkThreshold ( uint32_t  chunk_threshold)

Set the threshold for creating new chunks.

Definition at line 188 of file bag.cpp.

Set the compression method to use for writing chunks.

Definition at line 197 of file bag.cpp.

Definition at line 302 of file bag.cpp.

Definition at line 267 of file bag.cpp.

void rosbag::Bag::startWriting ( ) [private]

Definition at line 247 of file bag.cpp.

void rosbag::Bag::startWritingChunk ( ros::Time  time) [private]

Definition at line 407 of file bag.cpp.

void rosbag::Bag::stopWriting ( ) [private]

Definition at line 253 of file bag.cpp.

void rosbag::Bag::stopWritingChunk ( ) [private]

Definition at line 425 of file bag.cpp.

template<typename T >
std::string rosbag::Bag::toHeaderString ( T const *  field) const [private]

Definition at line 342 of file bag.h.

std::string rosbag::Bag::toHeaderString ( ros::Time const *  field) const [private]

Definition at line 1106 of file bag.cpp.

template<class T >
void rosbag::Bag::write ( std::string const &  topic,
ros::MessageEvent< T > const &  event 
)

Write a message into the bag file.

Parameters:
topicThe topic name
eventThe message event to be added

Can throw BagIOException

Definition at line 322 of file bag.h.

template<class T >
void rosbag::Bag::write ( std::string const &  topic,
ros::Time const &  time,
T const &  msg,
boost::shared_ptr< ros::M_string connection_header = boost::shared_ptr<ros::M_string>() 
)

Write a message into the bag file.

Parameters:
topicThe topic name
timeTimestamp of the message
msgThe message to be added
connection_headerA connection header.

Can throw BagIOException

Definition at line 327 of file bag.h.

template<class T >
void rosbag::Bag::write ( std::string const &  topic,
ros::Time const &  time,
boost::shared_ptr< T const > const &  msg,
boost::shared_ptr< ros::M_string connection_header = boost::shared_ptr<ros::M_string>() 
)

Write a message into the bag file.

Parameters:
topicThe topic name
timeTimestamp of the message
msgThe message to be added
connection_headerA connection header.

Can throw BagIOException

Definition at line 332 of file bag.h.

template<class T >
void rosbag::Bag::write ( std::string const &  topic,
ros::Time const &  time,
boost::shared_ptr< T > const &  msg,
boost::shared_ptr< ros::M_string connection_header = boost::shared_ptr<ros::M_string>() 
)

Write a message into the bag file.

Parameters:
topicThe topic name
timeTimestamp of the message
msgThe message to be added
connection_headerA connection header.

Can throw BagIOException

Definition at line 337 of file bag.h.

void rosbag::Bag::write ( char const *  s,
std::streamsize  n 
) [private]

Definition at line 1115 of file bag.cpp.

void rosbag::Bag::write ( std::string const &  s) [private]
void rosbag::Bag::writeChunkHeader ( CompressionType  compression,
uint32_t  compressed_size,
uint32_t  uncompressed_size 
) [private]

Definition at line 452 of file bag.cpp.

Definition at line 880 of file bag.cpp.

void rosbag::Bag::writeConnectionRecord ( ConnectionInfo const *  connection_info) [private]

Definition at line 641 of file bag.cpp.

Definition at line 634 of file bag.cpp.

void rosbag::Bag::writeDataLength ( uint32_t  data_len) [private]

Definition at line 973 of file bag.cpp.

Definition at line 338 of file bag.cpp.

void rosbag::Bag::writeHeader ( ros::M_string const &  fields) [private]

Definition at line 965 of file bag.cpp.

void rosbag::Bag::writeIndexRecords ( ) [private]

Definition at line 493 of file bag.cpp.

template<class T >
void rosbag::Bag::writeMessageDataRecord ( uint32_t  conn_id,
ros::Time const &  time,
T const &  msg 
) [private]

Definition at line 580 of file bag.h.

void rosbag::Bag::writeVersion ( ) [private]

Definition at line 213 of file bag.cpp.


Friends And Related Function Documentation

friend class MessageInstance [friend]

Definition at line 85 of file bag.h.

friend class View [friend]

Definition at line 86 of file bag.h.


Member Data Documentation

uint32_t rosbag::Bag::bag_revision_ [private]

Definition at line 278 of file bag.h.

Buffer rosbag::Bag::chunk_buffer_ [mutable, private]

reusable buffer to read chunk into

Definition at line 303 of file bag.h.

uint32_t rosbag::Bag::chunk_count_ [private]

Definition at line 284 of file bag.h.

bool rosbag::Bag::chunk_open_ [private]

Definition at line 287 of file bag.h.

uint32_t rosbag::Bag::chunk_threshold_ [private]

Definition at line 277 of file bag.h.

std::vector<ChunkInfo> rosbag::Bag::chunks_ [private]

Definition at line 295 of file bag.h.

Definition at line 276 of file bag.h.

uint32_t rosbag::Bag::connection_count_ [private]

Definition at line 283 of file bag.h.

std::map<uint32_t, std::multiset<IndexEntry> > rosbag::Bag::connection_indexes_ [private]

Definition at line 297 of file bag.h.

std::map<uint32_t, ConnectionInfo*> rosbag::Bag::connections_ [private]

Definition at line 293 of file bag.h.

std::map<uint32_t, std::multiset<IndexEntry> > rosbag::Bag::curr_chunk_connection_indexes_ [private]

Definition at line 298 of file bag.h.

Definition at line 289 of file bag.h.

Definition at line 288 of file bag.h.

Buffer* rosbag::Bag::current_buffer_ [mutable, private]

Definition at line 308 of file bag.h.

reusable buffer to decompress chunks into

Definition at line 304 of file bag.h.

uint64_t rosbag::Bag::decompressed_chunk_ [mutable, private]

position of decompressed chunk

Definition at line 310 of file bag.h.

ChunkedFile rosbag::Bag::file_ [mutable, private]

Definition at line 274 of file bag.h.

uint64_t rosbag::Bag::file_header_pos_ [private]

Definition at line 281 of file bag.h.

uint64_t rosbag::Bag::file_size_ [private]

Definition at line 280 of file bag.h.

Buffer rosbag::Bag::header_buffer_ [mutable, private]

reusable buffer in which to assemble the record header before writing to file

Definition at line 300 of file bag.h.

std::map<ros::M_string, uint32_t> rosbag::Bag::header_connection_ids_ [private]

Definition at line 292 of file bag.h.

uint64_t rosbag::Bag::index_data_pos_ [private]

Definition at line 282 of file bag.h.

Definition at line 273 of file bag.h.

reusable buffer to read chunk into

Definition at line 306 of file bag.h.

Buffer rosbag::Bag::record_buffer_ [mutable, private]

reusable buffer in which to assemble the record data before writing to file

Definition at line 301 of file bag.h.

std::map<std::string, uint32_t> rosbag::Bag::topic_connection_ids_ [private]

Definition at line 291 of file bag.h.

int rosbag::Bag::version_ [private]

Definition at line 275 of file bag.h.


The documentation for this class was generated from the following files:


rosbag_storage
Author(s):
autogenerated on Tue Mar 7 2017 03:44:35