From f6d81d392edbc30a1d9c1e807221172bd42516d6 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Fri, 5 Dec 2014 12:20:56 +0800 Subject: [PATCH] PipeConnection: Modify "is_connected" semantic "is_connected" should be used to judge whether have built a successful connection with peer. Since "pipe == NULL" is useless for whether connected because pipe can be construct without any potential network problem Signed-off-by: Haomai Wang --- src/msg/simple/Pipe.h | 5 +++++ src/msg/simple/PipeConnection.cc | 7 +++++++ src/msg/simple/PipeConnection.h | 5 +---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/msg/simple/Pipe.h b/src/msg/simple/Pipe.h index 59d7136f7956f..9b464a5065b09 100644 --- a/src/msg/simple/Pipe.h +++ b/src/msg/simple/Pipe.h @@ -140,6 +140,11 @@ class DispatchQueue; return static_cast(RefCountedObject::get()); } + bool is_connected() { + Mutex::Locker l(pipe_lock); + return state == STATE_OPEN; + } + char *recv_buf; int recv_max_prefetch; int recv_ofs; diff --git a/src/msg/simple/PipeConnection.cc b/src/msg/simple/PipeConnection.cc index f4db37496fcec..cd20d9774a982 100644 --- a/src/msg/simple/PipeConnection.cc +++ b/src/msg/simple/PipeConnection.cc @@ -67,6 +67,13 @@ void PipeConnection::reset_pipe(Pipe *p) pipe = p->get(); } +bool PipeConnection::is_connected() { + Mutex::Locker l(lock); + if (pipe) + return pipe->is_connected(); + return false; +} + int PipeConnection::send_message(Message *m) { assert(msgr); diff --git a/src/msg/simple/PipeConnection.h b/src/msg/simple/PipeConnection.h index cbe2677eedfad..00f6d0e16d3f6 100644 --- a/src/msg/simple/PipeConnection.h +++ b/src/msg/simple/PipeConnection.h @@ -41,10 +41,7 @@ public: void reset_pipe(Pipe* p); - bool is_connected() { - Mutex::Locker l(lock); - return pipe != NULL; - } + bool is_connected(); int send_message(Message *m); void send_keepalive(); -- 2.39.5