From: Marek P. <ma...@us...> - 2002-03-06 18:00:42
|
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(); |