Signed-off-by: Haomai Wang <haomai@xsky.com>
}
lock.Unlock();
}
+
+int AsyncMessenger::reap_dead(int max)
+{
+ int num;
+ Mutex::Locker l(lock);
+ Mutex::Locker l(deleted_lock);
+
+ while (!deleted_conns.empty() && num < max) {
+ set<AsyncConnectionRef>::iterator it = deleted_conns.begin();
+ AsyncConnectionRef p = *it;
+ ldout(cct, 5) << __func__ << " delete " << p << dendl;
+ conns.erase(p);
+ deleted_conns.erase(it);
+ ++num;
+ }
+
+ return num;
+}
Mutex::Locker l(deleted_lock);
deleted_conns.insert(conn);
}
+
+ /**
+ * Reap dead connection from `deleted_conns`
+ *
+ * @return the number of dead connections
+ *
+ * See "deleted_conns"
+ */
+ int reap_dead(int max);
+
/**
* @} // AsyncMessenger Internals
*/