VOD_SessionControl::~VOD_SessionControl() { LOG(DLOGL_REALLY_NOISY, " destruct mVodSessionId: %d ", mVodSessionId); pthread_mutex_lock(&mVodSessionListMutex); mActiveVodSessionMap.erase(mVodSessionId); LOG(DLOGL_REALLY_NOISY, "sendMsgInfoList.size(): %d", sendMsgInfoList.size()); EventLoop* evtLoop = ptrOnDemand->GetEventLoop(); // Remove all event timers and messages from send list if (!sendMsgInfoList.empty()) { list<SendMsgInfo *>::iterator itr; itr = sendMsgInfoList.begin(); while (itr != sendMsgInfoList.end()) { EventTimer *evt = (*itr)->evtTimer; LOG(DLOGL_REALLY_NOISY, "evtLoop->delTimer: %p", evt); if (evtLoop) { evtLoop->delTimer(evt); } delete *itr; itr = sendMsgInfoList.erase(itr); } } pthread_mutex_unlock(&mVodSessionListMutex); LOG(DLOGL_REALLY_NOISY, "exit"); }
void VOD_SessionControl::RemoveMessageFromSendList(SendMsgInfo *msgInfo) { pthread_mutex_lock(&mVodSessionListMutex); LOG(DLOGL_REALLY_NOISY, "RemoveMessageFromSendList sendMsgInfoList.size(): %d", sendMsgInfoList.size()); if (!sendMsgInfoList.empty()) { list<SendMsgInfo *>::iterator itr; for (itr = sendMsgInfoList.begin(); itr != sendMsgInfoList.end(); ++itr) { if ((*itr)->transId == msgInfo->transId) { EventLoop* evtLoop = ptrOnDemand->GetEventLoop(); if (evtLoop) { evtLoop->delTimer((*itr)->evtTimer); } LOG(DLOGL_REALLY_NOISY, "deleting Message with address: %p", *itr); delete *itr; *itr = NULL; sendMsgInfoList.erase(itr); break; } } } pthread_mutex_unlock(&mVodSessionListMutex); }