std :: streambuf для сокета tcp не отправляет данные

Я пытался написать буферизованный std :: streambuf для сокета. Я уже написал небуферизованный std :: streambuf. Я не понимаю, почему буферизованный streambuf не работает.

    Socket::StreamBuf::StreamBuf(const IO &io, tcp::Socket *socket) :
socket(socket),
// wb is std::vector<char>
wb(io.writing)  // set size
{
// write
char_type *buf = wb.data();
setp(buf, buf + (wb.size() - 1));

};

int Socket::StreamBuf::overflow(int c) {
if(c != traits_type::eof()) {
*pptr() = c;
pbump(1);

if(sync() == -1) return traits_type::eof();
}

return c;
}

int Socket::StreamBuf::sync() {
if(pptr() && pptr() > pbase()) {
Int32 sz = Int32(pptr() - pbase());

// int Socket::send(char *data, int size)
// return sent bytes count
if (socket->send(pbase(), sz) == sz) {
pbump(-sz);
return 0;
}
}

return -1;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector