⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myplayerlistenerpoller.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$////////////////////////////////////////////////////////////////////////#include "test/mp/MyPlayerListenerPoller.h"#include "os/OsBSem.h"#include "os/OsDefs.h"#include "mp/MpMisc.h"// Class used to wait for state changesMyPlayerListenerPoller::MyPlayerListenerPoller(int iTimeoutSecs)  : mSemStateChange(OsBSem::Q_PRIORITY, OsBSem::EMPTY)  , mSemGuard(OsBSem::Q_PRIORITY, OsBSem::FULL){  miTimeoutSec = iTimeoutSecs  ;  clearState();}MyPlayerListenerPoller::~MyPlayerListenerPoller(){}void MyPlayerListenerPoller::clearState(){  mSemGuard.acquire() ;  for (int i=0; i<MAX_STATES; i++)     mStates[i] = FALSE ;  mSemGuard.release() ;}UtlBoolean MyPlayerListenerPoller::waitForState(PlayerState state){  mSemGuard.acquire() ;  UtlBoolean bRetrieved = mStates[state] ;  mSemGuard.release() ;  while (bRetrieved == FALSE)  {     OsStatus status = mSemStateChange.acquire(OsTime(miTimeoutSec, 0)) ;     if (status == OS_SUCCESS)     {        mSemGuard.acquire() ;        bRetrieved = mStates[state] ;        mSemGuard.release() ;     }     else     {        osPrintf("Timeout waiting for state %d\n", state) ;        for (int i=0; i<MAX_STATES; i++)        {           osPrintf("\tState %2d: %d\n", i, mStates[i]) ;        }        break ;     }  }  return bRetrieved ;}void MyPlayerListenerPoller::playerRealized(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPrefetched(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPlaying(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPaused(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}void MyPlayerListenerPoller::playerStopped(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}void MyPlayerListenerPoller::playerFailed(MpPlayerEvent& event){  mStates[event.getState()] = TRUE ;  mSemStateChange.release() ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -