OpenClonk
StdSchedulerProc Class Referenceabstract

#include <StdScheduler.h>

Inheritance diagram for StdSchedulerProc:
[legend]

Public Member Functions

 StdSchedulerProc ()=default
 
virtual ~StdSchedulerProc ()=default
 
virtual bool Execute (int iTimeout=-1, pollfd *readyfds=nullptr)=0
 
bool ExecuteUntil (int iTimeout=-1)
 
virtual void GetFDs (std::vector< struct pollfd > &)
 
virtual C4TimeMilliseconds GetNextTick (C4TimeMilliseconds tNow)
 
bool IsSignaled ()
 
virtual bool IsLowPriority ()
 
virtual bool IsNotify ()
 
virtual uint32_t TimerInterval ()
 

Protected Member Functions

void Changed ()
 

Friends

class StdScheduler
 

Detailed Description

Definition at line 50 of file StdScheduler.h.

Constructor & Destructor Documentation

◆ StdSchedulerProc()

StdSchedulerProc::StdSchedulerProc ( )
default

◆ ~StdSchedulerProc()

virtual StdSchedulerProc::~StdSchedulerProc ( )
virtualdefault

Member Function Documentation

◆ Changed()

void StdSchedulerProc::Changed ( )
protected

Definition at line 108 of file StdScheduler.cpp.

109 {
110  auto s = scheduler;
111  if (s)
112  s->Changed(this);
113 }
#define s

References s.

Referenced by C4NetIOTCP::Accept(), C4NetIOTCP::AddConnectWait(), C4NetIOUDP::AddPeer(), C4NetIOTCP::Listen(), and CStdTimerProc::SetDelay().

Here is the caller graph for this function:

◆ Execute()

virtual bool StdSchedulerProc::Execute ( int  iTimeout = -1,
pollfd *  readyfds = nullptr 
)
pure virtual

Implemented in C4ApplicationSec1Timer, C4Network2::InitialConnect, C4NetIO, C4FileMonitor, C4InteractiveThreadNotifyProc, C4StdInProc, C4Network2IO, C4NetIOTCP, C4NetIOUDP, C4NetIOSimpleUDP, and C4HTTPClient.

Referenced by ExecuteUntil(), and SCHNotify::registerAt:.

Here is the caller graph for this function:

◆ ExecuteUntil()

bool StdSchedulerProc::ExecuteUntil ( int  iTimeout = -1)

Definition at line 33 of file StdScheduler.cpp.

34 {
35  // Infinite?
36  if (iTimeout < 0)
37  for (;;)
38  if (!Execute())
39  return false;
40  // Calculate endpoint
41  C4TimeMilliseconds tStopTime = C4TimeMilliseconds::Now() + iTimeout;
42  for (;;)
43  {
44  // Call execute with given timeout
45  if (!Execute(std::max(iTimeout, 0)))
46  return false;
47  // Calculate timeout
49  if (tTime >= tStopTime)
50  break;
51  iTimeout = tStopTime - tTime;
52  }
53  // All ok.
54  return true;
55 }
static C4TimeMilliseconds Now()
virtual bool Execute(int iTimeout=-1, pollfd *readyfds=nullptr)=0

References Execute(), and C4TimeMilliseconds::Now().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFDs()

virtual void StdSchedulerProc::GetFDs ( std::vector< struct pollfd > &  )
inlinevirtual

Reimplemented in C4FileMonitor, C4NetIOSimpleUDP, C4NetIOTCP, CStdNotifyProc, C4StdInProc, and C4HTTPClient.

Definition at line 72 of file StdScheduler.h.

72 { }

◆ GetNextTick()

C4TimeMilliseconds StdSchedulerProc::GetNextTick ( C4TimeMilliseconds  tNow)
virtual

Reimplemented in CStdTimerProc, C4Network2IO, C4NetIOUDP, and C4HTTPClient.

Definition at line 115 of file StdScheduler.cpp.

References C4TimeMilliseconds::PositiveInfinity.

◆ IsLowPriority()

virtual bool StdSchedulerProc::IsLowPriority ( )
inlinevirtual

Definition at line 82 of file StdScheduler.h.

82 { return false; }

◆ IsNotify()

virtual bool StdSchedulerProc::IsNotify ( )
inlinevirtual

Reimplemented in CStdNotifyProc, and C4NetIO.

Definition at line 83 of file StdScheduler.h.

83 { return false; }

◆ IsSignaled()

bool StdSchedulerProc::IsSignaled ( )

◆ TimerInterval()

virtual uint32_t StdSchedulerProc::TimerInterval ( )
inlinevirtual

Reimplemented in CStdTimerProc.

Definition at line 84 of file StdScheduler.h.

84 { return 0; }

Friends And Related Function Documentation

◆ StdScheduler

friend class StdScheduler
friend

Definition at line 86 of file StdScheduler.h.


The documentation for this class was generated from the following files: