int ACE_Stream_Type::resume (void) const { ACE_TRACE ("ACE_Stream_Type::resume"); for (ACE_Module_Type *m = this->head_; m != 0; m = m->link ()) m->resume (); return 0; }
int ACE_Stream_Type::suspend (void) const { ACE_TRACE ("ACE_Stream_Type::suspend"); for (ACE_Module_Type *m = this->head_; m != 0; m = m->link ()) m->suspend (); return 0; }
ACE_Module_Type * ACE_Stream_Type::find (const ACE_TCHAR *mod_name) const { ACE_TRACE ("ACE_Stream_Type::find"); for (ACE_Module_Type *m = this->head_; m != 0; m = m->link ()) if (ACE_OS::strcmp (m->name (), mod_name) == 0) return m; return 0; }
int ACE_Stream_Type::remove (ACE_Module_Type *mod) { ACE_TRACE ("ACE_Stream_Type::remove"); ACE_Module_Type *prev = 0; void *obj = this->object (); MT_Stream *str = (MT_Stream *) obj; int result = 0; for (ACE_Module_Type *m = this->head_; m != 0; ) { // We need to do this first so we don't bomb out if we delete m! ACE_Module_Type *link = m->link (); if (m == mod) { if (prev == 0) this->head_ = link; else prev->link (link); // Final arg is an indication to *not* delete the Module. if (str->remove (m->name (), MT_Module::M_DELETE_NONE) == -1) result = -1; // This call may end up deleting m, which is ok since we // don't access it again! m->fini (); } else prev = m; m = link; } return result; }
int ACE_Stream_Type::remove (ACE_Module_Type *mod) { ACE_TRACE ("ACE_Stream_Type::remove"); ACE_Module_Type *prev = 0; void *obj = this->object (); MT_Stream *str = (MT_Stream *) obj; int result = 0; for (ACE_Module_Type *m = this->head_; m != 0; ) { // We need to do this first so we don't bomb out if we delete m! ACE_Module_Type *link = m->link (); if (m == mod) { if (prev == 0) this->head_ = link; else prev->link (link); // Final arg is an indication to *not* delete the Module. if (str->remove (m->name (), MT_Module::M_DELETE_NONE) == -1) result = -1; // Do not call m->fini (); as this will result in a double delete // of the ACE_Module_type when ACE_Service_Repository::fini is called } else prev = m; m = link; } return result; }
int ACE_Stream_Type::fini (void) const { ACE_TRACE ("ACE_Stream_Type::fini"); void *obj = this->object (); MT_Stream *str = (MT_Stream *) obj; for (ACE_Module_Type *m = this->head_; m != 0;) { ACE_Module_Type *t = m->link (); // Final arg is an indication to *not* delete the Module. str->remove (m->name (), MT_Module::M_DELETE_NONE); m = t; } str->close (); return ACE_Service_Type_Impl::fini (); }