summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/TCPConnector.cpp
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2010-01-23 00:16:34 +0000
committerStephen D. Huston <shuston@apache.org>2010-01-23 00:16:34 +0000
commit772484f911db95bbc0c1ac599ed72b2ee143bec0 (patch)
treee5865eb45a96f31ae84027f44caed4baccda9f21 /cpp/src/qpid/client/TCPConnector.cpp
parent1b489dec1ea09cde9365602befb49eb958a62cdd (diff)
downloadqpid-python-772484f911db95bbc0c1ac599ed72b2ee143bec0.tar.gz
Add SSL support for Windows client and broker per QPID-1403. Adds new AsynchIO::BufferBase::squish() method that does what used to be done by in-place memmove() calls so it can be reused easily.
SSL support for Windows is in: - Client: qpid/client/windows/SslConnector.cpp qpid/client/TCPConnector.{h cpp} rearranged a bit to make pieces available to SslConnector - Broker: qpid/broker/windows/SslProtocolFactory.cpp - Common: qpid/sys/windows/SslAsynchIO contains all the Schannel stuff to negotiate a session, encrypt, and decrypt data. The SslAsynchIO acts as a shim between the layer above and the "regular" AsynchIO that actually handles read/write and completions. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@902318 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/TCPConnector.cpp')
-rw-r--r--cpp/src/qpid/client/TCPConnector.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/TCPConnector.cpp b/cpp/src/qpid/client/TCPConnector.cpp
index 00584d168e..94c4a4cae0 100644
--- a/cpp/src/qpid/client/TCPConnector.cpp
+++ b/cpp/src/qpid/client/TCPConnector.cpp
@@ -108,15 +108,23 @@ void TCPConnector::connected(const Socket&) {
0, // closed
0, // nobuffs
boost::bind(&TCPConnector::writebuff, this, _1));
+ start(aio);
+ initAmqp();
+ aio->start(poller);
+}
+
+void TCPConnector::start(sys::AsynchIO* aio_) {
+ aio = aio_;
for (int i = 0; i < 32; i++) {
aio->queueReadBuffer(new Buff(maxFrameSize));
}
identifier = str(format("[%1% %2%]") % socket.getLocalPort() % socket.getPeerAddress());
+}
+
+void TCPConnector::initAmqp() {
ProtocolInitiation init(version);
writeDataBlock(init);
-
- aio->start(poller);
}
void TCPConnector::connectFailed(const std::string& msg) {
@@ -286,7 +294,7 @@ size_t TCPConnector::decode(const char* buffer, size_t size)
}
void TCPConnector::writeDataBlock(const AMQDataBlock& data) {
- AsynchIO::BufferBase* buff = new Buff(maxFrameSize);
+ AsynchIO::BufferBase* buff = aio->getQueuedBuffer();
framing::Buffer out(buff->bytes, buff->byteCount);
data.encode(out);
buff->dataCount = data.encodedSize();