From 9fbe5bc75496ab58d075b724078979e30063b623 Mon Sep 17 00:00:00 2001 From: liupengs Date: Sun, 1 Mar 2020 13:04:37 +0800 Subject: [PATCH] msg/async/rdma: move C_handle_connection to RDMAConnectionSocketImpl.cc Signed-off-by: Peng Liu --- src/msg/async/rdma/RDMAConnectedSocketImpl.cc | 27 ++++++++++++++----- src/msg/async/rdma/RDMAStack.h | 17 +----------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/msg/async/rdma/RDMAConnectedSocketImpl.cc b/src/msg/async/rdma/RDMAConnectedSocketImpl.cc index d5a3f72c77a26..97c5e2b143af0 100644 --- a/src/msg/async/rdma/RDMAConnectedSocketImpl.cc +++ b/src/msg/async/rdma/RDMAConnectedSocketImpl.cc @@ -29,6 +29,19 @@ class C_handle_connection_established : public EventCallback { } }; +class C_handle_connection_read : public EventCallback { + RDMAConnectedSocketImpl *csi; + bool active = true; + public: + explicit C_handle_connection_read(RDMAConnectedSocketImpl *w): csi(w) {} + void do_request(uint64_t fd) final { + if (active) + csi->handle_connection(); + } + void close() { + active = false; + } +}; #define dout_subsys ceph_subsys_ms #undef dout_prefix @@ -39,7 +52,7 @@ RDMAConnectedSocketImpl::RDMAConnectedSocketImpl(CephContext *cct, shared_ptrcenter.create_file_event(tcp_fd, EVENT_READABLE, con_handler); + worker->center.create_file_event(tcp_fd, EVENT_READABLE, read_handler); ldout(cct, 20) << __func__ << " finish " << dendl; return 0; } @@ -563,13 +576,13 @@ void RDMAConnectedSocketImpl::fin() { } void RDMAConnectedSocketImpl::cleanup() { - if (con_handler && tcp_fd >= 0) { - (static_cast(con_handler))->close(); + if (read_handler && tcp_fd >= 0) { + (static_cast(read_handler))->close(); worker->center.submit_to(worker->center.get_id(), [this]() { worker->center.delete_file_event(tcp_fd, EVENT_READABLE | EVENT_WRITABLE); }, false); - delete con_handler; - con_handler = nullptr; + delete read_handler; + read_handler = nullptr; } if (established_handler) { (static_cast(established_handler))->close(); @@ -614,7 +627,7 @@ void RDMAConnectedSocketImpl::set_accept_fd(int sd) tcp_fd = sd; is_server = true; worker->center.submit_to(worker->center.get_id(), [this]() { - worker->center.create_file_event(tcp_fd, EVENT_READABLE, con_handler); + worker->center.create_file_event(tcp_fd, EVENT_READABLE, read_handler); }, true); } diff --git a/src/msg/async/rdma/RDMAStack.h b/src/msg/async/rdma/RDMAStack.h index cd7a2904baeec..b7517600bf32d 100644 --- a/src/msg/async/rdma/RDMAStack.h +++ b/src/msg/async/rdma/RDMAStack.h @@ -188,7 +188,7 @@ class RDMAConnectedSocketImpl : public ConnectedSocketImpl { ceph::mutex lock = ceph::make_mutex("RDMAConnectedSocketImpl::lock"); std::vector wc; bool is_server; - EventCallbackRef con_handler; + EventCallbackRef read_handler; EventCallbackRef established_handler; int tcp_fd = -1; bool active;// qp is active ? @@ -234,21 +234,6 @@ class RDMAConnectedSocketImpl : public ConnectedSocketImpl { void set_pending(bool val) {pending = val;} void post_chunks_to_rq(int num); void update_post_backlog(); - - class C_handle_connection : public EventCallback { - RDMAConnectedSocketImpl *csi; - bool active; - public: - explicit C_handle_connection(RDMAConnectedSocketImpl *w): csi(w), active(true) {} - void do_request(uint64_t fd) { - if (active) - csi->handle_connection(); - } - void close() { - active = false; - } - }; - }; enum RDMA_CM_STATUS { -- 2.39.5