tcpflow  1.6.1
About: tcpflow is a TCP/IP packet demultiplexer that captures data transmitted as part of TCP connections (flows), and stores the data in a way that is convenient for protocol analysis and debugging.
  Fossies Dox: tcpflow-1.6.1.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

feature_recorder Class Reference

#include <feature_recorder.h>

Collaboration diagram for feature_recorder:
[legend]

Classes

class  besql_stmt
 

Public Types

enum  carve_mode_t { CARVE_NONE =0 , CARVE_ENCODED =1 , CARVE_ALL =2 }
 
typedef int() dump_callback_t(void *user, const feature_recorder &fr, const histogram_def &def, const std::string &feature, const uint64_t &count)
 
typedef std::string offset_t
 
typedef void(* xml_notifier_t) (const std::string &xmlstring)
 
typedef std::string(* hashing_function_t) (const sbuf_t &sbuf)
 

Public Member Functions

 feature_recorder (class feature_recorder_set &fs, const std::string &name)
 
virtual ~feature_recorder ()
 
virtual void set_flag (uint32_t flags_)
 
virtual void unset_flag (uint32_t flags_)
 
void enable_memory_histograms ()
 
virtual void set_memhist_limit (int64_t limit_)
 
bool flag_set (uint32_t f) const
 
bool flag_notset (uint32_t f) const
 
uint32_t get_flags () const
 
virtual const std::string & get_outdir () const
 
void set_stop_list_recorder (class feature_recorder *fr)
 
void set_context_window (size_t win)
 
void set_context_window_before (size_t win)
 
void set_context_window_after (size_t win)
 
void set_carve_ignore_encoding (const std::string &encoding)
 
uint64_t file_number_add (uint64_t i)
 
void banner_stamp (std::ostream &os, const std::string &header) const
 
std::string fname_counter (std::string suffix) const
 
virtual void open ()
 
virtual void close ()
 
virtual void flush ()
 
virtual void add_histogram (const histogram_def &def)
 
virtual void dump_histogram_file (const histogram_def &def, void *user, feature_recorder::dump_callback_t cb) const
 
virtual void dump_histogram_db (const histogram_def &def, void *user, feature_recorder::dump_callback_t cb) const
 
virtual void dump_histogram (const histogram_def &def, void *user, feature_recorder::dump_callback_t cb) const
 
virtual void dump_histograms (void *user, feature_recorder::dump_callback_t cb, xml_notifier_t xml_error_notifier) const
 
uint64_t count () const
 
virtual void write (const std::string &str)
 
void quote_if_necessary (std::string &feature, std::string &context)
 
virtual void printf (const char *fmt_,...)
 
virtual void write0 (const pos0_t &pos0, const std::string &feature, const std::string &context)
 
virtual void write (const pos0_t &pos0, const std::string &feature, const std::string &context)
 
virtual void write_buf (const sbuf_t &sbuf, size_t pos, size_t len)
 
void set_carve_mode (carve_mode_t aMode)
 
virtual std::string carve (const sbuf_t &sbuf, size_t pos, size_t len, const std::string &ext)
 
virtual void set_carve_mtime (const std::string &fname, const std::string &mtime_iso8601)
 

Static Public Member Functions

static void set_main_threadid ()
 
static void set_debug (uint32_t ndebug)
 
static std::string extract_feature (const std::string &line)
 
static std::string quote_string (const std::string &feature)
 
static std::string unquote_string (const std::string &feature)
 
static int dump_callback_test (void *user, const feature_recorder &fr, const std::string &str, const uint64_t &count)
 

Public Attributes

const std::string name
 
class feature_recorder_setfs
 
carve_mode_t carve_mode
 

Static Public Attributes

static const int max_histogram_files = 10
 
static const std::string histogram_file_header
 
static const std::string feature_file_header
 
static const std::string bulk_extractor_version_header
 
static uint32_t opt_max_context_size =1024*1024
 
static uint32_t opt_max_feature_size =1024*1024
 
static int64_t offset_add = 0
 
static std::string banner_file
 
static size_t context_window_default =16
 
Flags that control scanners

These flags control scanners. Set them with set_flag().

static const int FLAG_DISABLED = 0x01
 
static const int FLAG_NO_CONTEXT = 0x02
 
static const int FLAG_NO_STOPLIST = 0x04
 
