//data is available on one of the thread-safe queues. void pv_metadata_engine_test::ThreadSafeQueueDataAvailable(ThreadSafeQueue* aQueue) { if (aQueue == &iThreadSafeCommandQueue) { for (uint32 ndata = 1; ndata;) { ThreadSafeQueueId id; OsclAny* data; ndata = iThreadSafeCommandQueue.DeQueue(id, data); if (ndata) { PVCmdResponse* cmd = (PVCmdResponse*)data; CommandCompleted(*cmd); OSCL_DELETE(cmd); } } } if (aQueue == &iThreadSafeErrorQueue) { for (uint32 ndata = 1; ndata;) { ThreadSafeQueueId id; OsclAny* data; ndata = iThreadSafeErrorQueue.DeQueue(id, data); if (ndata) { int32 eventType = (PVMFEventType)data; PVAsyncErrorEvent event(eventType); HandleErrorEvent(event); } } } if (aQueue == &iThreadSafeInfoQueue) { for (uint32 ndata = 1; ndata;) { ThreadSafeQueueId id; OsclAny* data; ndata = iThreadSafeInfoQueue.DeQueue(id, data); if (ndata) { int32 eventType = (PVMFEventType)data; PVAsyncInformationalEvent event(eventType); HandleInformationalEvent(event); } } } }
void EventHandler::HandleEpollEvents(uint32_t events) { if (events & EPOLLIN) { HandleReadEvent(); } else if (events & EPOLLOUT) { HandleWriteEvent(); } else { assert((events & (EPOLLHUP | EPOLLERR)) && "unknown event"); HandleErrorEvent(); } }