Буфера потоков
От: m.a.g. Мальта http://dottedmag.net/
Дата: 18.09.02 05:12
Оценка:
Hi.

Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.
Re: Буфера потоков
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 18.09.02 05:16
Оценка:
Здравствуйте m.a.g., Вы писали:

MAG>Hi.


MAG>Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.


Гм. Или я чего-то не понял, или одно их двух Как пример, создаете в потоковой функции массив байт:


unsigned char* ByteBuffer = new unsigned char[1024]; // вот вам и буфер


А по завершению работы потока чистите:


if(ByteBuffer) delete [] ByteBuffer;


Я правильно понял вопрос?
Re[2]: Буфера потоков
От: m.a.g. Мальта http://dottedmag.net/
Дата: 18.09.02 05:25
Оценка:
Здравствуйте Flamer, Вы писали:

MAG>>Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.


F>Гм. Или я чего-то не понял, или одно их двух Как пример, создаете в потоковой функции массив байт:


F>

F>
F>unsigned char* ByteBuffer = new unsigned char[1024]; // вот вам и буфер
F>


F>Я правильно понял вопрос?


Не совсем. Есть у меня сокет (низкоуровневый интерфейс на read/write). Хочется его завернуть в поток. Для этого, afaik, подойдет обычный basic_istream, но с подмененным basic_streambuf. Вот хочется узнать, как этот basic_streambuf писать.
Re: Буфера потоков
От: Павел Кузнецов  
Дата: 18.09.02 06:21
Оценка: 21 (2)
Здравствуйте m.a.g., Вы писали:

{к сожалению, поиск накрылся медным тазиком, когда-то эта тема уже всплывала}

MAG>Где можно узнать о том, как создать свой буфер для потока?


Здесь И не только:

{где-то приводил более полный список полезных ссылок, но теперь искать некогда}

iostream examples, пункт Deriving new streambuf classes
Dietmar Kuhl. Information About IOstreams (см. ссылки на файлы с примерами внизу странички)
В Addison-Wesley выходила прекрасная книга Angelika Langer & Klaus Kreft. Standard C++ IOStreams and Locales. Есть отрывок с описанием streambuf.

MAG>Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.


Надо унаследовать свой класс от std::streambuf и перекрыть его методы overflow (для записи), и underflow (для чтения). Если ты хочешь, чтобы поток, проинициализированный твоим буфером поддерживал seek, надо будет переопределить функции seekoff и seekpos. Кроме того, если в своем буфере ты введешь собственно буферизацию (прямо каламбур получился), полезно будет перекрыть функцию sync. Описание поведения функций см. по документации к стандартной библиотеке.

Что непонятно — спрашивай.

На sf.net есть несколько проектов с переопределенными streambuf: sf.net/projects/pstreams, sf.net/projects/zipios, sf.net/projects/libserial etc. Какой-то, по-моему, поддерживал и sockets.
<< J 1.0 alpha 5 >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Буфера потоков
От: Павел Кузнецов  
Дата: 18.09.02 06:29
Оценка:
Вот, поиск по локальной базе сообщений дал еще ссылку от hVint: Socket++
<< J 1.0 alpha 5 >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.