static const int FLAG_NO_ALERTLIST = 0x08
 
static const int FLAG_NO_QUOTE = 0x10
 
static const int FLAG_XML = 0x20
 
static const uint32_t FLAG_NO_FEATURES = 0x40
 
static const uint32_t FLAG_NO_FEATURES_SQL = 0x80
 

Protected Attributes

histogram_defs_t histogram_defs
 
int64_t count_
 
size_t context_window_before
 
size_t context_window_after
 
cppmutex Mf
 
cppmutex Mr
 
mhistograms_t mhistograms
 
uint64_t mhistogram_limit
 
class feature_recorderstop_list_recorder
 
int64_t file_number_
 
carve_cache_t carve_cache
 

Private Member Functions

 feature_recorder (const feature_recorder &)
 
feature_recorderoperator= (const feature_recorder &)
 
virtual void db_write0 (const pos0_t &pos0, const std::string &feature, const std::string &context)
 

Static Private Member Functions

static void MAINTHREAD ()
 

Private Attributes

uint32_t flags
 
std::string ignore_encoding
 
std::fstream ios
 
class besql_stmtbs
 

Static Private Attributes

static uint32_t debug =0
 
static pthread_t main_threadid = 0
 
static const char * db_insert_stmt = "INSERT INTO f_%s (offset,path,feature_eutf8,feature_utf8,context_eutf8) VALUES (?1, ?2, ?3, ?4, ?5)"
 

Detailed Description

Definition at line 123 of file feature_recorder.h.

Member Typedef Documentation

◆ dump_callback_t

typedef int() feature_recorder::dump_callback_t(void *user, const feature_recorder &fr, const histogram_def &def, const std::string &feature, const uint64_t &count)

Definition at line 148 of file feature_recorder.h.

◆ hashing_function_t

typedef std::string(* feature_recorder::hashing_function_t) (const sbuf_t &sbuf)

Definition at line 352 of file feature_recorder.h.

◆ offset_t

typedef std::string feature_recorder::offset_t

Definition at line 156 of file feature_recorder.h.

◆ xml_notifier_t

typedef void(* feature_recorder::xml_notifier_t) (const std::string &xmlstring)

Definition at line 289 of file feature_recorder.h.

Member Enumeration Documentation

◆ carve_mode_t

support for carving. Carving writes the filename to the feature file; the context is the file's hash using the provided function. Automatically de-duplicates.

Enumerator
CARVE_NONE 
CARVE_ENCODED 
CARVE_ALL 

Definition at line 346 of file feature_recorder.h.

Constructor & Destructor Documentation

◆ feature_recorder() [1/2]

feature_recorder::feature_recorder ( const feature_recorder )
private

◆ feature_recorder() [2/2]

feature_recorder::feature_recorder ( class feature_recorder_set fs_,
const std::string &  name_ 
)

Create a feature recorder object. Each recorder records a certain kind of feature. Features are stored in a file. The filename is permutated based on the total number of threads and the current thread that's recording. Each thread records to a different file, and thus a different feature recorder, to avoid locking problems.

Parameters
feature_recorder_set&fs - common information for all of the feature recorders
name- the name of the feature being recorded.

Definition at line 51 of file feature_recorder.cpp.

References open().

◆ ~feature_recorder()

feature_recorder::~feature_recorder ( )
virtual

Definition at line 69 of file feature_recorder.cpp.

References ios.

Member Function Documentation

◆ add_histogram()

void feature_recorder::add_histogram ( const histogram_def def)
virtual

Definition at line 491 of file feature_recorder.cpp.

References histogram_defs.

Referenced by feature_recorder_set::add_histogram().

◆ banner_stamp()

void feature_recorder::banner_stamp ( std::ostream &  os,
const std::string &  header 
) const

◆ carve()

std::string feature_recorder::carve ( const sbuf_t sbuf,
size_t  pos,
size_t  len,
const std::string &  ext 
)
virtual

◆ close()

void feature_recorder::close ( )
virtual

Definition at line 173 of file feature_recorder.cpp.

References ios.

Referenced by carve().

◆ count()

uint64_t feature_recorder::count ( ) const
inline

Definition at line 293 of file feature_recorder.h.

References count_.

Referenced by dump_callback_test().

◆ db_write0()

