gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ProtoInputStream Class Reference

A ProtoInputStream wraps a coded stream, potentially with decompression, based on looking at the file name. More...

#include <protoio.hh>

Inheritance diagram for ProtoInputStream:
ProtoStream

Public Member Functions

 ProtoInputStream (const std::string &filename)
 Create an input stream for a given file name. More...
 
 ~ProtoInputStream ()
 Destruct the input stream, and also close the underlying file streams and coded streams. More...
 
bool read (google::protobuf::Message &msg)
 Read a message from the stream. More...
 
void reset ()
 Reset the input stream and seek to the beginning of the file. More...
 

Private Member Functions

void createStreams ()
 Create the internal streams that are wrapping the input file. More...
 
void destroyStreams ()
 Destroy the internal streams that are wrapping the input file. More...
 

Private Attributes

std::ifstream fileStream
 Underlying file input stream. More...
 
const std::string fileName
 Hold on to the file name for debug messages. More...
 
bool useGzip
 Boolean flag to remember whether we use gzip or not. More...
 
google::protobuf::io::IstreamInputStream * wrappedFileStream
 Zero Copy stream wrapping the STL input stream. More...
 
google::protobuf::io::GzipInputStream * gzipStream
 Optional Gzip stream to wrap the Zero Copy stream. More...
 
google::protobuf::io::ZeroCopyInputStream * zeroCopyStream
 Top-level zero-copy stream, either with compression or not. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ProtoStream
 ProtoStream ()
 Create a ProtoStream. More...
 
- Static Protected Attributes inherited from ProtoStream
static const uint32_t magicNumber = 0x356d6567
 Use the ASCII characters gem5 as our magic number. More...
 

Detailed Description

A ProtoInputStream wraps a coded stream, potentially with decompression, based on looking at the file name.

Reading from the stream is done on a per-message basis to avoid having to deal with huge data structures. The latter assumes the length of each message is encoded in the stream when it is written.

Definition at line 142 of file protoio.hh.

Constructor & Destructor Documentation

ProtoInputStream::ProtoInputStream ( const std::string &  filename)

Create an input stream for a given file name.

If the filename ends with .gz then the file will be decompressed accordingly.

Parameters
filenamePath to the file to read from

Definition at line 98 of file protoio.cc.

References createStreams(), fileStream, panic, and useGzip.

ProtoInputStream::~ProtoInputStream ( )

Destruct the input stream, and also close the underlying file streams and coded streams.

Definition at line 159 of file protoio.cc.

References destroyStreams(), and fileStream.

Member Function Documentation

void ProtoInputStream::createStreams ( )
private

Create the internal streams that are wrapping the input file.

Definition at line 119 of file protoio.cc.

References fileName, fileStream, gzipStream, ProtoStream::magicNumber, panic, useGzip, wrappedFileStream, and zeroCopyStream.

Referenced by ProtoInputStream(), and reset().

void ProtoInputStream::destroyStreams ( )
private

Destroy the internal streams that are wrapping the input file.

Definition at line 145 of file protoio.cc.

References gzipStream, wrappedFileStream, and zeroCopyStream.

Referenced by reset(), and ~ProtoInputStream().

bool ProtoInputStream::read ( google::protobuf::Message &  msg)

Read a message from the stream.

Parameters
msgMessage read from the stream
returnTrue if a message was read, false if reading fails

Definition at line 177 of file protoio.cc.

References fileName, panic, X86ISA::size(), and zeroCopyStream.

Referenced by TraceCPU::FixedRetryGen::InputStream::InputStream(), and TraceCPU::ElasticDataGen::InputStream::InputStream().

void ProtoInputStream::reset ( )

Reset the input stream and seek to the beginning of the file.

Definition at line 167 of file protoio.cc.

References createStreams(), destroyStreams(), and fileStream.

Member Data Documentation

const std::string ProtoInputStream::fileName
private

Hold on to the file name for debug messages.

Definition at line 190 of file protoio.hh.

Referenced by createStreams(), and read().

std::ifstream ProtoInputStream::fileStream
private

Underlying file input stream.

Definition at line 187 of file protoio.hh.

Referenced by createStreams(), ProtoInputStream(), reset(), and ~ProtoInputStream().

google::protobuf::io::GzipInputStream* ProtoInputStream::gzipStream
private

Optional Gzip stream to wrap the Zero Copy stream.

Definition at line 199 of file protoio.hh.

Referenced by createStreams(), and destroyStreams().

bool ProtoInputStream::useGzip
private

Boolean flag to remember whether we use gzip or not.

Definition at line 193 of file protoio.hh.

Referenced by createStreams(), and ProtoInputStream().

google::protobuf::io::IstreamInputStream* ProtoInputStream::wrappedFileStream
private

Zero Copy stream wrapping the STL input stream.

Definition at line 196 of file protoio.hh.

Referenced by createStreams(), and destroyStreams().

google::protobuf::io::ZeroCopyInputStream* ProtoInputStream::zeroCopyStream
private

Top-level zero-copy stream, either with compression or not.

Definition at line 202 of file protoio.hh.

Referenced by createStreams(), destroyStreams(), and read().


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

Generated on Fri Jun 9 2017 13:04:17 for gem5 by doxygen 1.8.6