trigger_state(state_t::ESTABLISHING, write_state_t::delay, false);
if (existing_conn) {
existing_conn->protocol->close(dispatch_reset, std::move(accept_me));
+ if (unlikely(state != state_t::ESTABLISHING)) {
+ logger().warn("{} triggered {} during execute_establishing(), "
+ "the accept event will not be delivered!",
+ conn, get_state_name(state));
+ abort_protocol();
+ }
} else {
accept_me();
}
racing_detected = true;
logger().warn("Heartbeat::Connection::replaced(): {} racing", *this);
assert(conn != replaced_conn);
- assert(!conn->is_connected());
+ assert(conn->is_connected());
}
void Heartbeat::Connection::reset()
is_winner_side{is_winner_side} {
connect();
}
+ Connection(const Connection&) = delete;
+ Connection(Connection&&) = delete;
+ Connection& operator=(const Connection&) = delete;
+ Connection& operator=(Connection&&) = delete;
+
~Connection();
bool matches(crimson::net::Connection* _conn) const;
crimson::net::ConnectionRef conn;
bool is_connected = false;
- friend std::ostream& operator<<(std::ostream& os, const Connection c) {
+ friend std::ostream& operator<<(std::ostream& os, const Connection& c) {
if (c.type == type_t::front) {
return os << "con_front(osd." << c.peer << ")";
} else {
~Peer();
Peer(Peer&&) = delete;
Peer(const Peer&) = delete;
+ Peer& operator=(Peer&&) = delete;
Peer& operator=(const Peer&) = delete;
void set_epoch(epoch_t epoch) { session.set_epoch(epoch); }