public void ProcessEvent(AeEvent e)
{
if (NodeId.IsNull(e.ConditionId))
{
return;
}
lock (m_lock)
{
string conditionId = GetConditionId(e);
// assign a cookie to the condition/branch.
int cookie = 0;
if (!m_cookies.TryGetValue(conditionId, out cookie))
{
cookie = ++m_counter;
m_cookies[conditionId] = cookie;
}
// remove acked events.
if (e.AckedState)
{
m_events.Remove(cookie);
m_cookies.Remove(conditionId);
}
// save event for acking.
else
{
m_events[cookie] = e;
e.Cookie = cookie;
}
}
}