in squangle/mysql_client/Operation.cpp [227:254]
void Operation::completeOperationInner(OperationResult result) {
state_ = OperationState::Completed;
result_ = result;
end_time_ = chrono::steady_clock::now();
if ((result == OperationResult::Cancelled ||
result == OperationResult::TimedOut) &&
conn()->hasInitialized()) {
// Cancelled/timed out ops leave our connection in an undefined
// state. Close it to prevent trouble.
conn()->close();
}
conn()->socketHandler()->unregisterHandler();
conn()->socketHandler()->cancelTimeout();
if (callbacks_.post_operation_callback_) {
callbacks_.post_operation_callback_(*this);
}
specializedCompleteOperation();
// call observer callback
if (observer_callback_) {
observer_callback_(*this);
}
client()->deferRemoveOperation(this);
}