Hi.
Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.
Здравствуйте m.a.g., Вы писали:
MAG>Hi.
MAG>Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.
Гм. Или я чего-то не понял, или одно их двух

Как пример, создаете в потоковой функции массив байт:
unsigned char* ByteBuffer = new unsigned char[1024]; // вот вам и буфер
А по завершению работы потока чистите:
if(ByteBuffer) delete [] ByteBuffer;
Я правильно понял вопрос?
Здравствуйте Flamer, Вы писали:
MAG>>Где можно узнать о том, как создать свой буфер для потока? Хочется сделать поток для сокетов с предварительной обработкой поступающей информации.
F>Гм. Или я чего-то не понял, или одно их двух
Как пример, создаете в потоковой функции массив байт:
F>
F>F>unsigned char* ByteBuffer = new unsigned char[1024]; // вот вам и буфер
F>
F>Я правильно понял вопрос?
Не совсем. Есть у меня сокет (низкоуровневый интерфейс на read/write). Хочется его завернуть в поток. Для этого, afaik, подойдет обычный basic_istream, но с подмененным basic_streambuf. Вот хочется узнать, как этот basic_streambuf писать.
Здравствуйте 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 >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Вот, поиск по локальной базе сообщений дал еще ссылку от hVint:
Socket++<< J 1.0 alpha 5 >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен