47 lines
957 B
C++
47 lines
957 B
C++
#include "socketstream.h"
|
|
using namespace zutil;
|
|
|
|
SocketStreamBuffer::SocketStreamBuffer(SocketIO &s) : soc(s){
|
|
pBeg = pBuffer;
|
|
pCur = pBuffer;
|
|
pEnd = pBuffer;
|
|
//pEnd = pBuffer + BUFFER_SIZE;
|
|
streambuf::setp(pBeg, pEnd);
|
|
|
|
gBeg = gBuffer;
|
|
gCur = gBuffer;
|
|
gEnd = gBuffer + BUFFER_SIZE;
|
|
streambuf::setg(gBeg, gCur, gEnd);
|
|
}
|
|
|
|
int SocketStreamBuffer::underflow() {
|
|
int recv_bytes = soc.read(gBuffer, BUFFER_SIZE);
|
|
|
|
if(recv_bytes > 0){
|
|
gCur = gBuffer;
|
|
gEnd = gBuffer+recv_bytes;
|
|
streambuf::setg(gBeg, gCur, gEnd);
|
|
|
|
return Tr::not_eof( *gCur );
|
|
}
|
|
return Tr::eof();
|
|
}
|
|
|
|
int SocketStreamBuffer::overflow(int c) {
|
|
if(c == Tr::eof())
|
|
return Tr::not_eof(c);
|
|
soc.write(c);
|
|
return c;
|
|
/*if(sync() >= 0)
|
|
return c;
|
|
return Tr::eof();*/
|
|
}/*
|
|
int SocketStreamBuffer::sync() {
|
|
if( soc.write( pBuffer, pCur-pBeg )){
|
|
pCur = pBuffer;
|
|
streambuf::setp(pBeg, pEnd);
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}*/
|
|
|