1.1 --- a/src/share/vm/utilities/ostream.cpp Thu Jul 03 11:01:32 2008 -0700 1.2 +++ b/src/share/vm/utilities/ostream.cpp Fri Jul 11 01:14:44 2008 -0700 1.3 @@ -753,21 +753,28 @@ 1.4 write(str, len); 1.5 } 1.6 1.7 -bufferedStream::bufferedStream(size_t initial_size) : outputStream() { 1.8 +bufferedStream::bufferedStream(size_t initial_size, size_t bufmax) : outputStream() { 1.9 buffer_length = initial_size; 1.10 buffer = NEW_C_HEAP_ARRAY(char, buffer_length); 1.11 buffer_pos = 0; 1.12 buffer_fixed = false; 1.13 + buffer_max = bufmax; 1.14 } 1.15 1.16 -bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size) : outputStream() { 1.17 +bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size, size_t bufmax) : outputStream() { 1.18 buffer_length = fixed_buffer_size; 1.19 buffer = fixed_buffer; 1.20 buffer_pos = 0; 1.21 buffer_fixed = true; 1.22 + buffer_max = bufmax; 1.23 } 1.24 1.25 void bufferedStream::write(const char* s, size_t len) { 1.26 + 1.27 + if(buffer_pos + len > buffer_max) { 1.28 + flush(); 1.29 + } 1.30 + 1.31 size_t end = buffer_pos + len; 1.32 if (end >= buffer_length) { 1.33 if (buffer_fixed) { 1.34 @@ -811,7 +818,7 @@ 1.35 #endif 1.36 1.37 // Network access 1.38 -networkStream::networkStream() { 1.39 +networkStream::networkStream() : bufferedStream(1024*10, 1024*10) { 1.40 1.41 _socket = -1; 1.42 1.43 @@ -831,7 +838,9 @@ 1.44 1.45 void networkStream::flush() { 1.46 if (size() != 0) { 1.47 - hpi::send(_socket, (char *)base(), (int)size(), 0); 1.48 + int result = hpi::raw_send(_socket, (char *)base(), (int)size(), 0); 1.49 + assert(result != -1, "connection error"); 1.50 + assert(result == (int)size(), "didn't send enough data"); 1.51 } 1.52 reset(); 1.53 }