BasicTaskScheduler0 Class Reference

#include <BasicUsageEnvironment0.hh>

Inheritance diagram for BasicTaskScheduler0:

Inheritance graph
[legend]
Collaboration diagram for BasicTaskScheduler0:

Collaboration graph
[legend]

Public Types

typedef void BackgroundHandlerProc (void *clientData, int mask)

Public Member Functions

virtual ~BasicTaskScheduler0 ()
virtual void SingleStep (unsigned maxDelayTime=0)=0
virtual TaskToken scheduleDelayedTask (int64_t microseconds, TaskFunc *proc, void *clientData)
virtual void unscheduleDelayedTask (TaskToken &prevTask)
virtual void doEventLoop (char *watchVariable)
virtual void rescheduleDelayedTask (TaskToken &task, int64_t microseconds, TaskFunc *proc, void *clientData)
virtual void turnOnBackgroundReadHandling (int socketNum, BackgroundHandlerProc *handlerProc, void *clientData)=0
virtual void turnOffBackgroundReadHandling (int socketNum)=0

Protected Member Functions

 BasicTaskScheduler0 ()

Protected Attributes

DelayQueue fDelayQueue
HandlerSetfReadHandlers
int fLastHandledSocketNum

Detailed Description

Definition at line 72 of file BasicUsageEnvironment0.hh.


Member Typedef Documentation

typedef void TaskScheduler::BackgroundHandlerProc(void *clientData, int mask) [inherited]

Definition at line 121 of file UsageEnvironment.hh.


Constructor & Destructor Documentation

BasicTaskScheduler0::~BasicTaskScheduler0 (  )  [virtual]

Definition at line 51 of file BasicTaskScheduler0.cpp.

References fReadHandlers.

00051                                           {
00052   delete fReadHandlers;
00053 }

BasicTaskScheduler0::BasicTaskScheduler0 (  )  [protected]

Definition at line 46 of file BasicTaskScheduler0.cpp.

References fReadHandlers.

00047   : fLastHandledSocketNum(-1) {
00048   fReadHandlers = new HandlerSet;
00049 }


Member Function Documentation

virtual void BasicTaskScheduler0::SingleStep ( unsigned  maxDelayTime = 0  )  [pure virtual]

Implemented in BasicTaskScheduler.

Referenced by doEventLoop().

TaskToken BasicTaskScheduler0::scheduleDelayedTask ( int64_t  microseconds,
TaskFunc proc,
void *  clientData 
) [virtual]

Implements TaskScheduler.

Definition at line 55 of file BasicTaskScheduler0.cpp.

References DelayQueue::addEntry(), fDelayQueue, and DelayQueueEntry::token().

00057                                                                    {
00058   if (microseconds < 0) microseconds = 0;
00059   DelayInterval timeToDelay((long)(microseconds/1000000), (long)(microseconds%1000000));
00060   AlarmHandler* alarmHandler = new AlarmHandler(proc, clientData, timeToDelay);
00061   fDelayQueue.addEntry(alarmHandler);
00062 
00063   return (void*)(alarmHandler->token()); 
00064 }

void BasicTaskScheduler0::unscheduleDelayedTask ( TaskToken prevTask  )  [virtual]

Implements TaskScheduler.

Definition at line 66 of file BasicTaskScheduler0.cpp.

References fDelayQueue, NULL, and DelayQueue::removeEntry().

00066                                                                    {
00067   DelayQueueEntry* alarmHandler = fDelayQueue.removeEntry((long)prevTask);
00068   prevTask = NULL;
00069   delete alarmHandler;
00070 }

void BasicTaskScheduler0::doEventLoop ( char *  watchVariable  )  [virtual]

Implements TaskScheduler.

Definition at line 72 of file BasicTaskScheduler0.cpp.

References NULL, and SingleStep().

00072                                                          {
00073   // Repeatedly loop, handling readble sockets and timed events:
00074   while (1) {
00075     if (watchVariable != NULL && *watchVariable != 0) break;
00076     SingleStep();
00077   }
00078 }

void TaskScheduler::rescheduleDelayedTask ( TaskToken task,
int64_t  microseconds,
TaskFunc proc,
void *  clientData 
) [virtual, inherited]

Definition at line 40 of file UsageEnvironment.cpp.

References TaskScheduler::scheduleDelayedTask(), and TaskScheduler::unscheduleDelayedTask().

Referenced by RTSPServer::RTSPClientSession::noteLiveness().

00042                                                             {
00043   unscheduleDelayedTask(task);
00044   task = scheduleDelayedTask(microseconds, proc, clientData);
00045 }

virtual void TaskScheduler::turnOnBackgroundReadHandling ( int  socketNum,
BackgroundHandlerProc handlerProc,
void *  clientData 
) [pure virtual, inherited]

Referenced by ByteStreamFileSource::doGetNextFrame(), BasicUDPSource::doGetNextFrame(), RTSPOverHTTPServer::HTTPClientConnection::HTTPClientConnection(), SIPClient::invite1(), RTSPClient::playMediaSession(), RTSPServer::RTSPClientSession::RTSPClientSession(), RTSPOverHTTPServer::RTSPOverHTTPServer(), and RTSPServer::RTSPServer().

virtual void TaskScheduler::turnOffBackgroundReadHandling ( int  socketNum  )  [pure virtual, inherited]

Implemented in BasicTaskScheduler.

Referenced by SocketDescriptor::deregisterRTPInterface(), ByteStreamFileSource::doStopGettingFrames(), BasicUDPSource::doStopGettingFrames(), RTSPClient::incomingRequestHandler1(), SIPClient::invite1(), RTPInterface::stopNetworkReading(), SocketDescriptor::tcpReadHandler(), BasicUDPSource::~BasicUDPSource(), ByteStreamFileSource::~ByteStreamFileSource(), RTSPOverHTTPServer::HTTPClientConnection::~HTTPClientConnection(), RTSPClient::~RTSPClient(), RTSPServer::RTSPClientSession::~RTSPClientSession(), and RTSPServer::~RTSPServer().


Field Documentation

DelayQueue BasicTaskScheduler0::fDelayQueue [protected]

Definition at line 94 of file BasicUsageEnvironment0.hh.

Referenced by scheduleDelayedTask(), BasicTaskScheduler::SingleStep(), and unscheduleDelayedTask().

HandlerSet* BasicTaskScheduler0::fReadHandlers [protected]

Definition at line 97 of file BasicUsageEnvironment0.hh.

Referenced by BasicTaskScheduler0(), BasicTaskScheduler::SingleStep(), BasicTaskScheduler::turnOffBackgroundReadHandling(), BasicTaskScheduler::turnOnBackgroundReadHandling(), and ~BasicTaskScheduler0().

int BasicTaskScheduler0::fLastHandledSocketNum [protected]

Definition at line 98 of file BasicUsageEnvironment0.hh.

Referenced by BasicTaskScheduler::SingleStep().


The documentation for this class was generated from the following files:
Generated on Tue Jul 22 06:40:31 2008 for live by  doxygen 1.5.2