Mercurial > hg > graal-jvmci-8
comparison src/share/vm/utilities/ostream.cpp @ 222:2a1a77d3458f
6718676: putback for 6604014 is incomplete
Reviewed-by: kvn, jrose
author | never |
---|---|
date | Tue, 24 Jun 2008 16:00:14 -0700 |
parents | f96100ac3d12 |
children | 9c2ecc2ffb12 fab5f738c515 |
comparison
equal
deleted
inserted
replaced
221:1e026f8da827 | 222:2a1a77d3458f |
---|---|
751 size_t len; | 751 size_t len; |
752 const char* str = do_vsnprintf(_buffer, _buflen, format, argptr, true, len); | 752 const char* str = do_vsnprintf(_buffer, _buflen, format, argptr, true, len); |
753 write(str, len); | 753 write(str, len); |
754 } | 754 } |
755 | 755 |
756 bufferedStream::bufferedStream(size_t initial_size) : outputStream() { | 756 bufferedStream::bufferedStream(size_t initial_size, size_t bufmax) : outputStream() { |
757 buffer_length = initial_size; | 757 buffer_length = initial_size; |
758 buffer = NEW_C_HEAP_ARRAY(char, buffer_length); | 758 buffer = NEW_C_HEAP_ARRAY(char, buffer_length); |
759 buffer_pos = 0; | 759 buffer_pos = 0; |
760 buffer_fixed = false; | 760 buffer_fixed = false; |
761 } | 761 buffer_max = bufmax; |
762 | 762 } |
763 bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size) : outputStream() { | 763 |
764 bufferedStream::bufferedStream(char* fixed_buffer, size_t fixed_buffer_size, size_t bufmax) : outputStream() { | |
764 buffer_length = fixed_buffer_size; | 765 buffer_length = fixed_buffer_size; |
765 buffer = fixed_buffer; | 766 buffer = fixed_buffer; |
766 buffer_pos = 0; | 767 buffer_pos = 0; |
767 buffer_fixed = true; | 768 buffer_fixed = true; |
769 buffer_max = bufmax; | |
768 } | 770 } |
769 | 771 |
770 void bufferedStream::write(const char* s, size_t len) { | 772 void bufferedStream::write(const char* s, size_t len) { |
773 | |
774 if(buffer_pos + len > buffer_max) { | |
775 flush(); | |
776 } | |
777 | |
771 size_t end = buffer_pos + len; | 778 size_t end = buffer_pos + len; |
772 if (end >= buffer_length) { | 779 if (end >= buffer_length) { |
773 if (buffer_fixed) { | 780 if (buffer_fixed) { |
774 // if buffer cannot resize, silently truncate | 781 // if buffer cannot resize, silently truncate |
775 len = buffer_length - buffer_pos - 1; | 782 len = buffer_length - buffer_pos - 1; |
809 #include <netinet/in.h> | 816 #include <netinet/in.h> |
810 #include <arpa/inet.h> | 817 #include <arpa/inet.h> |
811 #endif | 818 #endif |
812 | 819 |
813 // Network access | 820 // Network access |
814 networkStream::networkStream() { | 821 networkStream::networkStream() : bufferedStream(1024*10, 1024*10) { |
815 | 822 |
816 _socket = -1; | 823 _socket = -1; |
817 | 824 |
818 hpi::initialize_socket_library(); | 825 hpi::initialize_socket_library(); |
819 | 826 |
829 return hpi::recv(_socket, buf, (int)len, 0); | 836 return hpi::recv(_socket, buf, (int)len, 0); |
830 } | 837 } |
831 | 838 |
832 void networkStream::flush() { | 839 void networkStream::flush() { |
833 if (size() != 0) { | 840 if (size() != 0) { |
834 hpi::send(_socket, (char *)base(), (int)size(), 0); | 841 int result = hpi::raw_send(_socket, (char *)base(), (int)size(), 0); |
842 assert(result != -1, "connection error"); | |
843 assert(result == (int)size(), "didn't send enough data"); | |
835 } | 844 } |
836 reset(); | 845 reset(); |
837 } | 846 } |
838 | 847 |
839 networkStream::~networkStream() { | 848 networkStream::~networkStream() { |