27 #include <arpa/inet.h>
34 bool InQueue::DiscardMessage( Message& msg, uint16_t& sid)
const
36 if( msg.GetSize() < 8 )
56 uint16_t handlerSid = handler->
GetSid();
59 pHandlers[handlerSid] = HandlerAndExpire( handler, expires );
75 if (DiscardMessage(*msg, msgSid))
81 HandlerMap::iterator it = pHandlers.find(msgSid);
83 if (it != pHandlers.end())
86 handler = it->second.first;
88 exp = it->second.second;
95 pHandlers.erase( it );
96 log->
Debug(
ExDbgMsg,
"[handler: %p] Removed MsgHandler: %p from the in-queue.",
116 uint16_t handlerSid = handler->
GetSid();
118 pHandlers[handlerSid] = HandlerAndExpire( handler, expires );
126 uint16_t handlerSid = handler->
GetSid();
128 pHandlers.erase(handlerSid);
130 log->
Debug(
ExDbgMsg,
"[handler: %p] Removed MsgHandler: %p from the in-queue.",
143 for( HandlerMap::iterator it = pHandlers.begin(); it != pHandlers.end(); )
145 action = it->second.first->OnStreamEvent( event, status );
149 auto next = it; ++next;
150 pHandlers.erase( it );
167 HandlerMap::iterator it = pHandlers.begin();
168 while( it != pHandlers.end() )
170 if( it->second.second <= now )
174 auto next = it; ++next;
176 pHandlers.erase( it );
static Log * GetLog()
Get default log.
void ReportTimeout(time_t now=0)
Timeout handlers.
void RemoveMessageHandler(MsgHandler *handler)
Remove a listener.
void ReAddMessageHandler(MsgHandler *handler, time_t expires)
Re-insert the handler without scanning the cached messages.
void ReportStreamEvent(MsgHandler::StreamEvent event, XRootDStatus status)
Report an event to the handlers.
MsgHandler * GetHandlerForMessage(std::shared_ptr< Message > &msg, time_t &expires, uint16_t &action)
void AddMessageHandler(MsgHandler *handler, time_t expires, bool &rmMsg)
void Debug(uint64_t topic, const char *format,...)
Print a debug message.
virtual uint16_t Examine(std::shared_ptr< Message > &msg)=0
virtual uint16_t GetSid() const =0
StreamEvent
Events that may have occurred to the stream.
@ Timeout
The declared timeout has occurred.
const uint16_t errOperationExpired
const uint16_t stError
An error occurred that could potentially be retried.
Procedure execution status.