void feature_recorder::db_write0 ( const pos0_t pos0,
const std::string &  feature,
const std::string &  context 
)
privatevirtual

Note: this is not very efficient, passing through a quoted feature and then unquoting it. We could make this more efficient.

Definition at line 219 of file feature_recorder_sql.cpp.

References bs, HistogramMaker::convert_utf16_to_utf8(), FLAG_NO_CONTEXT, flag_set(), feature_recorder::besql_stmt::insert_feature(), and unquote_string().

Referenced by write0().

◆ dump_callback_test()

int feature_recorder::dump_callback_test ( void *  user,
const feature_recorder fr,
const std::string &  str,
const uint64_t &  count 
)
static

Create a histogram for this feature recorder and an extraction pattern.

Definition at line 296 of file feature_recorder.cpp.

References count().

◆ dump_histogram()

◆ dump_histogram_db()

void feature_recorder::dump_histogram_db ( const histogram_def def,
void *  user,
feature_recorder::dump_callback_t  cb 
) const
virtual

◆ dump_histogram_file()

void feature_recorder::dump_histogram_file ( const histogram_def def,
void *  user,
feature_recorder::dump_callback_t  cb 
) const
virtual

PHASE HISTOGRAM (formerly phase 3): Create the histograms We now have three kinds of histograms: 1 - Traditional post-processing histograms specified by the histogram library 1a - feature-file based traditional ones 1b - SQL-based traditional ones. 2 - In-memory histograms (used primarily by beapi) Dump a specific histogram

If there is a string required in the line and it isn't present, don't use this line

If there is a pattern to use to prune down the feature, use it

Definition at line 344 of file feature_recorder.cpp.

References HistogramMaker::add(), banner_stamp(), extract_feature(), histogram_def::flags, fname_counter(), histogram_file_header, HistogramMaker::makeReport(), max_histogram_files, name, histogram_def::pattern, histogram_def::reg, histogram_def::require, beregex::search(), histogram_def::suffix, truncate_at(), and unquote_string().

Referenced by dump_histogram().

◆ dump_histograms()

void feature_recorder::dump_histograms ( void *  user,
feature_recorder::dump_callback_t  cb,
feature_recorder_set::xml_notifier_t  xml_error_notifier 
) const
virtual

Definition at line 463 of file feature_recorder.cpp.

References dump_histogram(), histogram_defs, and name.

Referenced by feature_recorder_set::dump_histograms().

◆ enable_memory_histograms()

void feature_recorder::enable_memory_histograms ( )

Definition at line 283 of file feature_recorder.cpp.

References histogram_defs, and mhistograms.

Referenced by feature_recorder_set::set_flag().

◆ extract_feature()

std::string feature_recorder::extract_feature ( const std::string &  line)
static

Get the feature which is defined as being between a \t and [\t
]

Definition at line 253 of file feature_recorder.cpp.

Referenced by dump_histogram_file().

◆ file_number_add()

uint64_t feature_recorder::file_number_add ( uint64_t  i)
inline

Definition at line 255 of file feature_recorder.h.

References file_number_, and Mf.

Referenced by carve().

◆ flag_notset()

bool feature_recorder::flag_notset ( uint32_t  f) const
inline

Definition at line 208 of file feature_recorder.h.

Referenced by quote_if_necessary(), write(), and write0().

◆ flag_set()

bool feature_recorder::flag_set ( uint32_t  f) const
inline

Definition at line 207 of file feature_recorder.h.

Referenced by db_write0(), and write().

◆ flush()

void feature_recorder::flush ( )
virtual

Definition at line 180 of file feature_recorder.cpp.

References ios, and Mf.

◆ fname_counter()

std::string feature_recorder::fname_counter ( std::string  suffix) const

Return the filename with a counter

Definition at line 113 of file feature_recorder.cpp.

References fs, feature_recorder_set::get_outdir(), and name.

Referenced by dump_histogram_file(), and open().

◆ get_flags()

uint32_t feature_recorder::get_flags ( ) const
inline

Definition at line 209 of file feature_recorder.h.

References flags.

◆ get_outdir()

const std::string & feature_recorder::get_outdir ( ) const
virtual

Definition at line 119 of file feature_recorder.cpp.

References fs, and feature_recorder_set::get_outdir().

◆ open()

