Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
void Protocol::write_event()
{
+ notify_write();
if (write_dispatching) {
// already dispatching
return;
std::optional<utime_t> keepalive_ack,
bool require_ack) = 0;
+ virtual void notify_write() {};
+
public:
const proto_t proto_type;
void ProtocolV2::execute_standby()
{
- // TODO not implemented
- // trigger_state(state_t::STANDBY, write_state_t::delay, false);
- ceph_assert(false);
+ trigger_state(state_t::STANDBY, write_state_t::delay, true);
+ if (socket) {
+ socket->shutdown();
+ }
+}
+
+void ProtocolV2::notify_write()
+{
+ if (unlikely(state == state_t::STANDBY && !conn.policy.server)) {
+ execute_connecting();
+ }
}
// WAIT state
std::optional<utime_t> keepalive_ack,
bool require_ack) override;
+ void notify_write() override;
+
private:
SocketMessenger &messenger;