diff options
author | Gordon Sim <gsim@apache.org> | 2006-11-21 11:49:14 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-11-21 11:49:14 +0000 |
commit | 1e158fcf8f50975967aaa63f86aa9de18526425e (patch) | |
tree | 67ceb06bef84ec5c7f0434ca139e1f4ea2737464 /cpp/src | |
parent | 605362a77aea68fb728bef528130879152dfb730 (diff) | |
download | qpid-python-1e158fcf8f50975967aaa63f86aa9de18526425e.tar.gz |
Added another example for client api.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@477636 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/client/Connector.cpp | 13 | ||||
-rw-r--r-- | cpp/src/qpid/client/Connector.h | 1 |
2 files changed, 10 insertions, 4 deletions
diff --git a/cpp/src/qpid/client/Connector.cpp b/cpp/src/qpid/client/Connector.cpp index e00652361c..86fbdc062c 100644 --- a/cpp/src/qpid/client/Connector.cpp +++ b/cpp/src/qpid/client/Connector.cpp @@ -98,6 +98,12 @@ void Connector::writeToSocket(char* data, size_t available){ } } +void Connector::handleClosed(){ + closed = true; + socket.close(); + if(shutdownHandler) shutdownHandler->shutdown(); +} + void Connector::checkIdle(ssize_t status){ if(timeoutHandler){ int64_t now = Time::now().msecs(); @@ -106,9 +112,7 @@ void Connector::checkIdle(ssize_t status){ timeoutHandler->idleIn(); } }else if(status == Socket::SOCKET_EOF){ - closed = true; - socket.close(); - if(shutdownHandler) shutdownHandler->shutdown(); + handleClosed(); }else{ lastIn = now; } @@ -153,7 +157,7 @@ void Connector::run(){ ssize_t received = socket.recv(inbuf.start(), available); checkIdle(received); - if(received > 0){ + if(!closed && received > 0){ inbuf.move(received); inbuf.flip();//position = 0, limit = total data read @@ -168,5 +172,6 @@ void Connector::run(){ } }catch(QpidError error){ std::cout << "Error [" << error.code << "] " << error.msg << " (" << error.file << ":" << error.line << ")" << std::endl; + handleClosed(); } } diff --git a/cpp/src/qpid/client/Connector.h b/cpp/src/qpid/client/Connector.h index b8a37d3b22..08705a4eb3 100644 --- a/cpp/src/qpid/client/Connector.h +++ b/cpp/src/qpid/client/Connector.h @@ -70,6 +70,7 @@ namespace client { void setSocketTimeout(); void run(); + void handleClosed(); public: Connector(bool debug = false, u_int32_t buffer_size = 1024); |