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);
}