Skip to content

Commit

Permalink
core: Simulator::GetEventCount()
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter D. Barnes, Jr. committed Oct 19, 2018
1 parent 4ed3987 commit 05cb075
Show file tree
Hide file tree
Showing 13 changed files with 70 additions and 1 deletion.
8 changes: 8 additions & 0 deletions src/core/model/default-simulator-impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ DefaultSimulatorImpl::DefaultSimulatorImpl ()
m_currentTs = 0;
m_currentContext = Simulator::NO_CONTEXT;
m_unscheduledEvents = 0;
m_eventCount = 0;
m_eventsWithContextEmpty = true;
m_main = SystemThread::Self();
}
Expand Down Expand Up @@ -141,6 +142,7 @@ DefaultSimulatorImpl::ProcessOneEvent (void)

NS_ASSERT (next.key.m_ts >= m_currentTs);
m_unscheduledEvents--;
m_eventCount++;

NS_LOG_LOGIC ("handle " << next.key.m_ts);
m_currentTs = next.key.m_ts;
Expand Down Expand Up @@ -411,4 +413,10 @@ DefaultSimulatorImpl::GetContext (void) const
return m_currentContext;
}

uint64_t
DefaultSimulatorImpl::GetEventCount (void) const
{
return m_eventCount;
}

} // namespace ns3
3 changes: 3 additions & 0 deletions src/core/model/default-simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class DefaultSimulatorImpl : public SimulatorImpl
virtual void SetScheduler (ObjectFactory schedulerFactory);
virtual uint32_t GetSystemId (void) const;
virtual uint32_t GetContext (void) const;
virtual uint64_t GetEventCount (void) const;;

private:
virtual void DoDispose (void);
Expand Down Expand Up @@ -124,6 +125,8 @@ class DefaultSimulatorImpl : public SimulatorImpl
uint64_t m_currentTs;
/** Execution context of the current event. */
uint32_t m_currentContext;
/** The event count. */
uint64_t m_eventCount;
/**
* Number of events that have been inserted but not yet scheduled,
* not counting the Destroy events; this is used for validation
Expand Down
8 changes: 8 additions & 0 deletions src/core/model/realtime-simulator-impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ RealtimeSimulatorImpl::RealtimeSimulatorImpl ()
m_currentTs = 0;
m_currentContext = Simulator::NO_CONTEXT;
m_unscheduledEvents = 0;
m_eventCount = 0;

m_main = SystemThread::Self();

Expand Down Expand Up @@ -330,6 +331,7 @@ RealtimeSimulatorImpl::ProcessOneEvent (void)
"RealtimeSimulatorImpl::ProcessOneEvent(): event queue is empty");
next = m_events->RemoveNext ();
m_unscheduledEvents--;
m_eventCount++;

//
// We cannot make any assumption that "next" is the same event we originally waited
Expand Down Expand Up @@ -817,6 +819,12 @@ RealtimeSimulatorImpl::GetContext (void) const
return m_currentContext;
}

uint64_t
RealTimeSimulatorImpl::GetEventCount (void) const
{
return m_eventCount;
}

void
RealtimeSimulatorImpl::SetSynchronizationMode (enum SynchronizationMode mode)
{
Expand Down
3 changes: 3 additions & 0 deletions src/core/model/realtime-simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ class RealtimeSimulatorImpl : public SimulatorImpl
virtual void SetScheduler (ObjectFactory schedulerFactory);
virtual uint32_t GetSystemId (void) const;
virtual uint32_t GetContext (void) const;
virtual uint64_t GetEventCount (void) const;;

/** \copydoc ScheduleWithContext(uint32_t,const Time&,EventImpl*) */
void ScheduleRealtimeWithContext (uint32_t context, const Time &delay, EventImpl *event);
Expand Down Expand Up @@ -202,6 +203,8 @@ class RealtimeSimulatorImpl : public SimulatorImpl
uint64_t m_currentTs;
/**< Execution context. */
uint32_t m_currentContext;
/** The event count. */
uint64_t m_eventCount;
/**@}*/

/** Mutex to control access to key state. */
Expand Down
3 changes: 3 additions & 0 deletions src/core/model/simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ class SimulatorImpl : public Object
virtual uint32_t GetSystemId () const = 0;
/** \copydoc Simulator::GetContext */
virtual uint32_t GetContext (void) const = 0;
/** \copydoc Simulator::GetEventCount */
virtual uint64_t GetEventCount (void) const = 0;

};

} // namespace ns3
Expand Down
6 changes: 6 additions & 0 deletions src/core/model/simulator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,12 @@ Simulator::GetContext (void)
{
return GetImpl ()->GetContext ();
}

uint64_t
Simulator::GetEventCount (void)
{
return GetImpl ()-> GetEventCount ();
}

uint32_t
Simulator::GetSystemId (void)
Expand Down
10 changes: 9 additions & 1 deletion src/core/model/simulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,14 @@ class Simulator
*/
NO_CONTEXT = 0xffffffff
};

/**
* Get the number of events executed.
* \returns The total number of events executed.
*/
static uint64_t GetEventCount (void);


/**
* @name Schedule events (in the same context) to run at a future time.
*/
Expand Down Expand Up @@ -1347,7 +1354,8 @@ class Simulator
* @return The EventId.
*/
static EventId DoScheduleDestroy (EventImpl *event);
};

}; // class Simulator

