void signalEventByDispatcher(const DPL::SharedPtr<TemplateEvent> &event)
{
LogDebug("in");
- DPL::Event::AbstractEventDispatcher *dispatcher =
- ThreadPool::getInstance().getDispatcher(m_threadDispatcher);
- dispatcher->AddEventCall(new SignalEventCall<TemplateEvent>(event));
+ Try {
+ DPL::Event::AbstractEventDispatcher *dispatcher =
+ ThreadPool::getInstance().getDispatcher(m_threadDispatcher);
+ dispatcher->AddEventCall(new SignalEventCall<TemplateEvent>(event));
+ }
+ Catch(DPL::Thread::Exception::UnmanagedThread) {
+ // if called on unmanaged thread,
+ // call signalSynchronousEventFlag() directly
+ LogDebug("signalSynchronousEventFlag() is called"
+ "by unmanaged thread");
+ event->signalSynchronousEventFlag();
+ }
}
virtual ~EventReceiver()