void feature_recorder::open ( )
virtual

◆ operator=()

feature_recorder& feature_recorder::operator= ( const feature_recorder )
private

◆ printf()

void feature_recorder::printf ( const char *  fmt_,
  ... 
)
virtual

Definition at line 537 of file feature_recorder.cpp.

References managed_malloc< TYPE >::buf, and write().

◆ quote_if_necessary()

void feature_recorder::quote_if_necessary ( std::string &  feature,
std::string &  context 
)

support for writing features

the main entry point of writing a feature and its context to the feature file. processes the stop list

Definition at line 581 of file feature_recorder.cpp.

References FLAG_NO_CONTEXT, FLAG_NO_QUOTE, flag_notset(), FLAG_XML, opt_max_context_size, opt_max_feature_size, and validateOrEscapeUTF8().

Referenced by write().

◆ quote_string()

static std::string feature_recorder::quote_string ( const std::string &  feature)
static

◆ set_carve_ignore_encoding()

void feature_recorder::set_carve_ignore_encoding ( const std::string &  encoding)
inline

Definition at line 252 of file feature_recorder.h.

References ignore_encoding, and MAINTHREAD().

◆ set_carve_mode()

void feature_recorder::set_carve_mode ( carve_mode_t  aMode)
inline

Definition at line 353 of file feature_recorder.h.

References carve_mode, and MAINTHREAD().

◆ set_carve_mtime()

void feature_recorder::set_carve_mtime ( const std::string &  fname,
const std::string &  mtime_iso8601 
)
virtual

Currently, we need strptime() and utimes() to set the time.

Definition at line 931 of file feature_recorder.cpp.

References FLAG_DISABLED.

◆ set_context_window()

void feature_recorder::set_context_window ( size_t  win)
inline

Definition at line 245 of file feature_recorder.h.

References context_window_after, context_window_before, and MAINTHREAD().

◆ set_context_window_after()

void feature_recorder::set_context_window_after ( size_t  win)
inline

Definition at line 251 of file feature_recorder.h.

References context_window_after, and MAINTHREAD().

◆ set_context_window_before()

void feature_recorder::set_context_window_before ( size_t  win)
inline

Definition at line 250 of file feature_recorder.h.

References context_window_before, and MAINTHREAD().

◆ set_debug()

static void feature_recorder::set_debug ( uint32_t  ndebug)
inlinestatic

Definition at line 155 of file feature_recorder.h.

References debug.

◆ set_flag()

void feature_recorder::set_flag ( uint32_t  flags_)
virtual

Definition at line 263 of file feature_recorder.cpp.

References MAINTHREAD().

◆ set_main_threadid()

static void feature_recorder::set_main_threadid ( )
inlinestatic

Definition at line 150 of file feature_recorder.h.

References main_threadid.

Referenced by main().

◆ set_memhist_limit()

void feature_recorder::set_memhist_limit ( int64_t  limit_)
virtual

Definition at line 275 of file feature_recorder.cpp.

References MAINTHREAD(), and mhistogram_limit.

◆ set_stop_list_recorder()

void feature_recorder::set_stop_list_recorder ( class feature_recorder fr)
inline

Definition at line 241 of file feature_recorder.h.

References MAINTHREAD(), and stop_list_recorder.

Referenced by feature_recorder_set::create_name().

◆ unquote_string()

std::string feature_recorder::unquote_string ( const std::string &  s)
static

Unquote Python or octal-style quoting of a string

Definition at line 223 of file feature_recorder.cpp.

References hexval(), isodigit(), and isxdigit().

Referenced by db_write0(), and dump_histogram_file().

◆ unset_flag()

void feature_recorder::unset_flag ( uint32_t  flags_)
virtual

Definition at line 269 of file feature_recorder.cpp.

References MAINTHREAD().

◆ write() [1/2]

◆ write() [2/2]

void feature_recorder::write ( const std::string &  str)
virtual

External entry points. write() actually does the writing to the file. It uses locks and is threadsafe. Callers therefore do not need locks.

WRITING SUPPORT

Definition at line 506 of file feature_recorder.cpp.

References banner_stamp(), count_, debug, DEBUG_PEDANTIC, feature_recorder_set::DISABLE_FILE_RECORDERS, feature_file_header, utf8::find_invalid(), feature_recorder_set::flag_set(), fs, ios, Mf, and name.

