summaryrefslogtreecommitdiff
path: root/qpid/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
commit54d1134a90ad5d2497cde8cc15f0717e9b5e0ee2 (patch)
tree087e17706f341688b9cb36147b62d5e071a5d124 /qpid/cpp/src
parent1acc875b42d5bdc4507c36a543392c3e28c07feb (diff)
downloadqpid-python-54d1134a90ad5d2497cde8cc15f0717e9b5e0ee2.tar.gz
Added another example for client api.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@477636 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/client/Connector.cpp13
-rw-r--r--qpid/cpp/src/qpid/client/Connector.h1
2 files changed, 10 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/client/Connector.cpp b/qpid/cpp/src/qpid/client/Connector.cpp
index e00652361c..86fbdc062c 100644
--- a/qpid/cpp/src/qpid/client/Connector.cpp
+++ b/qpid/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/qpid/cpp/src/qpid/client/Connector.h b/qpid/cpp/src/qpid/client/Connector.h
index b8a37d3b22..08705a4eb3 100644
--- a/qpid/cpp/src/qpid/client/Connector.h
+++ b/qpid/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);