PIP 5.5.3
Platform-Independent Primitives
Классы | Открытые типы | Открытые члены | Открытые статические члены | Открытые атрибуты | Защищенные члены | Полный список членов класса
Класс PIBinaryLog

Бинарный лог Подробнее...

#include <pibinarylog.h>

Граф наследования:PIBinaryLog:
Inheritance graph
[см. легенду]

Классы

struct  BinLogIndex
 Struct contains position, ID and timestamp of record in file. Подробнее...
 
struct  BinLogInfo
 Struct contains full information about Binary Log file and about all Records using map of BinLogRecordInfo. Подробнее...
 
struct  BinLogRecordInfo
 Struct contains information about all records with same ID. Подробнее...
 

Открытые типы

enum  PlayMode { PlayRealTime , PlayVariableSpeed , PlayStaticDelay }
 Play modes for PIBinaryLog. Подробнее...
 
enum  SplitMode { SplitNone , SplitTime , SplitSize , SplitCount }
 Different split modes for writing PIBinaryLog, which can separate files by size, by time or by records count. Подробнее...
 
- Открытые типы унаследованные от PIIODevice
enum  DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 }
 Режимы открытия для PIIODevice. Подробнее...
 
enum  DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 }
 Опции для PIIODevice, работает для некоторых устройств Подробнее...
 
enum  DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 }
 Характеристики канала PIIODevice. Подробнее...
 

Открытые члены

PlayMode playMode () const
 Current PlayMode.
 
SplitMode splitMode () const
 Current SplitMode.
 
PIString logDir () const
 Current directory where billogs wiil be saved.
 
PIString filePrefix () const
 Returns current file prefix.
 
int defaultID () const
 Default ID, used in write function.
 
double playSpeed () const
 Returns current play speed.
 
PISystemTime playDelay () const
 Returns current play delay.
 
PISystemTime splitTime () const
 Returns current binlog file split time.
 
llong splitFileSize () const
 Returns current binlog file split size.
 
int splitRecordCount () const
 Returns current binlog file split records count.
 
bool rapidStart () const
 Returns if rapid start enabled.
 
bool createIndexOnFly () const
 Returns if index creates while writing.
 
void createNewFile (const PIString &path)
 Create binlog file with Filename = path.
 
void setPlayMode (PlayMode mode)
 Set PlayMode.
 
void setSplitMode (SplitMode mode)
 Set SplitMode.
 
void setLogDir (const PIString &path)
 Set path to directory where binlogs will be saved.
 
void setFilePrefix (const PIString &prefix)
 Set file prefix, used to.
 
void setDefaultID (int id)
 Set defaultID, used in write function.
 
void setRapidStart (bool enabled)
 If enabled BinLog ThreadedRead starts without delay for first record, i.e. first record will be readed immediately.
 
void setCreateIndexOnFly (bool yes)
 Set index creation while writing.
 
void setPlaySpeed (double speed)
 Set play speed to "speed", default value is 1.0x Also this function set playMode to PlayVariableSpeed.
 
void setPlayDelay (const PISystemTime &delay)
 Setting static delay between records, default value is 1 sec Also this function set playMode to PlayStaticDelay.
 
void setPlayRealTime ()
 Set playMode to PlayRealTime.
 
void setSplitTime (const PISystemTime &time)
 Set binlog file split time Also this function set splitMode to SplitTime.
 
void setSplitFileSize (llong size)
 Set binlog file split size Also this function set splitMode to SplitSize.
 
void setSplitRecordCount (int count)
 Set binlog file split records count Also this function set splitMode to SplitCount.
 
void setPause (bool pause)
 Set pause while playing via threadedRead or writing via write.
 
void setFuncGetNewFilePath (std::function< PIString()> f)
 Set function wich returns new binlog file path when using split mode. Overrides internal file path generator (logdir() + prefix() + current_time()). To restore internal file path generator set this function to "nullptr".
 
int writeBinLog (int id, PIByteArray data)
 Write one record to BinLog file, with ID = id, id must be greather than 0.
 
int writeBinLog (int id, const void *data, int size)
 Write one record to BinLog file, with ID = id, id must be greather than 0.
 
int writeBinLog_raw (int id, const PISystemTime &time, const PIByteArray &data)
 Write one RAW record to BinLog file, with ID = id, Timestamp = time.
 