Referenced by carve(), printf(), be13::plugin::process_sbuf(), write(), write0(), and write_buf().

◆ write0()

void feature_recorder::write0 ( const pos0_t pos0,
const std::string &  feature,
const std::string &  context 
)
virtual

Combine the pos0, feature and context into a single line and write it to the feature file.

Parameters
feature- The feature, which is valid UTF8 (but may not be exactly the bytes on the disk)
context- The context, which is valid UTF8 (but may not be exactly the bytes on the disk)

Interlocking is done in write().

Definition at line 561 of file feature_recorder.cpp.

References db_write0(), feature_recorder_set::DISABLE_FILE_RECORDERS, feature_recorder_set::ENABLE_SQLITE3_RECORDERS, FLAG_NO_CONTEXT, FLAG_NO_FEATURES_SQL, flag_notset(), feature_recorder_set::flag_notset(), feature_recorder_set::flag_set(), fs, offset_add, pos0_t::shift(), pos0_t::str(), and write().

Referenced by write().

◆ write_buf()

void feature_recorder::write_buf ( const sbuf_t sbuf,
size_t  pos,
size_t  len 
)
virtual

Given a buffer, an offset into that buffer of the feature, and the length of the feature, make the context and write it out. This is mostly used for writing from within the lexical analyzers.

Definition at line 705 of file feature_recorder.cpp.

References sbuf_t::bufsize, context_window_after, context_window_before, debug, DEBUG_SCANNER, FLAG_NO_CONTEXT, name, sbuf_t::pagesize, sbuf_t::pos0, sbuf_t::substr(), and write().

Member Data Documentation

◆ banner_file

std::string feature_recorder::banner_file
static

Definition at line 197 of file feature_recorder.h.

Referenced by banner_stamp().

◆ bs

class besql_stmt* feature_recorder::bs
private

Definition at line 219 of file feature_recorder.h.

Referenced by db_write0(), and open().

◆ bulk_extractor_version_header

const std::string feature_recorder::bulk_extractor_version_header
static

Definition at line 191 of file feature_recorder.h.

Referenced by banner_stamp().

◆ carve_cache

carve_cache_t feature_recorder::carve_cache
protected

Definition at line 238 of file feature_recorder.h.

Referenced by carve().

◆ carve_mode

carve_mode_t feature_recorder::carve_mode

Definition at line 351 of file feature_recorder.h.

Referenced by carve(), and set_carve_mode().

◆ context_window_after

size_t feature_recorder::context_window_after
protected

Definition at line 228 of file feature_recorder.h.

Referenced by set_context_window(), set_context_window_after(), and write_buf().

◆ context_window_before

size_t feature_recorder::context_window_before
protected

Definition at line 227 of file feature_recorder.h.

Referenced by set_context_window(), set_context_window_before(), and write_buf().

◆ context_window_default

size_t feature_recorder::context_window_default =16
static

Definition at line 212 of file feature_recorder.h.

◆ count_

int64_t feature_recorder::count_
protected

Definition at line 226 of file feature_recorder.h.

Referenced by count(), open(), and write().

◆ db_insert_stmt

const char * feature_recorder::db_insert_stmt = "INSERT INTO f_%s (offset,path,feature_eutf8,feature_utf8,context_eutf8) VALUES (?1, ?2, ?3, ?4, ?5)"
staticprivate

Definition at line 330 of file feature_recorder.h.

Referenced by open().

◆ debug

◆ feature_file_header

const std::string feature_recorder::feature_file_header
static

Definition at line 190 of file feature_recorder.h.

Referenced by write().

◆ file_number_

int64_t feature_recorder::file_number_
protected

Definition at line 237 of file feature_recorder.h.

Referenced by file_number_add().

◆ FLAG_DISABLED

const int feature_recorder::FLAG_DISABLED = 0x01
static

Disable this recorder.

Definition at line 164 of file feature_recorder.h.

Referenced by carve(), feature_recorder_set::feature_recorder_set(), set_carve_mtime(), and write().

◆ FLAG_NO_ALERTLIST

const int feature_recorder::FLAG_NO_ALERTLIST = 0x08
static

Definition at line 167 of file feature_recorder.h.

Referenced by write().

◆ FLAG_NO_CONTEXT

