void EventGroup::GetEvents(EventArray& events) const { // put all names in list size_t num_names = EventMap.NumElements(); for (size_t iname = 0; iname < num_names; iname++) { const EventNameID& nameid = EventMap[iname]; events.SetIDName(nameid.ID, nameid.Name); } // put all event times for (EventGroupConstIter i(*this); i.HasFrame(); i.Next()) { events.AddEvent(i.Time(), i.ID()); } }
bool Socket::IsOverlappedReceiveReady() const { if (IsUDPSlaveSocket()) // UDP slave sockets are never read directly. For these sockets, act as if they're never ready for reads. return false; #ifdef WIN32 if (queuedReceiveBuffers.Size() == 0) return false; return Event((*queuedReceiveBuffers.Front())->overlapped.hEvent, EventWaitRead).Test(); #else if (!readOpen) return false; EventArray ea; ea.AddEvent(Event(connectSocket, EventWaitRead)); return ea.Wait(0) == 0; #endif }
bool Socket::IsOverlappedSendReady() { if (!writeOpen) return false; #ifdef WIN32 if (queuedSendBuffers.CapacityLeft() > 0) return true; OverlappedTransferBuffer *sentData = *queuedSendBuffers.Front(); DWORD flags = 0; BOOL ret = WSAGetOverlappedResult(connectSocket, &sentData->overlapped, (LPDWORD)&sentData->bytesContains, FALSE, &flags); return ret == TRUE; #else EventArray ea; ea.AddEvent(Event(connectSocket, EventWaitWrite)); return ea.Wait(0) == 0; #endif }