int writeCount () const
 Returns count of writed records.
 
PIByteArray readBinLog (int id=0, PISystemTime *time=0, int *readed_id=0)
 Read one record from BinLog file, with ID = id, if id = 0 than any id will be readed.
 
int readBinLog (int id, void *read_to, int max_size, PISystemTime *time=0, int *readed_id=0)
 Read one record from BinLog file, with ID = id, if id = 0 than any id will be readed.
 
llong logSize () const
 Returns binary log file size.
 
llong logPos () const
 Return position in current binlog file.
 
bool isEnd () const
 Return true, if position at the end of BinLog file.
 
bool isEmpty () const
 Returns if BinLog file is empty.
 
bool isPause () const
 Returns BinLog pause status.
 
int lastReadedID () const
 Returns id of last readed record.
 
PISystemTime lastReadedTimestamp () const
 Returns timestamp of last readed record.
 
PISystemTime logStartTimestamp () const
 Returns timestamp of log start.
 
void setHeader (const PIByteArray &header)
 Set custom file header, you can get it back when read this binlog.
 
PIByteArray getHeader () const
 Get custom file header.
 
int read (void *read_to, int max_size)
 Read one message from binlog file, with ID contains in "filterID" or any ID, if "filterID" is empty.
 
int write (const void *data, int size)
 Write one record to BinLog file, with ID = "defaultID".
 
void restart ()
 Go to begin of BinLog file.
 
BinLogInfo logInfo () const
 Get binlog info BinLogInfo.
 
const PIVector< BinLogIndex > & logIndex () const
 Get binlog index BinLogIndex, need createIndex before getting index.
 
bool createIndex ()
 Create index of current binlog file.
 
bool isIndexed ()
 Return if current binlog file is indexed.
 
int posForTime (const PISystemTime &time)
 Find nearest record of time "time". Returns -1 if not indexed or time less than first record.
 
void seekTo (int rindex)
 Go to record #index.
 
bool seek (const PISystemTime &time)
 Go to nearest record.
 
bool seek (llong filepos)
 Set position in file to reading/playing.
 
int pos () const
 Get current record index (position record in file)
 
- Открытые члены унаследованные от PIIODevice
 PIIODevice ()
 Создает пустой PIIODevice.
 
 PIIODevice (const PIString &path, DeviceMode mode=ReadWrite)
 Создает PIIODevice с путём "path" и режимом открытия "mode".
 
DeviceMode mode () const
 Возвращает текущий режим открытия устройства
 
void setMode (DeviceMode m)
 Устанавливает режим открытия устройства. Не переоткрывает устройство
 
DeviceOptions options () const
 Возвращает текущие опции устройства
 
bool isOptionSet (DeviceOption o) const
 Возвращает текущее состояние опции "o".
 
void setOptions (DeviceOptions o)
 Устанавливает опции устройства
 
bool setOption (DeviceOption o, bool yes=true)
 Устанавливает опцию "o" устройства в "yes" и возвращает предыдущее состояние опции
 
DeviceInfoFlags infoFlags () const
 Возвращает характеристики канала
 
PIString path () const
 Возвращает текущий путь устройства
 
void setPath (const PIString &path)
 Устанавливает путь устройства. Не переоткрывает устройство
 
bool isReadable () const
 Возвращает равен ли режим открытия ReadOnly или ReadWrite.
 
bool isWriteable () const
 Возвращает равен ли режим открытия WriteOnly или ReadWrite.
 
bool isOpened () const
 Возвращает успешно ли открыто устройство
 
bool isClosed () const
 Возвращает закрыто ли устройство
 
virtual bool canRead () const
 Возвращает может ли устройство читать сейчас
 
virtual bool canWrite () const
 Возвращает может ли устройство писать сейчас
 
void setReopenEnabled (bool yes=true)
 Устанавливает возможность вызова open() при потоковом чтении на закрытом устройстве
 
void setReopenTimeout (PISystemTime timeout)
 Устанавливает задержку между вызовами open() если переоткрытие активно
 
bool isReopenEnabled () const
 Возвращает активно ли переоткрытие
 
PISystemTime reopenTimeout ()
 Возвращает задержку переоткрытия
 
