void MessagePane::OnActionButton2(wxCommandEvent& event) { MessageDetails msg = m_messages.CurrentMessage(); SavePreferenceIfNeeded(msg, 2); DoPostEvent(msg.btn3); DoShowNextMessage(); }
void IEventQueue::PostEvent(std::shared_ptr<IEvent>&& event) { if (!event) { std::cerr << "IEventQueue::PostEvent with null event" << std::endl; throw EventQueueException("IEventQueue::PostEvent with null event"); } DoPostEvent(event); }
void SubscibeCenter::PostEvent( wmp::base::ui16 event_id, char* pData, wmp::base::ui32 len, wmp::base::ui32 delay_times ) { if (!delay_times) { DoPostEvent(event_id, pData, len); } else { wmp::base::ui64 tick_count = ::GetTickCount() + delay_times; tvecevent& rvecevent = m_delay_event[tick_count]; rvecevent.push_back(tdelay_event(event_id,pData,len)); } }
void SubscibeCenter::OnTimer( wmp::base::ui32 timer_id, wmp::base::ttime now ) { wmp::base::ui64 tick_count = ::GetTickCount(); std::list<wmp::base::ui64> lstremove; for(tmap_tickcount2event::iterator it = m_delay_event.begin(); it != m_delay_event.end(); ++it) { if ( it->first < tick_count ) { break; } tvecevent& rvecenent = it->second; for(tvecevent::iterator itevt = rvecenent.begin(); itevt != rvecenent.end(); ++itevt) { DoPostEvent((*itevt).event_id, (*itevt).pData, (*itevt).len); } lstremove.push_back(it->first); } for(std::list<wmp::base::ui64>::iterator it = lstremove.begin(); it != lstremove.end(); ++it) { m_delay_event.erase(*it); } }