exit_open = std::nullopt;
logger().info("{} write_event: nothing queued at {},"
" set exit_open",
- conn, get_state_name(write_state));
+ conn, write_state);
}
return seastar::make_ready_future<stop_t>(stop_t::yes);
} else {
e.code() != std::errc::connection_reset &&
e.code() != error::negotiation_failure) {
logger().error("{} write_event(): unexpected error at {} -- {}",
- conn, get_state_name(write_state), e);
+ conn, write_state, e);
ceph_abort();
}
socket->shutdown();
if (write_state == write_state_t::open) {
logger().info("{} write_event(): fault at {}, going to delay -- {}",
- conn, get_state_name(write_state), e);
+ conn, write_state, e);
write_state = write_state_t::delay;
} else {
logger().info("{} write_event(): fault at {} -- {}",
- conn, get_state_name(write_state), e);
+ conn, write_state, e);
}
return do_write_dispatch_sweep();
});
drop
};
- static const char* get_state_name(write_state_t state) {
- uint8_t index = static_cast<uint8_t>(state);
- static const char *const state_names[] = {"none",
- "delay",
- "open",
- "drop"};
- assert(index < std::size(state_names));
- return state_names[index];
- }
-
+ friend class fmt::formatter<write_state_t>;
void set_write_state(const write_state_t& state) {
if (write_state == write_state_t::open &&
state != write_state_t::open &&
} // namespace crimson::net
+
+template <>
+struct fmt::formatter<crimson::net::Protocol::write_state_t>
+ : fmt::formatter<std::string_view> {
+ template <typename FormatContext>
+ auto format(crimson::net::Protocol::write_state_t state, FormatContext& ctx) {
+ using enum crimson::net::Protocol::write_state_t;
+ std::string_view name;
+ switch (state) {
+ case none:
+ name = "none";
+ break;
+ case delay:
+ name = "delay";
+ break;
+ case open:
+ name = "open";
+ break;
+ case drop:
+ name = "drop";
+ break;
+ }
+ return formatter<string_view>::format(name, ctx);
+ }
+};