void setThreadedReadSlot (ReadRetFunc func)
 Устанавливает callback потокового чтения Подробнее...
 
void setThreadedReadData (void *d)
 Устанавливает произвольный указатель, который будет передан в callback потокового чтения
 
void setThreadedReadBufferSize (int new_size)
 Устанавливает размер буфера потокового чтения Подробнее...
 
int threadedReadBufferSize () const
 Возвращает размер буфера потокового чтения
 
const uchar * threadedReadBuffer () const
 Возвращает содержимое буфера потокового чтения
 
void * threadedReadData () const
 Возвращает произвольный указатель, который будет передан в callback потокового чтения
 
bool isThreadedRead () const
 Возвращает запущен ли поток чтения
 
bool isThreadedReadStopping () const
 Возвращает останавливается ли поток чтения
 
void startThreadedRead ()
 Запускает потоковое чтение
 
void startThreadedRead (ReadRetFunc func)
 Запускает потоковое чтение и устанавливает callback потокового чтения в "func".
 
void stopThreadedRead ()
 Останавливает потоковое чтение.
 
void terminateThreadedRead ()
 Прерывает потоковое чтение. Подробнее...
 
bool waitThreadedReadFinished (PISystemTime timeout={})
 Ожидает завершения потокового чтения в течении не более "timeout".
 
bool isThreadedWrite () const
 Возвращает запущен ли поток записи
 
void startThreadedWrite ()
 Запускает потоковую запись
 
void stopThreadedWrite ()
 Останавливает потоковую запись.
 
void terminateThreadedWrite ()
 Прерывает потоковую запись. Подробнее...
 
bool waitThreadedWriteFinished (PISystemTime timeout={})
 Ожидает завершения потоковой записи в течении не более "timeout".
 
void clearThreadedWriteQueue ()
 Очищает очередь потоковой записи
 
void start ()
 Запускает потоковое чтение и запись
 
void stop ()
 Останавливает потоковое чтение и запись.
 
void stopAndWait (PISystemTime timeout={})
 Останавливает потоковое чтение и запись и ожидает завершения.
 
virtual void interrupt ()
 Прерывает блокирующую операцию.
 
ssize_t read (void *read_to, ssize_t max_size)
 Читает из устройства не более "max_size" байт в "read_to".
 
ssize_t read (PIMemoryBlock mb)
 Читает из устройства в блок памяти "mb".
 
PIByteArray read (ssize_t max_size)
 Читает из устройства не более "max_size" байт и возвращает данные как PIByteArray.
 
virtual ssize_t bytesAvailable () const
 Возвращает количество байт доступных для чтения Подробнее...
 
ssize_t write (const void *data, ssize_t max_size)
 Пишет в устройство не более "max_size" байт из "data".
 
PIByteArray readForTime (PISystemTime timeout)
 Читает из устройства в течении "timeout" и возвращает данные как PIByteArray.
 
ullong writeThreaded (const void *data, ssize_t max_size)
 Добавляет данные в очередь на потоковую запись и возвращает ID задания
 
ullong writeThreaded (const PIByteArray &data)
 Добавляет данные в очередь на потоковую запись и возвращает ID задания
 
virtual PIConstChars fullPathPrefix () const
 Возвращает префикс устройства. Creating devices by unambiguous string.
 
PIString constructFullPath () const
 Возвращает строку полного описания для этого устройства, fullPathPrefix() + "://" + ...
 
void configureFromFullPath (const PIString &full_path)
 Настраивает устройство из параметров строки полного описания
 
PIVariantTypes::IODevice constructVariant () const
 Возвращает PIVariantTypes::IODevice, описывающий это устройство
 
void configureFromVariant (const PIVariantTypes::IODevice &d)
 Настраивает устройство из PIVariantTypes::IODevice.
 
ssize_t write (const PIMemoryBlock &mb)
 Пишет в устройство блок памяти "mb".
 
bool open ()
 Открывает устройство
 
bool open (const PIString &_path)
 Открывает устройство с путём "path".
 
bool close ()
 Закрывает устройство
 
ssize_t write (PIByteArray data)
 Пишет "data" в устройство
 
virtual void flush ()
 Немедленно записать все буферизированные данные
 