/**
* @ingroup simulator
Expand Down
9 changes: 9 additions & 0 deletions src/mpi/model/distributed-simulator-impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ DistributedSimulatorImpl::DistributedSimulatorImpl ()
NS_FATAL_ERROR ("Can't use distributed simulator without MPI compiled in");
#endif

m_eventCount = 0;
m_stop = false;
m_globalFinished = false;
// uids are allocated from 4.
Expand All @@ -117,6 +118,7 @@ DistributedSimulatorImpl::DistributedSimulatorImpl ()
m_currentTs = 0;
m_currentContext = Simulator::NO_CONTEXT;
m_unscheduledEvents = 0;
m_eventCount = 0;
m_events = 0;
}

Expand Down Expand Up @@ -322,6 +324,7 @@ DistributedSimulatorImpl::ProcessOneEvent (void)

NS_ASSERT (next.key.m_ts >= m_currentTs);
m_unscheduledEvents--;
m_eventCount++;

NS_LOG_LOGIC ("handle " << next.key.m_ts);
m_currentTs = next.key.m_ts;
Expand Down Expand Up @@ -644,4 +647,10 @@ DistributedSimulatorImpl::GetContext (void) const
return m_currentContext;
}

uint64_t
DistributedSimulatorImpl::GetEventCount (void) const
{
return m_eventCount;
}

} // namespace ns3
3 changes: 3 additions & 0 deletions src/mpi/model/distributed-simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ class DistributedSimulatorImpl : public SimulatorImpl
virtual void SetScheduler (ObjectFactory schedulerFactory);
virtual uint32_t GetSystemId (void) const;
virtual uint32_t GetContext (void) const;
virtual uint64_t GetEventCount (void) const;;

private:
virtual void DoDispose (void);
Expand All @@ -145,6 +146,8 @@ class DistributedSimulatorImpl : public SimulatorImpl
uint32_t m_currentUid;
uint64_t m_currentTs;
uint32_t m_currentContext;
/** The event count. */
uint64_t m_eventCount;
// number of events that have been inserted but not yet scheduled,
// not counting the "destroy" events; this is used for validation
int m_unscheduledEvents;
Expand Down
8 changes: 8 additions & 0 deletions src/mpi/model/null-message-simulator-impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ NullMessageSimulatorImpl::NullMessageSimulatorImpl ()
m_currentTs = 0;
m_currentContext = Simulator::NO_CONTEXT;
m_unscheduledEvents = 0;
m_eventCount = 0;
m_events = 0;

m_safeTime = Seconds (0);
Expand Down Expand Up @@ -235,6 +236,7 @@ NullMessageSimulatorImpl::ProcessOneEvent (void)

NS_ASSERT (next.key.m_ts >= m_currentTs);
m_unscheduledEvents--;
m_eventCount++;

NS_LOG_LOGIC ("handle " << next.key.m_ts);
m_currentTs = next.key.m_ts;
Expand Down Expand Up @@ -575,6 +577,12 @@ NullMessageSimulatorImpl::GetContext (void) const
return m_currentContext;
}

uint64_t
NullMessageSimulatorImpl::GetEventCount (void) const
{
return m_eventCount;
}

Time NullMessageSimulatorImpl::CalculateGuaranteeTime (uint32_t nodeSysId)
{
Ptr<RemoteChannelBundle> bundle = RemoteChannelBundleManager::Find (nodeSysId);
Expand Down
3 changes: 3 additions & 0 deletions src/mpi/model/null-message-simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class NullMessageSimulatorImpl : public SimulatorImpl
virtual void SetScheduler (ObjectFactory schedulerFactory);
virtual uint32_t GetSystemId (void) const;
virtual uint32_t GetContext (void) const;
virtual uint64_t GetEventCount (void) const;;

/**
* \return singleton instance
Expand Down Expand Up @@ -176,6 +177,8 @@ class NullMessageSimulatorImpl : public SimulatorImpl
uint32_t m_currentUid;
uint64_t m_currentTs;
uint32_t m_currentContext;
/** The event count. */
uint64_t m_eventCount;
// number of events that have been inserted but not yet scheduled,
// not counting the "destroy" events; this is used for validation
int m_unscheduledEvents;
Expand Down
6 changes: 6 additions & 0 deletions src/visualizer/model/visual-simulator-impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,12 @@ VisualSimulatorImpl::GetContext (void) const
return m_simulator->GetContext ();
}

uint64_t
VisualSimulatorImpl::GetEventCount (void) const
{
return m_simulator->GetEventCount ();
}

void
VisualSimulatorImpl::RunRealSimulator (void)
{
Expand Down
1 change: 1 addition & 0 deletions src/visualizer/model/visual-simulator-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class VisualSimulatorImpl : public SimulatorImpl
virtual void SetScheduler (ObjectFactory schedulerFactory);
virtual uint32_t GetSystemId (void) const;
virtual uint32_t GetContext (void) const;
virtual uint64_t GetEventCount (void) const;;

/// calls Run() in the wrapped simulator
void RunRealSimulator (void);
Expand Down

0 comments on commit 05cb075

Please sign in to comment.