# Barry Namespace Reference

## Detailed Description

Project namespace, containing all related functions and classes.

This is the only namespace applications should be concerned with, for now.

## Classes

class | Backup
class | Builder
| Base class for the builder functor hierarchy. More...
class | DBDataBuilder
| Wrapper class around a DBData object, to make it easy to pass a DBData object into a function or API that requires a builder. More...
class | RecordBuilder
| Template class for easy creation of specific protocol packet builder objects. More...
class | RecordFetch
| Generic record fetch class, to help with using records without builder classes. More...
class | CodFileBuilder
| The CodFileBuilder class is used to assemble multiple .cod files into a single packed .cod file using the pkzip file format. More...
class | ConfigFile
class | GlobalConfigFile
class | Connector
class | DesktopConnector
class | Controller
| The main interface class. More...
class | Data
class | Diff
class | DBData
| Database record data class. More...
class | DataQueue
| This class provides a thread aware fifo queue for Data objects, providing memory management for all Data object pointers it contains. More...
class | Error
| The base class for any future derived exceptions. More...
class | BadPassword
| A bad or unknown password when talking to the device. More...
class | PinNotFound
| Thrown by the Connector class when unable to find the requested Pin If the attached pin is not Valid(), then unable to autodetect device. More...
class | BadData
| Thrown by record classes if their data is invalid and cannot be uploaded to the Blackberry. More...
class | BadSize
| Unexpected packet size, or not enough data. More...
class | ErrnoError
| System error that provides an errno error code. More...
class | ConfigFileError
| Thrown by the ConfigFile class when encountering a serious system error while loading the global config file for a given PIN. More...
class | BadPackedFormat
| Thrown by record classes that don't recognize a given packed format code. More...
class | BadPacket
| Thrown by the socket class if a packet command's response indicates an error. More...
class | ConvertError
| Thrown by the vformat related barrysync library classes. More...
class | BackupError
| Thrown by the Backup parser class when there is a problem with the low level file operation. More...
class | RestoreError
| Thrown by the Restore builder class when there is a problem with the low level file operation. More...
class | IConvHandle
| Wrapper class for a two-way iconv_t handle pair. More...
class | IConverter
| Main charset conversion class, primarily focused on converting between the Blackberry charset and an application-specified one. More...
class | ContactLdif
| Class for generating LDIF output based on a Barry::Contact record object. More...
class | LdifStore
| Storage class suitable for use in a RecordParser<> or RecordBuilder<>. More...
class | LogLock
| RAII locking class used to protect the logStream passed into Barry::Init() (common.h). More...
class | DeviceBuilder
| Takes a list of database dbId's and behaves like a Builder, trying to avoid copies where possible on the device loading end. More...
class | DeviceParser
| A parser class that "parses" raw data into a device. More...
class | JLDirectory
class | JLDirectoryEntry
class | JLScreenInfo
class | JLEventlog
class | JLEventlogEntry
class | JLDeviceInfo
class | JVMModulesList
class | JVMModulesEntry
class | JVMThreadsList
class | JVMThreadsEntry
class | MimeBuilder
class | Modem
class | Packet
class | ZeroPacket
| Provides an API for building and analyzing socket-0 protocol packets. More...
class | DBPacket
| Provides an API for building and analyzing raw DB protocol packets. More...
class | JLPacket
| Provides an API for building and analyzing raw Javaloader protocol packets. More...
class | JVMPacket
| Provides an API for building and analyzing raw JavaDebug protocol packets. More...
class | Parser
| Base class for the parser hierarchy. More...
class | NullParser
| If in debug mode, this class can be used as a null parser. More...
class | HexDumpParser
| Dumps raw hex of the given DBData to the given stream. More...
class | RecordParserBase
| Abstract base class for the following RecordParser template, that exposes some information on the specifics that the record parser can handle. More...
class | NullStore
| A Storage class for RecordParser<> that does nothing, for the cases where you only want to dump parsed record data to a stream. More...
class | DumpStore
| A Storage class for RecordParser<> that dumps the parsed record data to the given stream. More...
class | RecordParser
| Template class for easy creation of specific parser objects. More...
class | AllRecordStore
| Base class with overloaded functor behaviour for all available record classes. More...
class | MultiRecordParser
| Container parser class that accepts multiple Parser objects (often RecordParser<> objects but they don't have to be) and automatically routes incoming records to the appropriate parser. More...
class | AllRecordDumpStore
| Derived from AllRecordStore, which just calls each record's Dump() member with the given stream. More...
class | AllRecordParser
| Convenience parser that creates a MultiRecordParser with all known record parsers added. More...
class | TeeParser
| Sends incoming DBData objects to all the parsers in its list. More...
class | Pin
class | Pipe
| Reads data from a builder and feeds it into a parser. More...
class | PppFilter
struct | ProbeResult
class | Probe
class | Bookmark
class | Calendar
class | CalendarAll
class | CallLog
struct | ContactGroupLink
class | Contact
| Represents a single record in the Address Book Blackberry database. More...
class | ContentStore
| Represents a single record in the Content Store Blackberry database. More...
class | Folder
class | Memo
class | Message
class | MessageBase
class | PINMessage
class | RecurBase
class | SavedMessage
class | ServiceBookData
class | ServiceBookConfig
class | ServiceBook
class | Sms
class | Task
class | Timezone
struct | FieldLink
class | Cr2LfWrapper
struct | CommandTableCommand
class | CommandTable
struct | RecordStateTableState
class | RecordStateTable
struct | DatabaseItem
class | DatabaseDatabase
struct | UnknownData
struct | UnknownField
struct | EmailAddress
struct | PostalAddress
struct | Date
class | CategoryList
class | Restore
| Barry Backup Restore builder class. More...
class | SocketRoutingQueue
class | DataHandle
| std::auto_ptr like class that handles pointers to Data, but instead of freeing them completely, the Data objects are turned to the SocketRoutingQueue from whence they came. More...
class | BoostLoader
class | BoostSaver
class | BoostParser
| This Parser turns incoming records (which can be of any record type included in ALL_KNOWN_PARSER_TYPES) into a Boost Serialization stream on the given iostream. More...
class | BoostBuilder
| This Builder class reads a boost serialization stream, and converts them into DBData records. More...
class | scoped_lock
class | semaphore
struct | SHA_CTX
class | SocketZero
class | Socket
| Encapsulates a "logical socket" in the Blackberry USB protocol. More...
class | Thread
struct | TimeZone
class | vSmartPtr
| A special smart pointer for variables that have their own special 'free' functions. More...
class | vLateSmartPtr
| Variation of the above smart pointer that allows the user to assign a free function after construction, in the case of dlopen()'d frees. More...

## Functions

BXEXPORT size_t | GetTotalBitmapSize (const JLScreenInfo &info)
| Returns the total number of bytes needed to convert a screenshot of the given dimensions into a bitmap, using the ScreenshotToBitmap() function.
BXEXPORT void | ScreenshotToBitmap (const JLScreenInfo &info, const Data &screenshot, Data &bitmap)
| Converts screenshot data obtained via JavaLoader::GetScreenshot() into uncompressed bitmap format, suitable for writing BMP files.
template<class RecordT>
void | SetDBData (const RecordT &rec, DBData &data, size_t &offset, const IConverter *ic)
| Contains the proper way to convert a record object into a DBData object.
size_t | SeekNextCod (std::istream &input)
| Seeks the input stream to the next packed sibling .cod file and returns the packed .cod file size.
void | Init (bool data_dump_mode, std::ostream *logStream)
| Barry library initializer.
void | Verbose (bool data_dump_mode)
| This API call lets the application enable / disable verbose debug output on the fly.
bool | IsVerbose ()
| Returns true if data dump mode is enabled.
template<class RecordT>
void | ParseDBData (const DBData &data, RecordT &rec, const IConverter *ic)
| Contains the proper way to convert a DBData object into a record.
const TimeZone * | GetTimeZoneTable ()
| Returns a pointer to an array of TimeZone structs.
const TimeZone * | GetTimeZone (unsigned short Code)
| Searches the internal timezone code table for the given Code and returns a pointer to a TimeZone struct found.
unsigned short | GetTimeZoneCode (signed short HourOffset, signed short MinOffset)
| Searches the internal timezone table for the first matching Code.
time_t | DayToDate (unsigned short Day)
| This routine takes the day of the year and returns a time_t adjusted from the first of the year.
time_t | Message2Time (uint16_t r_date, uint16_t r_time)
| Localize the funky math used to convert a Blackberry message timestamp into a time_t.
BXEXPORT struct timespec * | ThreadTimeout (int timeout_ms, struct timespec *spec)
| Creates a pthread_cond_timedwait() compatible timespec struct, based on a given timeout in milliseconds.
const char * | Version (int &major, int &minor)
| Fills major and minor with integer version numbers, and returns a string containing human readable version information in English.

## Function Documentation

BXEXPORT time_t Barry::DayToDate | ( | unsigned short | Day | ) |

This routine takes the day of the year and returns a time_t adjusted from the first of the year.

FIXME This function assumes the year hasn't changed, but I don't have enough information to determine where the year is in this header info

Definition at line 186 of file time.cc.

Referenced by Message2Time().

Here is the caller graph for this function:

BXEXPORT const TimeZone * Barry::GetTimeZone | ( | unsigned short | Code | ) |

Searches the internal timezone code table for the given Code and returns a pointer to a TimeZone struct found.

If the code is not found, a pointer to a valid TimeZone struct is is still returned, but the struct's Code contains TIME_ZONE_CODE_ERR, and the name is "Unknown time zone." The unknown timezone is the same offset as GMT.

Definition at line 149 of file time.cc.

BXEXPORT unsigned short Barry::GetTimeZoneCode | ( | signed short | HourOffset,
|  | signed short | MinOffset |
| ) |  |  |

Searches the internal timezone table for the first matching Code.

If no matching Code is found, TIME_ZONE_CODE_ERR is returned.

This function does not adjust for daylight saving time.

Definition at line 168 of file time.cc.

BXEXPORT const TimeZone * Barry::GetTimeZoneTable | ( |  | ) |

Returns a pointer to an array of TimeZone structs.

The last struct contains 0 in all fields, and can be used as an "end of array" marker.

Definition at line 134 of file time.cc.

BXEXPORT size_t Barry::GetTotalBitmapSize | ( | const JLScreenInfo & | info | ) |

Returns the total number of bytes needed to convert a screenshot of the given dimensions into a bitmap, using the ScreenshotToBitmap() function.

Definition at line 37 of file bmp.cc.

Referenced by ScreenshotToBitmap().

Here is the caller graph for this function:

BXEXPORT void Barry::Init | ( | bool | data_dump_mode,
|  | std::ostream * | logStream |
| ) |  |  |

Barry library initializer.

See also the LogLock class.

Call this before anything else. This takes care of initializing the lower level libusb.

This function is safe to be called multiple times. The data_dump_mode and the log stream will be updated each time it is called, but the USB library will not be re-initialized.

Parameters:

  `[in]` | data_dump_mode | If set to true, the protocol conversation will be sent to the logStream specified in the second argument.
  `[in]` | LogStream | Pointer to std::ostream object to use for debug output and logging. Defaults to std::cout.

Definition at line 52 of file common.cc.

BXEXPORT bool Barry::IsVerbose | ( |  | ) |

Returns true if data dump mode is enabled.

Definition at line 105 of file common.cc.

BXEXPORT time_t Barry::Message2Time | ( | uint16_t | r_date,
|  | uint16_t | r_time |
| ) |  |  |

Localize the funky math used to convert a Blackberry message timestamp into a time_t.

Both r_date and r_time are expected to be fed in from the Protocol::MessageRecord struct in raw form, without endian conversion. This function handles that.

Definition at line 217 of file time.cc.

References DayToDate().

Here is the call graph for this function:

template<class RecordT>

void Barry::ParseDBData | ( | const DBData & | data,
|  | RecordT & | rec,
|  | const IConverter * | ic |
| ) |  |  | `[inline]`

Contains the proper way to convert a DBData object into a record.

Definition at line 221 of file parser.h.

References Barry::DBData::GetData(), Barry::DBData::GetOffset(), Barry::DBData::GetRecType(), and Barry::DBData::GetUniqueId().

Referenced by Barry::RecordParser< RecordT, StorageT >::ParseRecord().

Here is the call graph for this function:

Here is the caller graph for this function:

BXEXPORT void Barry::ScreenshotToBitmap | ( | const JLScreenInfo & | info,
|  | const Data & | screenshot,
|  | Data & | bitmap |
| ) |  |  |

Converts screenshot data obtained via JavaLoader::GetScreenshot() into uncompressed bitmap format, suitable for writing BMP files.

Arguments info and screenshot come from GetScreenshot() and the converted data is stored in bitmap.

Definition at line 57 of file bmp.cc.

References GetTotalBitmapSize().

Here is the call graph for this function:

size_t Barry::SeekNextCod | ( | std::istream & | input | ) |

Seeks the input stream to the next packed sibling .cod file and returns the packed .cod file size.

When all siblings have been read, zero is returned.

When input stream does not contain the signature for a packed .cod file, it's assumed the entire stream is the .cod file.

Parameters:

  | input | stream to read from

Returns:
  size of next packed .cod file, or 0 finished reading .cod files

Definition at line 44 of file cod.cc.

template<class RecordT>

void Barry::SetDBData | ( | const RecordT & | rec,
|  | DBData & | data,
|  | size_t & | offset,
|  | const IConverter * | ic |
| ) |  |  | `[inline]`

Contains the proper way to convert a record object into a DBData object.

Definition at line 135 of file builder.h.

References Barry::DBData::SetDBName(), Barry::DBData::SetIds(), Barry::DBData::SetOffset(), Barry::DBData::SetVersion(), and Barry::DBData::UseData().

Referenced by Barry::RecordBuilder< RecordT, StorageT >::BuildRecord().

Here is the call graph for this function:

Here is the caller graph for this function:

BXEXPORT struct timespec * Barry::ThreadTimeout | ( | int | timeout_ms,
|  | struct timespec * | spec |
| ) |  |  | `[read]`

Creates a pthread_cond_timedwait() compatible timespec struct, based on a given timeout in milliseconds.

Note that the resulting timespec is time-sensitive: the 'timer' starts as soon as this function returns, since timespec is a specific time in the future, and ThreadTimeout() calculates it based on the current time.

Returns the spec pointer, to make it easy to use with pthread_cond_timedwait()

Definition at line 242 of file time.cc.

Referenced by Barry::DataQueue::wait_pop().

Here is the caller graph for this function:

BXEXPORT void Barry::Verbose | ( | bool | data_dump_mode | ) |

This API call lets the application enable / disable verbose debug output on the fly.

Parameters:

  `[in]` | data_dump_mode | If set to true, the protocol conversation will be sent to the logStream specified in the Barry::Init() call.

Definition at line 90 of file common.cc.

BXEXPORT const char * Barry::Version | ( | int & | major,
|  | int & | minor |
| ) |  |  |

Fills major and minor with integer version numbers, and returns a string containing human readable version information in English.

Definition at line 39 of file version.cc.