SObjectizer
5.1
|
Исходящий oess_2::io поток вставляющий данные в scattered_block_stream_t. Подробнее...
Открытые члены | |
channel_output_stream_t (const scattered_block_stream_ref_t &scattered_block_stream, const ACE_Time_Value &free_blocks_awaiting_timeout) | |
void | begin_transaction () |
Начать транзакцию записи данных. Подробнее... | |
void | checkpoint () |
Установить контрольную точку (промежуточное подтверждение транзакции). Подробнее... | |
void | commit_transaction () |
Подтвердить транзакцию записи данных. Подробнее... | |
void | rollback_transaction () |
Отменить транзакцию записи данных. Подробнее... | |
size_t | bytes_written () const |
Сколько байт записано в поток. Подробнее... | |
Закрытые члены | |
void | flush () |
Сбросить данные готовые к отправке. | |
void | occupy_next_block () |
Получить очередной блок для записи в него данных. | |
void | release_blocks () |
Освободить имеющиеся блоки. | |
Перегрузка методов базового класса. | |
virtual oess_2::char_t * | out_reserve (size_t item_count, size_t item_size, size_t &item_available) |
Метод для определения указателя, в который можно записывать данные. Подробнее... | |
virtual void | out_shift (size_t item_count, size_t item_size) |
Сдвинуть указатель. Подробнее... | |
Закрытые данные | |
bool | m_trx_running |
Флаг-состояние: находтся ли поток в процессе выполнения транзакции. | |
size_t | m_bytes_written |
Количество байт записанных в поток. | |
scattered_block_stream_ref_t | m_block_destination |
откуда брать свободные блоки и поток куда вставлять данные. | |
ACE_Time_Value | m_free_blocks_awaiting_timeout |
Сколько времени можно ожидать прихода новых блоков. | |
raw_block_t * | m_current_block |
Текущий блок. | |
raw_block_chain_t | m_ready_blocks |
Блоки которые записаны, но не отправлены. | |
std::array< oess_2::char_t, 16 > | m_internal_buf |
Исходящий oess_2::io поток вставляющий данные в scattered_block_stream_t.
so_5_transport::channel_output_stream_t::channel_output_stream_t | ( | const scattered_block_stream_ref_t & | scattered_block_stream, |
const ACE_Time_Value & | free_blocks_awaiting_timeout | ||
) |
free_blocks_awaiting_timeout | Сколько времени можно потратить на ожидание свободных блоков. |
void so_5_transport::channel_output_stream_t::begin_transaction | ( | ) |
Начать транзакцию записи данных.
Приводит поток в состояние готовности к записи данных.
Перекрестные ссылки m_bytes_written, m_trx_running и rollback_transaction().
size_t so_5_transport::channel_output_stream_t::bytes_written | ( | ) | const |
Сколько байт записано в поток.
Перекрестные ссылки m_bytes_written.
void so_5_transport::channel_output_stream_t::checkpoint | ( | ) |
Установить контрольную точку (промежуточное подтверждение транзакции).
Вставляет накопленные блоки с записанными данными в поток, при этом позволяет продолжать транзакцию и записывать новые порции данных. Если после этого будет иницирована отмена транзакции, то она откатиться к состоянию зафиксированому последней контрольной точкой.
Перекрестные ссылки flush(), m_bytes_written и m_trx_running.
void so_5_transport::channel_output_stream_t::commit_transaction | ( | ) |
Подтвердить транзакцию записи данных.
Вставляет накопленные блоки с записанными данными в поток.
Перекрестные ссылки flush() и m_trx_running.
|
privatevirtual |
Метод для определения указателя, в который можно записывать данные.
Если нет достаточного объема данных для чтения хотя бы одного элемента, то должно порождаться исключение.
item_count | Количество элементов, которые нужно записать. |
item_size | Размер одного элемента в байтах. |
item_available | Количество элементов, доступных для записи по возвращенному указателю. |
Перекрестные ссылки so_5_transport::raw_block_t::current_write_ptr(), m_current_block, m_internal_buf, occupy_next_block() и so_5_transport::raw_block_t::write_size_available().
|
privatevirtual |
Сдвинуть указатель.
Вызывается после успешной записи в буфер, указатель на который был возвращен методом out_reserve.
item_count | Количество успешно записанных элементов. |
item_size | Размер одного элемента в байтах. |
Перекрестные ссылки so_5_transport::raw_block_t::current_write_ptr(), m_bytes_written, m_current_block, m_internal_buf, occupy_next_block(), so_5_transport::raw_block_t::shift_write_pos() и so_5_transport::raw_block_t::write_size_available().
void so_5_transport::channel_output_stream_t::rollback_transaction | ( | ) |
Отменить транзакцию записи данных.
Отменяет все операции записи в рамках транзакции и освобождает блоки.
Перекрестные ссылки m_trx_running и release_blocks().
Используется в begin_transaction().
|
private |
Внутренний буфер для записи данных, которые не могут быть записаны в один блок.
Используется в out_reserve() и out_shift().
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:24. Создано системой 1.8.3.1 |