void opened ()
 Вызывается при успешном открытии
 
void closed ()
 Вызывается при успешном закрытии
 
void threadedReadEvent (const uchar *readed, ssize_t size)
 Вызывается при успешном потоковом чтении данных
 
void threadedWriteEvent (ullong id, ssize_t written_size)
 Вызывается при успешной потоковой записи данных с ID задания "id".
 
- Открытые члены унаследованные от PIObject
 PIObject (const PIString &name=PIString())
 Создает PIObject с именем "name".
 
PIString name () const
 Возвращает имя объекта
 
virtual const char * className () const
 Возвращает имя класса объекта
 
virtual const char * parentClassName () const
 Возвращает имя родительского класса
 
bool debug () const
 Возвращает включен ли вывод piCoutObj для этого объекта
 
void setName (const PIString &name)
 Устанавливает имя объекта
 
void setDebug (bool debug)
 Включает или отключает вывод piCoutObj для этого объекта
 
PIVariant property (const char *name) const
 Возвращает свойство объекта по имени "name".
 
void setProperty (const char *name, const PIVariant &value)
 Устанавливает у объекта свойство по имени "name" в "value". Если такого свойства нет, оно добавляется
 
bool isPropertyExists (const char *name) const
 Возвращает присутствует ли свойство по имени "name".
 
PIStringList scopeList () const
 Возвращает цепочку наследования объекта (вместе с классом самого объекта)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" к объекту "dest" и обработчику "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" к объекту "dest".
 
void piDisconnect (const PIString &sig)
 Разрывает все соединения от события "sig".
 
bool isPIObject () const
 Возвращает действительный ли это PIObject (проверяет подпись)
 
template<typename T >
bool isTypeOf () const
 Возвращает действительный ли это наследник PIObject типа "T" (проверяет подпись и имя класса)
 
template<typename T >
T * cast () const
 Возвращает преобразование к типу T если это действительный наследник типа "T" (проверяет через isTypeOf()), или "nullptr".
 
void callQueuedEvents ()
 Выполнить все отложенные события от CONNECTU_QUEUED соединений
 
bool maybeCallQueuedEvents ()
 Если было хотя бы одно CONNECTU_QUEUED соединение с исполнителем this, то выполнить события Подробнее...
 
void deleteLater ()
 Пометить объект на удаление Подробнее...
 
void deleted (PIObject *o)
 Вызывается перед удалением объекта Подробнее...
 

Открытые статические члены

static BinLogInfo getLogInfo (const PIString &path)
 Get binlog info and statistic.
 
static bool cutBinLog (const BinLogInfo &src, const PIString &dst, int from, int to)
 Create new binlog from part of "src" with allowed IDs and "from" to "to" file position.
 
static bool joinBinLogsSerial (const PIStringList &src, const PIString &dst, std::function< bool(const PIString &, PISystemTime)> progress=nullptr)
 Create new binlog from serial splitted binlogs "src".
 
- Открытые статические члены унаследованные от PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его Подробнее...
 
static PIIODevicecreateFromVariant (const PIVariantTypes::IODevice &d)
 Пытается создать новое устройство по префиксу, настраивает с помощью configureFromVariant() и возвращает его
 
static PIStringList availablePrefixes ()
 Возвращает префиксы всех зарегистрированных устройств
 
static PIStringList availableClasses ()
 Возвращает имена классов всех зарегистрированных устройств
 
- Открытые статические члены унаследованные от PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest" и обработчику "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Разрывает все соединения от события "sig" объекта "src".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Возвращает действительный ли "o" PIObject (проверяет подпись)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Возвращает действительный ли "o" наследник PIObject типа "T" (проверяет подпись и имя класса)
 

Открытые атрибуты

PIVector< int > filterID
 Array of ID, that BinLog can read from binlog file, when use read function, or in ThreadedRead.
 
- Открытые атрибуты унаследованные от PIIODevice
bool reopenEnabled
 setReopenEnabled, по умолчанию "true"
 
int reopenTimeout
 setReopenTimeout, по умолчанию 1_s
 
int threadedReadBufferSize
 setThreadedReadBufferSize в байтах, по умолчанию 4096
 

Защищенные члены

PIString constructFullPathDevice () const override
 Переопределите для создания строки полного описания устройства. По умолчанию возвращает path()
 
