in lib/HandlerBase.cc [100:139]
void HandlerBase::handleDisconnection(Result result, ClientConnectionWeakPtr connection,
HandlerBaseWeakPtr weakHandler) {
HandlerBasePtr handler = weakHandler.lock();
if (!handler) {
LOG_DEBUG("HandlerBase Weak reference is not valid anymore");
return;
}
State state = handler->state_;
ClientConnectionPtr currentConnection = handler->getCnx().lock();
if (currentConnection && connection.lock().get() != currentConnection.get()) {
LOG_WARN(handler->getName()
<< "Ignoring connection closed since we are already attached to a newer connection");
return;
}
handler->resetCnx();
if (result == ResultRetryable) {
scheduleReconnection(handler);
return;
}
switch (state) {
case Pending:
case Ready:
scheduleReconnection(handler);
break;
case NotStarted:
case Closing:
case Closed:
case Producer_Fenced:
case Failed:
LOG_DEBUG(handler->getName()
<< "Ignoring connection closed event since the handler is not used anymore");
break;
}
}