Mercurial > hg > graal-jvmci-8
diff src/share/vm/utilities/ostream.cpp @ 235:9c2ecc2ffb12 jdk7-b31
Merge
author | trims |
---|---|
date | Fri, 11 Jul 2008 01:14:44 -0700 |
parents | d1605aabd0a1 2a1a77d3458f |
children | 1ee8caae33af |
line wrap: on
line diff
--- a/src/share/vm/utilities/ostream.cpp Thu Jul 03 11:01:32 2008 -0700 +++ b/src/share/vm/utilities/ostream.cpp Fri Jul 11 01:14:44 2008 -0700 @@ -753,21 +753,28 @@ 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 @@ #endif // Network access -networkStream::networkStream() { +networkStream::networkStream() : bufferedStream(1024*10, 1024*10) { _socket = -1; @@ -831,7 +838,9 @@ 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(); }