summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-11-21 11:49:14 +0000
committerGordon Sim <gsim@apache.org>2006-11-21 11:49:14 +0000
commit1e158fcf8f50975967aaa63f86aa9de18526425e (patch)
tree67ceb06bef84ec5c7f0434ca139e1f4ea2737464 /cpp/src
parent605362a77aea68fb728bef528130879152dfb730 (diff)
downloadqpid-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.cpp13
-rw-r--r--cpp/src/qpid/client/Connector.h1
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);