Bug #270: Simulator::RunOneEvent

This commit is contained in:
Gustavo J. A. M. Carneiro
2008-08-06 11:37:52 +01:00
parent bf060fddf8
commit 161adc2a4e
6 changed files with 35 additions and 0 deletions

View File

@@ -156,6 +156,12 @@ DefaultSimulatorImpl::Run (void)
NS_ASSERT(!m_events->IsEmpty () || m_unscheduledEvents == 0);
}
void
DefaultSimulatorImpl::RunOneEvent (void)
{
ProcessOneEvent ();
}
void
DefaultSimulatorImpl::Stop (void)
{

View File

@@ -55,6 +55,7 @@ public:
virtual void Cancel (const EventId &ev);
virtual bool IsExpired (const EventId &ev) const;
virtual void Run (void);
virtual void RunOneEvent (void);
virtual Time Now (void) const;
virtual Time GetDelayLeft (const EventId &id) const;
virtual Time GetMaximumSimulationTime (void) const;

View File

@@ -49,6 +49,7 @@ public:
virtual void Cancel (const EventId &ev) = 0;
virtual bool IsExpired (const EventId &ev) const = 0;
virtual void Run (void) = 0;
virtual void RunOneEvent (void) = 0;
virtual Time Now (void) const = 0;
virtual Time GetDelayLeft (const EventId &id) const = 0;
virtual Time GetMaximumSimulationTime (void) const = 0;

View File

@@ -145,6 +145,13 @@ Simulator::Run (void)
GetImpl ()->Run ();
}
void
Simulator::RunOneEvent (void)
{
NS_LOG_FUNCTION_NOARGS ();
GetImpl ()->RunOneEvent ();
}
void
Simulator::Stop (void)
{

View File

@@ -116,6 +116,11 @@ public:
*/
static void Run (void);
/**
* Process only the next simulation event, then return immediately.
*/
static void RunOneEvent (void);
/**
* If an event invokes this method, it will be the last
* event scheduled by the Simulator::run method before