void configureFromFullPathDevice (const PIString &full_path) override
 Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath()
 
PIPropertyStorage constructVariantDevice () const override
 Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path".
 
void configureFromVariantDevice (const PIPropertyStorage &d) override
 Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path".
 
ssize_t readDevice (void *read_to, ssize_t max_size) override
 Переопределите для чтения данных из устройства
 
ssize_t writeDevice (const void *data, ssize_t size) override
 Переопределите для записи данных в устройство
 
bool openDevice () override
 Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()!
 
bool closeDevice () override
 Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_".
 
void propertyChanged (const char *s) override
 Виртуальная функция, вызывается после изменения любого свойства.
 
bool threadedRead (const uchar *readed, ssize_t size) override
 Метод вызывается после каждого успешного потокового чтения, по умолчанию вызывает callback "ret_func_".
 
DeviceInfoFlags deviceInfoFlags () const override
 Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0.
 
- Защищенные члены унаследованные от PIIODevice
virtual bool openDevice ()=0
 Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()!
 
virtual bool closeDevice ()
 Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_".
 
virtual ssize_t readDevice (void *read_to, ssize_t max_size)
 Переопределите для чтения данных из устройства
 
virtual ssize_t writeDevice (const void *data, ssize_t max_size)
 Переопределите для записи данных в устройство
 
virtual bool threadedRead (const uchar *readed, ssize_t size)
 Метод вызывается после каждого успешного потокового чтения, по умолчанию вызывает callback "ret_func_".
 
virtual PIString constructFullPathDevice () const
 Переопределите для создания строки полного описания устройства. По умолчанию возвращает path()
 
virtual void configureFromFullPathDevice (const PIString &full_path)
 Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath()
 
virtual PIPropertyStorage constructVariantDevice () const
 Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path".
 
virtual void configureFromVariantDevice (const PIPropertyStorage &d)
 Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path".
 
virtual void optionsChanged ()
 Переопределите для применения новых опций устройства
 
virtual DeviceInfoFlags deviceInfoFlags () const
 Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0.
 
virtual void threadedReadBufferSizeChanged ()
 Переопределите для применения нового threadedReadBufferSize()
 
- Защищенные члены унаследованные от PIObject
PIObjectemitter () const
 Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий
 
virtual void propertyChanged (const char *name)
 Виртуальная функция, вызывается после изменения любого свойства.
 

Handlers

PIString createNewFile ()
 Create new binlog file in logDir, if successful returns filename, else returns empty string. Filename is like filePrefix + "yyyy_MM_dd__hh_mm_ss.binlog".
 

Events

void fileEnd ()
 Raise on file end while reading.
 
void fileError ()
 Raise on file creation error.
 
void newFile (const PIString &filename)
 Raise on new file created.
 

Дополнительные унаследованные члены

Подробное описание

Бинарный лог

Class for read and write binary data to logfile, and playback this data in realtime, or custom speed.

Synopsis

Binary Log is a file with simple header, where you can read and write some binary data. Any written data include special header with ID, size and timestamp. This header provides separation different messages from the one file by choosing different IDs. With filterID or special functions, like readBinLog() you can choose IDs what you want to read. With function writeBinLog() or setDefaultID() you can choose ID that mark you data. By default ID = 1, and filterID is empty, that mean you read any ID without filtering. ThreadedRead provide you playback data, with delay that you write data. You can choose different playbak modes by set PlayMode.

Basic usage

This class provide all functions of PIIODevice, such open(), close(), read() ,write(), and threaded read/write. function setLogDir() need to set directory for BinLog files function createNewFile() need to create new binlog file function restart() need start from the begining of binlog file

Перечисления

◆ PlayMode

Play modes for PIBinaryLog.

Элементы перечислений
PlayRealTime 

Play in system realtime, default mode

PlayVariableSpeed 

Play in software realtime with speed, set by setSpeed

PlayStaticDelay 

Play with custom static delay, ignoring timestamp

◆ SplitMode

Different split modes for writing PIBinaryLog, which can separate files by size, by time or by records count.

Элементы перечислений
SplitNone 

Without separate, default mode

SplitTime 

Separate files by record time

SplitSize 

Separate files by size

SplitCount 

Separate files by records count