|
SObjectizer
5.1
|
Входящий oess_2::io::ibinstream_t поток берущий данные из scattered_block_stream_t. Подробнее...
Открытые члены | |
| channel_input_stream_t (const scattered_block_stream_ref_t &scattered_block_stream) | |
| void | begin_transaction () |
| Забирает из потока блоков все блоки и организует поток чтения над ними. Подробнее... | |
| void | checkpoint () |
| Установить контрольную точку (промежуточное подтверждение транзакции). Подробнее... | |
| void | commit_transaction () |
| Подтвердить транзакцию чтения данных. | |
| void | rollback_transaction () |
| Отменить транзакцию чтения данных. Подробнее... | |
| size_t | bytes_available () const |
| Количество доступных в потоке байт. | |
| virtual bool | eof () const |
| Достигнут ли конец потока. | |
Закрытые члены | |
| channel_input_stream_t (const channel_input_stream_t &) | |
| void | operator= (const channel_input_stream_t &) |
Перегрузка методов базового класса. | |
| virtual const oess_2::char_t * | in_reserve (size_t item_count, size_t item_size, size_t &item_available) |
| Метод для определения указателя, из которого можно считывать данные. Подробнее... | |
| void | copy_devided_item_to_internal_buffer (size_t item_size) |
| Вспомогательный метод для копирования во внутренний буффер элемента, который находится в 2-ух блоках. | |
| virtual void | in_shift (size_t item_count, size_t item_size) |
| Сдвинуть указатель. Подробнее... | |
Закрытые данные | |
| scattered_block_stream_ref_t | m_block_source |
| Источник блоков. | |
| std::array< oess_2::char_t, 16 > | m_internal_buf |
Сведения о транзакции. | |
| size_t | m_bytes_initially_available |
| Количество байт которое изначально было доступно в потоке. | |
| size_t | m_bytes_available |
| Количество доступных для чтения в потоке. | |
| size_t | m_first_block_initial_pos |
| Начальная позиция первого блока. Подробнее... | |
| raw_block_t * | m_current_block |
| Текущий блок. | |
| raw_block_chain_t | m_touched_list |
| Блоки которые уже вычитаны, но транзакция еще не подтверждена. | |
| raw_block_chain_t | m_untouched_list |
| Блоки которые еще не вычитаны в рамках текущей транзакции. | |
| void | reset_transaction_data () |
Входящий oess_2::io::ibinstream_t поток берущий данные из scattered_block_stream_t.
Работа с потоком базируется на понятии транзакции чтения данных. С началом транзакции поток извлекает все данные из потока, и запоминает сколько байт доступно для чтения. После начала транзакции количество еще не прочитанных байт доступно через метод bytes_available().
Если пользователь попытается зачитать больше байт чем доступно, то будет пораждено исключение, а транзакция чтения будет отменена.
После того как из потока зачитаны все данные, которые сочтено возможным зачитать, надо подтвердить транзакцию через метод commit_transaction().
После подтверждения или отмены транзакции поток не содержит никаких данных, а попытка чтения приводит к исключению.
| void so_5_transport::channel_input_stream_t::begin_transaction | ( | ) |
Забирает из потока блоков все блоки и организует поток чтения над ними.
При начале транзакция фиксируетя начальная контрольная точка.
| void so_5_transport::channel_input_stream_t::checkpoint | ( | ) |
Установить контрольную точку (промежуточное подтверждение транзакции).
Подтверждает зачитанные результаты, но позволяет и дальше работать с потоком. Если после этого будет иницирована отмена транзакции, то она откатиться к состоянию зафиксированому последней контрольной точкой.
|
privatevirtual |
Метод для определения указателя, из которого можно считывать данные.
| item_count | Количество элементов, которые нужно прочитать. |
| item_size | Размер одного элемента в байтах. |
| item_available | Количество элементов, доступных по возвращенному указателю. |
Перекрестные ссылки so_5_transport::rc_not_enough_data_to_read_from_buffer.
|
privatevirtual |
Сдвинуть указатель.
| item_count | Количество успешно прочитанных элементов. |
| item_size | Размер одного элемента в байтах. |
Перекрестные ссылки so_5_transport::raw_block_t::read_size_available().
| void so_5_transport::channel_input_stream_t::rollback_transaction | ( | ) |
Отменить транзакцию чтения данных.
Отменяет все операции чтения в рамках транзакции и кладет их обратно в поток.
|
private |
Начальная позиция первого блока.
Если транзакцию надо будет отменить, то первый блок должен иметь ту же позицию в буфере.
|
private |
Внутренний буфер для данных, которые располагаются на границе 2-ух блоков.
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:24. Создано системой
1.8.3.1
|
|