This commit is contained in:
Erik Trimble 2008-07-11 01:14:44 -07:00
commit 2d6f42d18c
513 changed files with 31554 additions and 2230 deletions

View file

@ -753,21 +753,28 @@ void staticBufferStream::vprint_cr(const char* format, va_list argptr) {
write(str, len);
}
bufferedStream::bufferedStream(size_t initial_size) : outputStream() {
bufferedStream::bufferedStream(size_t initial_size, size_t bufmax) : outputStream() {
buffer_length = initial_size;
buffer = NEW_C_HEAP_ARRAY(char, buffer_length);
buffer_pos = 0;
buffer_fixed = false;
buffer_max = bufmax;
}
bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size) : outputStream() {
bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size, size_t bufmax) : outputStream() {
buffer_length = fixed_buffer_size;
buffer = fixed_buffer;
buffer_pos = 0;
buffer_fixed = true;
buffer_max = bufmax;
}
void bufferedStream::write(const char* s, size_t len) {
if(buffer_pos + len > buffer_max) {
flush();
}
size_t end = buffer_pos + len;
if (end >= buffer_length) {
if (buffer_fixed) {
@ -811,7 +818,7 @@ bufferedStream::~bufferedStream() {
#endif
// Network access
networkStream::networkStream() {
networkStream::networkStream() : bufferedStream(1024*10, 1024*10) {
_socket = -1;
@ -831,7 +838,9 @@ int networkStream::read(char *buf, size_t len) {
void networkStream::flush() {
if (size() != 0) {
hpi::send(_socket, (char *)base(), (int)size(), 0);
int result = hpi::raw_send(_socket, (char *)base(), (int)size(), 0);
assert(result != -1, "connection error");
assert(result == (int)size(), "didn't send enough data");
}
reset();
}