Update of /cvsroot/javaprofiler/library/src/commun
In directory usw-pr-cvs1:/tmp/cvs-serv7084/src/commun
Modified Files:
buffer.cpp buffer.h communSocket.cpp
Log Message:
communication improvements
Index: buffer.cpp
===================================================================
RCS file: /cvsroot/javaprofiler/library/src/commun/buffer.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** buffer.cpp 21 Nov 2001 22:31:42 -0000 1.5
--- buffer.cpp 6 Mar 2002 18:00:38 -0000 1.6
***************
*** 132,133 ****
--- 132,146 ----
_buf = new char[_bufSize];
}
+
+ void Buffer::useBuffer( char* buf, jint size) {
+
+ if( _buf != buf) {
+
+ if( _buf) delete[] _buf;
+
+ _buf = buf;
+ _bufSize = size;
+ }
+
+ _size = size;
+ }
Index: buffer.h
===================================================================
RCS file: /cvsroot/javaprofiler/library/src/commun/buffer.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** buffer.h 2 Mar 2002 15:48:44 -0000 1.6
--- buffer.h 6 Mar 2002 18:00:38 -0000 1.7
***************
*** 117,120 ****
--- 117,128 ----
jint getSize() const { return _size;}
+ /** Get size of buffer. This method returns size of whole
+ ** buffer, so a number which can be greater or equal to
+ ** size of data.
+ **
+ ** @return size of buffer */
+
+ jint getBufSize() const { return _bufSize;}
+
/** Clear buffer. It truncates buffer to zero length,
** everything stored in the buffer will be lost. */
***************
*** 164,167 ****
--- 172,186 ----
void operator=( const Buffer& b);
+
+ /** Use external buffer. This method replaces internal
+ ** buffer by external one. We use it when we have
+ ** preallocated array of known size and we want to use
+ ** it as Buffer object (that's better than use copy
+ ** constructor for that because it is much faster).
+ **
+ ** @param buf pointer to external buffer
+ ** @param size size of external buffer */
+
+ void useBuffer( char* buf, jint size);
private:
Index: communSocket.cpp
===================================================================
RCS file: /cvsroot/javaprofiler/library/src/commun/communSocket.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** communSocket.cpp 26 Jan 2002 22:50:27 -0000 1.12
--- communSocket.cpp 6 Mar 2002 18:00:38 -0000 1.13
***************
*** 205,209 ****
if( size) {
! char* buf = new char[size];
rc = recv( _csock, buf, size, 0);
--- 205,214 ----
if( size) {
! int bb = (size <= b.getBufSize());
!
! char* buf;
!
! if( bb) buf = const_cast<char*>( b.getBuffer());
! else buf = new char[size];
rc = recv( _csock, buf, size, 0);
***************
*** 215,221 ****
#endif
! if( !_failed) b = Buffer( buf, size);
!
! delete[] buf;
}
else b.clear();
--- 220,225 ----
#endif
! if( !_failed) b.useBuffer( buf, size);
! else if( !bb) delete[] buf;
}
else b.clear();
|