[Cppunit-cvs] cppunit2/src/opentest sharedmemorytransport.cpp,1.6,1.7
Brought to you by:
blep
From: Baptiste L. <bl...@us...> - 2006-03-07 23:02:59
|
Update of /cvsroot/cppunit/cppunit2/src/opentest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4621/src/opentest Modified Files: sharedmemorytransport.cpp Log Message: * added end to end test for shared memory transport. Index: sharedmemorytransport.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/opentest/sharedmemorytransport.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** sharedmemorytransport.cpp 1 Feb 2006 18:26:17 -0000 1.6 --- sharedmemorytransport.cpp 7 Mar 2006 23:02:56 -0000 1.7 *************** *** 23,26 **** --- 23,32 ---- + // Log macro (will probably be replace with a mini logging framework as such thing are required + // to debug distributed app). + #define OPENTEST_SHMEM_LOG \ + if ( config_.log_ ) config_.log_ + + static const DWORD magicKey = 0x43555431; *************** *** 219,222 **** --- 225,230 ---- virtual ~SharedMemoryTransportImpl(); + std::string transportName() const; + // Called from 'main' thread void send( const RemoteMessagePtr &message ); *************** *** 292,296 **** void read( const char *hint, Pos readLength ) { ! // log( "read: %s, read %d bytes at offset %d", hint, readLength, circular_->readPos_ ); circular_->read( readLength ); processedLength_ += readLength; --- 300,304 ---- void read( const char *hint, Pos readLength ) { ! // OPENTEST_SHMEM_LOG( "read: %s, read %d bytes at offset %d", hint, readLength, circular_->readPos_ ); circular_->read( readLength ); processedLength_ += readLength; *************** *** 299,303 **** void write( const char *hint, Pos writeLength ) { ! // log( "write: %s, wrote %d bytes at offset %d", hint, writeLength, circular_->normalizedWritePos() ); circular_->wrote( writeLength ); processedLength_ += writeLength; --- 307,311 ---- void write( const char *hint, Pos writeLength ) { ! // OPENTEST_SHMEM_LOG( "write: %s, wrote %d bytes at offset %d", hint, writeLength, circular_->normalizedWritePos() ); circular_->wrote( writeLength ); processedLength_ += writeLength; *************** *** 320,324 **** void setUpReadWriteBuffers(); void checkManualEvents(); - void log( const char *format, ... ) {} static DWORD WINAPI threadBootstrap( void *p ); void startThread(); --- 328,331 ---- *************** *** 364,368 **** } unsigned int pid = ::GetCurrentProcessId(); ! nameLength_ = _tprintf( nameBuffer_, _T("cpput_%08x_%08x"), pid, id_ ); CPPTL_ASSERT_MESSAGE( nameLength_ < sizeof(nameBuffer_)-1, "buffer overflow" ); --- 371,375 ---- } unsigned int pid = ::GetCurrentProcessId(); ! nameLength_ = _stprintf( nameBuffer_, _T("cpput_%08x_%08x"), pid, id_ ); CPPTL_ASSERT_MESSAGE( nameLength_ < sizeof(nameBuffer_)-1, "buffer overflow" ); *************** *** 371,374 **** --- 378,382 ---- setUpReadWriteBuffers(); checkManualEvents(); + startThread(); } *************** *** 397,404 **** --- 405,414 ---- setUpReadWriteBuffers(); checkManualEvents(); + startThread(); } SharedMemoryTransportImpl::~SharedMemoryTransportImpl() { + stopThread(); } *************** *** 434,437 **** --- 444,454 ---- + std::string + SharedMemoryTransportImpl::transportName() const + { + return nameBuffer_; // @todo change this to work if TCHAR = wchar_t + } + + void SharedMemoryTransportImpl::openSharedMemoryRegion() *************** *** 516,521 **** --- 533,541 ---- SharedMemoryTransportImpl::send( const RemoteMessagePtr &message ) { + OPENTEST_SHMEM_LOG( "send(), acquiring messagesToSendLock_" ); CppTL::Mutex::ScopedLockGuard guard( messagesToSendLock_ ); messagesToSend_.push_back( message ); + sendMessageEvent_.signal(); + OPENTEST_SHMEM_LOG( "send(), message pushed in messagesToSend_; sendMessageEvent_ signaled." ); } *************** *** 565,573 **** if ( thread_ ) { ! log( "Stopping thread..." ); stopEvent_.signal(); WaitForSingleObject( thread_, INFINITE ); // join thread stopEvent_.reset(); ! log( "Thread stopped." ); } } --- 585,593 ---- if ( thread_ ) { ! OPENTEST_SHMEM_LOG( "Stopping thread..." ); stopEvent_.signal(); WaitForSingleObject( thread_, INFINITE ); // join thread stopEvent_.reset(); ! OPENTEST_SHMEM_LOG( "Thread stopped." ); } } *************** *** 579,588 **** try { ! log( "Thread started." ); prepareWaitObjects(); while ( true ) { ! log( "Waiting event"); DWORD event = WaitForMultipleObjects( waitObjects_.size(), &waitObjects_[0], --- 599,608 ---- try { ! OPENTEST_SHMEM_LOG( "Thread started." ); prepareWaitObjects(); while ( true ) { ! OPENTEST_SHMEM_LOG( "Waiting event"); DWORD event = WaitForMultipleObjects( waitObjects_.size(), &waitObjects_[0], *************** *** 590,609 **** INFINITE ); event -= WAIT_OBJECT_0; ! log( "Event signaled: %d", event ); if ( event <0 || event > waitObjects_.size() ) { if ( event + WAIT_OBJECT_0 == WAIT_TIMEOUT ) ! log( "timeout event !" ); else if ( event + WAIT_OBJECT_0 == WAIT_FAILED ) { ! log( "event wait failed" ); } else ! log ("abandonned event: %d!", event ); break; // timeout or abandonned event => child process died. } if ( waitObjects_[event] == stopEvent_.get() ) { ! log( "Stop event signaled !" ); break; } --- 610,629 ---- INFINITE ); event -= WAIT_OBJECT_0; ! OPENTEST_SHMEM_LOG( "Event signaled: %d", event ); if ( event <0 || event > waitObjects_.size() ) { if ( event + WAIT_OBJECT_0 == WAIT_TIMEOUT ) ! OPENTEST_SHMEM_LOG( "timeout event !" ); else if ( event + WAIT_OBJECT_0 == WAIT_FAILED ) { ! OPENTEST_SHMEM_LOG( "event wait failed" ); } else ! OPENTEST_SHMEM_LOG("abandonned event: %d!", event ); break; // timeout or abandonned event => child process died. } if ( waitObjects_[event] == stopEvent_.get() ) { ! OPENTEST_SHMEM_LOG( "Stop event signaled !" ); break; } *************** *** 613,625 **** pushReceivedMessages(); } ! log( "Thread stopped." ); } catch ( const std::exception &e ) { ! log( "thread aborted: %s", e.what() ); } catch ( ... ) { ! log( "thread aborted with an unspecified exception." ); } } --- 633,645 ---- pushReceivedMessages(); } ! OPENTEST_SHMEM_LOG( "Thread stopped." ); } catch ( const std::exception &e ) { ! OPENTEST_SHMEM_LOG( "thread aborted: %s", e.what() ); } catch ( ... ) { ! OPENTEST_SHMEM_LOG( "thread aborted with an unspecified exception." ); } } *************** *** 699,703 **** buffer.state_ = bsMessage; buffer.processedLength_ = 0; ! log( "read: message size is %d", buffer.messageLength_ ); buffer.stream_.packets().beginWriteMessage(); } --- 719,723 ---- buffer.state_ = bsMessage; buffer.processedLength_ = 0; ! OPENTEST_SHMEM_LOG( "read: message size is %d", buffer.messageLength_ ); buffer.stream_.packets().beginWriteMessage(); } *************** *** 712,716 **** if ( buffer.processedLength_ == buffer.messageLength_ ) { ! log( "read: message completly received" ); buffer.stream_.packets().endWriteMessage(); buffer.state_ = bsSize; --- 732,736 ---- if ( buffer.processedLength_ == buffer.messageLength_ ) { ! OPENTEST_SHMEM_LOG( "read: message completly received" ); buffer.stream_.packets().endWriteMessage(); buffer.state_ = bsSize; *************** *** 757,761 **** buffer.state_ = bsMessage; buffer.processedLength_ = 0; ! log( "write: message size is %d", buffer.messageLength_ ); } } --- 777,781 ---- buffer.state_ = bsMessage; buffer.processedLength_ = 0; ! OPENTEST_SHMEM_LOG( "write: message size is %d", buffer.messageLength_ ); } } *************** *** 769,773 **** if ( buffer.processedLength_ == buffer.messageLength_ ) { ! log( "write: message completly sent" ); buffer.state_ = bsSize; buffer.processedLength_ = 0; --- 789,793 ---- if ( buffer.processedLength_ == buffer.messageLength_ ) { ! OPENTEST_SHMEM_LOG( "write: message completly sent" ); buffer.state_ = bsSize; buffer.processedLength_ = 0; *************** *** 845,848 **** --- 865,875 ---- } + + std::string + SharedMemoryTransport::transportName() const + { + return impl_->transportName(); + } + void SharedMemoryTransport::sendMessage( const RemoteMessagePtr &message ) |