template <ACE_SYNCH_DECL, class TIME_POLICY> ACE_Module<ACE_SYNCH_USE, TIME_POLICY> * ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::find (const ACE_TCHAR *name) { ACE_TRACE ("ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::find"); for (ACE_Module<ACE_SYNCH_USE, TIME_POLICY> *mod = this->stream_head_; mod != 0; mod = mod->next ()) if (ACE_OS::strcmp (mod->name (), name) == 0) return mod; return 0; }
template <ACE_SYNCH_DECL> int ACE_Stream<ACE_SYNCH_USE>::remove (const ACE_TCHAR *name, int flags) { ACE_TRACE ("ACE_Stream<ACE_SYNCH_USE>::remove"); ACE_Module<ACE_SYNCH_USE> *prev = 0; for (ACE_Module<ACE_SYNCH_USE> *mod = this->stream_head_; mod != 0; mod = mod->next ()) if (ACE_OS::strcmp (mod->name (), name) == 0) { if (prev == 0) // Deleting ACE_Stream Head this->stream_head_->link (mod->next ()); else prev->link (mod->next ()); // Don't delete the Module unless the flags request this. if (flags != ACE_Module<ACE_SYNCH_USE>::M_DELETE_NONE) { // Close down the module and release the memory. mod->close (flags); delete mod; } return 0; } else prev = mod; return -1; }
template <ACE_SYNCH_DECL, class TIME_POLICY> void ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::dump (void) const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::dump"); ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("-------- module links --------\n"))); for (ACE_Module<ACE_SYNCH_USE, TIME_POLICY> *mp = this->stream_head_; ; mp = mp->next ()) { ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("module name = %s\n"), mp->name ())); if (mp == this->stream_tail_) break; } ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("-------- writer links --------\n"))); ACE_Task<ACE_SYNCH_USE, TIME_POLICY> *tp; for (tp = this->stream_head_->writer (); ; tp = tp->next ()) { ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("writer queue name = %s\n"), tp->name ())); tp->dump (); ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("-------\n"))); if (tp == this->stream_tail_->writer () || (this->linked_us_ && tp == this->linked_us_->stream_head_->reader ())) break; } ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("-------- reader links --------\n"))); for (tp = this->stream_tail_->reader (); ; tp = tp->next ()) { ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("reader queue name = %s\n"), tp->name ())); tp->dump (); ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("-------\n"))); if (tp == this->stream_head_->reader () || (this->linked_us_ && tp == this->linked_us_->stream_head_->writer ())) break; } #endif /* ACE_HAS_DUMP */ }
template <ACE_SYNCH_DECL, class TIME_POLICY> int ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::remove (const ACE_TCHAR *name, int flags) { ACE_TRACE ("ACE_Stream<ACE_SYNCH_USE, TIME_POLICY>::remove"); ACE_Module<ACE_SYNCH_USE, TIME_POLICY> *prev = 0; for (ACE_Module<ACE_SYNCH_USE, TIME_POLICY> *mod = this->stream_head_; mod != 0; mod = mod->next ()) { #ifndef ACE_NLOGGING if (ACE::debug ()) { ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("ACE_Stream::remove - comparing existing module :%s: with :%s:\n"), mod->name (), name)); } #endif if (ACE_OS::strcmp (mod->name (), name) == 0) { if (prev == 0) // Deleting ACE_Stream Head this->stream_head_->link (mod->next ()); else prev->link (mod->next ()); // Close down the module. mod->close (flags); // Don't delete the Module unless the flags request this. if (flags != ACE_Module<ACE_SYNCH_USE, TIME_POLICY>::M_DELETE_NONE) { // Release the memory. delete mod; } return 0; } else prev = mod; } ACELIB_DEBUG ((LM_WARNING, ACE_TEXT ("ACE_Stream::remove failed to find module with name %s to remove\n"),name)); return -1; }