const int feature_recorder::FLAG_NO_CONTEXT = 0x02
static

Definition at line 165 of file feature_recorder.h.

Referenced by db_write0(), quote_if_necessary(), write(), write0(), and write_buf().

◆ FLAG_NO_FEATURES

const uint32_t feature_recorder::FLAG_NO_FEATURES = 0x40
static

histogram support.

Definition at line 184 of file feature_recorder.h.

Referenced by write().

◆ FLAG_NO_FEATURES_SQL

const uint32_t feature_recorder::FLAG_NO_FEATURES_SQL = 0x80
static

Definition at line 185 of file feature_recorder.h.

Referenced by write0().

◆ FLAG_NO_QUOTE

const int feature_recorder::FLAG_NO_QUOTE = 0x10
static

Normally feature recorders automatically quote non-UTF8 characters with \x00 notation and quote "\" as \x5C. Specify FLAG_NO_QUOTE to disable this behavior.

Definition at line 173 of file feature_recorder.h.

Referenced by quote_if_necessary().

◆ FLAG_NO_STOPLIST

const int feature_recorder::FLAG_NO_STOPLIST = 0x04
static

Definition at line 166 of file feature_recorder.h.

Referenced by write().

◆ FLAG_XML

const int feature_recorder::FLAG_XML = 0x20
static

Use this flag the feature recorder is sending UTF-8 XML. non-UTF8 will be quoted but "\" will not be escaped.

Definition at line 179 of file feature_recorder.h.

Referenced by quote_if_necessary().

◆ flags

uint32_t feature_recorder::flags
private

Definition at line 132 of file feature_recorder.h.

Referenced by get_flags().

◆ fs

◆ histogram_defs

histogram_defs_t feature_recorder::histogram_defs
protected

Definition at line 222 of file feature_recorder.h.

Referenced by add_histogram(), dump_histograms(), and enable_memory_histograms().

◆ histogram_file_header

const std::string feature_recorder::histogram_file_header
static

Definition at line 189 of file feature_recorder.h.

Referenced by dump_histogram_file().

◆ ignore_encoding

std::string feature_recorder::ignore_encoding
private

Definition at line 216 of file feature_recorder.h.

Referenced by carve(), and set_carve_ignore_encoding().

◆ ios

std::fstream feature_recorder::ios
private

Definition at line 217 of file feature_recorder.h.

Referenced by close(), flush(), open(), write(), and ~feature_recorder().

◆ main_threadid

pthread_t feature_recorder::main_threadid = 0
staticprivate

Definition at line 130 of file feature_recorder.h.

Referenced by MAINTHREAD(), and set_main_threadid().

◆ max_histogram_files

const int feature_recorder::max_histogram_files = 10
static

Definition at line 188 of file feature_recorder.h.

Referenced by dump_histogram_file().

◆ Mf

cppmutex feature_recorder::Mf
mutableprotected

Definition at line 230 of file feature_recorder.h.

Referenced by file_number_add(), flush(), and write().

◆ mhistogram_limit

uint64_t feature_recorder::mhistogram_limit
protected

Definition at line 233 of file feature_recorder.h.

Referenced by dump_histogram(), and set_memhist_limit().

◆ mhistograms

mhistograms_t feature_recorder::mhistograms
protected

Definition at line 232 of file feature_recorder.h.

Referenced by dump_histogram(), enable_memory_histograms(), and write().

◆ Mr

cppmutex feature_recorder::Mr
mutableprotected

Definition at line 231 of file feature_recorder.h.

Referenced by write().

◆ name

◆ offset_add

int64_t feature_recorder::offset_add = 0
static

Definition at line 196 of file feature_recorder.h.

Referenced by write(), and write0().

◆ opt_max_context_size

uint32_t feature_recorder::opt_max_context_size =1024*1024
static

Definition at line 194 of file feature_recorder.h.

Referenced by quote_if_necessary(), and write().

◆ opt_max_feature_size

uint32_t feature_recorder::opt_max_feature_size =1024*1024
static

Definition at line 195 of file feature_recorder.h.

Referenced by quote_if_necessary(), and write().

◆ stop_list_recorder

class feature_recorder* feature_recorder::stop_list_recorder
protected

Definition at line 236 of file feature_recorder.h.

Referenced by set_stop_list_recorder(), and write().


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