libcsdbg  1.28
C++ exception (and generic) stack trace debug library
csdbg::filebuf Class Reference

A buffered file output stream. More...

#include <filebuf.hpp>

+ Inheritance diagram for csdbg::filebuf:
+ Collaboration diagram for csdbg::filebuf:

Public Member Functions

 filebuf (const i8 *)
 Object constructor. More...
 
 filebuf (const filebuf &)
 Object copy constructor. More...
 
virtual ~filebuf ()
 Object destructor. More...
 
virtual filebuf * clone () const
 Object virtual copy constructor. More...
 
virtual const i8 * path () const
 Get the output file path. More...
 
virtual filebuf & operator= (const filebuf &)
 Assignment operator. More...
 
virtual filebuf & open ()
 Open the file for output. More...
 
virtual filebuf & open (u32, u32)
 Open the file. More...
 
virtual filebuf & flush ()
 Flush the buffered data to the file. More...
 
virtual filebuf & sync () const
 Commit cached data to the file. More...
 
virtual filebuf & sync (bool) const
 Commit cached data to the file. More...
 
virtual filebuf & seek_to (i32, bool=false)
 Seek the file pointer to a new position. More...
 
virtual filebuf & resize (u32)
 Resize the file. More...
 
- Public Member Functions inherited from csdbg::streambuf
 streambuf ()
 Object default constructor. More...
 
 streambuf (const streambuf &)
 Object copy constructor. More...
 
virtual ~streambuf ()=0
 To be implemented. More...
 
virtual i32 handle () const
 Get the handle. More...
 
virtual bool is_opened () const
 Check if the stream is opened for output. More...
 
virtual streambuf & operator= (const streambuf &)
 Assignment operator. More...
 
virtual streambuf & close ()
 Close the stream. More...
 
virtual streambuf & lock () const
 Lock the stream (exclusively) More...
 
virtual streambuf & unlock () const
 Unlock the stream. More...
 
virtual streambuf & header ()
 Append LDP headers to the buffer. More...
 
- Public Member Functions inherited from csdbg::string
 string (u32=0)
 Object constructor. More...
 
 string (const i8 *,...)
 Object constructor. More...
 
 string (const string &)
 Object copy constructor. More...
 
virtual ~string ()
 Object destructor. More...
 
virtual const i8 * cstr () const
 Get the C-string equivalent. More...
 
virtual u32 length () const
 Get the character count. More...
 
virtual u32 bufsize () const
 Get the buffer size. More...
 
virtual i8 & at (u32)
 Get/set the character at an offset. More...
 
virtual string & set (const i8 *,...)
 Fill with a printf-style format C-string expanded with the values of a variable argument list. More...
 
virtual string & set (const string &)
 Copy a string. More...
 
virtual string & operator= (const string &)
 Assignment operator. More...
 
virtual string & operator+= (const string &)
 Compound addition-assignment operator (append) More...
 
virtual i8 & operator[] (u32)
 Subscript operator. More...
 
virtual u32 available () const
 Get the available buffer size, the number of characters that can be appended without reallocation. More...
 
virtual string & shred (u8=0)
 Fill the whole buffer with a constant byte. More...
 
virtual string & clear ()
 Clear contents. More...
 
virtual string & append (const string &)
 Append a string. More...
 
virtual string & append (const i8 *,...)
 Append a printf-style format C-string expanded with the values of a variable argument list. More...
 
virtual string & append (i8)
 Append a character. More...
 
virtual i32 cmp (const string &, bool=false) const
 Compare to another string. More...
 
virtual bool match (const string &, bool=false) const
 Match against a POSIX extended regular expression. More...
 
virtual string & trim (i32=0)
 Remove leading and/or trailing whitespace characters. More...
 
virtual string & insert (u32, const string &)
 Insert a string at a specified position. More...
 
virtual string & insert (u32, const i8 *,...)
 Insert a printf-style format C-string expanded with the values of a variable argument list, at a specified position. More...
 
virtual chain< string > * split (const string &, bool=true, bool=false) const
 Tokenize using a POSIX extended regular expression. More...
 
- Public Member Functions inherited from csdbg::object
virtual ~object ()=0
 To be implemented. More...
 
virtual const i8 * class_name () const
 Query the class name of an object descending from csdbg::object. More...
 

Static Public Member Functions

static string * unique_id (const i8 *)
 Create a unique ID based on process identifiers arranged as indicated by a printf-style format string. More...
 

Protected Attributes

i8 * m_path
 Output file path. More...
 
- Protected Attributes inherited from csdbg::streambuf
i32 m_handle
 Stream handle (descriptor) More...
 
- Protected Attributes inherited from csdbg::string
i8 * m_data
 String data. More...
 
u32 m_length
 Character count. More...
 
u32 m_size
 Buffer size. More...
 

Additional Inherited Members

- Protected Member Functions inherited from csdbg::string
virtual string & memalign (u32, bool=false)
 Allocate aligned memory, mandate a minimum buffer size. More...
 
virtual string & format (const i8 *, va_list)
 Fill with a printf-style format C-string expanded with the values of a variable argument list. More...
 

Detailed Description

A buffered file output stream.

A filebuf object is a buffered output stream used to output LDP and generic data to a file. Based on the unique identifiers of the instrumented process, a filebuf object can assign file names in an unambiguous way. The class is not thread safe, the caller must implement thread synchronization, nevertheless basic file locking methods are inherited from csdbg::streambuf

Note
Methods seek_to and resize are not const in case mmap is used
See Also
5.4 LDP (Libcsdbg Debug Protocol)
5.5.1 Using csdbg::filebuf
Todo:

Recode unique_id to return a new filebuf object

Add a specifier for a fixed length random string to unique_id

Definition at line 31 of file filebuf.hpp.


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