diff -r 794671c6a8a1 src/simulator/default-simulator-impl.h --- a/src/simulator/default-simulator-impl.h Fri Aug 01 23:15:00 2008 +0100 +++ b/src/simulator/default-simulator-impl.h Tue Aug 05 15:56:06 2008 +0100 @@ -56,6 +56,7 @@ void Cancel (const EventId &ev); bool IsExpired (const EventId &ev) const; void Run (void); + void ProcessOneEvent (void); Time Now (void) const; Time GetDelayLeft (const EventId &id) const; Time GetMaximumSimulationTime (void) const; @@ -64,7 +65,6 @@ Ptr GetScheduler (void) const; private: - void ProcessOneEvent (void); uint64_t NextTs (void) const; typedef std::list DestroyEvents; diff -r 794671c6a8a1 src/simulator/simulator-impl.h --- a/src/simulator/simulator-impl.h Fri Aug 01 23:15:00 2008 +0100 +++ b/src/simulator/simulator-impl.h Tue Aug 05 15:56:06 2008 +0100 @@ -49,6 +49,7 @@ virtual void Cancel (const EventId &ev) = 0; virtual bool IsExpired (const EventId &ev) const = 0; virtual void Run (void) = 0; + virtual void ProcessOneEvent (void) = 0; virtual Time Now (void) const = 0; virtual Time GetDelayLeft (const EventId &id) const = 0; virtual Time GetMaximumSimulationTime (void) const = 0; diff -r 794671c6a8a1 src/simulator/simulator.cc --- a/src/simulator/simulator.cc Fri Aug 01 23:15:00 2008 +0100 +++ b/src/simulator/simulator.cc Tue Aug 05 15:56:06 2008 +0100 @@ -143,6 +143,13 @@ { NS_LOG_FUNCTION_NOARGS (); GetImpl ()->Run (); +} + +void +Simulator::ProcessOneEvent (void) +{ + NS_LOG_FUNCTION_NOARGS (); + GetImpl ()->ProcessOneEvent (); } void diff -r 794671c6a8a1 src/simulator/simulator.h --- a/src/simulator/simulator.h Fri Aug 01 23:15:00 2008 +0100 +++ b/src/simulator/simulator.h Tue Aug 05 15:56:06 2008 +0100 @@ -115,6 +115,11 @@ * is greater than or equal to the stop time. */ static void Run (void); + + /** + * Process only the next simulation event, then return immediately. + */ + static void ProcessOneEvent (void); /** * If an event invokes this method, it will be the last