summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2009-06-08 14:34:45 +0000
committerAndrew Stitcher <astitcher@apache.org>2009-06-08 14:34:45 +0000
commit98530972a92115089c20c6b8acc619cca75c8b4e (patch)
tree69eabe215da47120dcd9bb5482f2063c58101db4
parent5c90bcdf26ed9483bb18336de1f30dee54733157 (diff)
downloadqpid-python-98530972a92115089c20c6b8acc619cca75c8b4e.tar.gz
Plumbed in an a connection abort operation to the OutputHandler
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@782649 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/Connection.cpp13
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/Connection.h5
-rw-r--r--qpid/cpp/src/qpid/broker/SessionState.cpp7
-rw-r--r--qpid/cpp/src/qpid/broker/SessionState.h5
-rw-r--r--qpid/cpp/src/qpid/sys/AggregateOutput.cpp14
-rw-r--r--qpid/cpp/src/qpid/sys/AggregateOutput.h7
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp16
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIOHandler.h8
-rw-r--r--qpid/cpp/src/qpid/sys/ConnectionOutputHandlerPtr.h5
-rw-r--r--qpid/cpp/src/qpid/sys/OutputControl.h7
-rw-r--r--qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp31
-rw-r--r--qpid/cpp/src/qpid/sys/ssl/SslHandler.cpp14
-rw-r--r--qpid/cpp/src/qpid/sys/ssl/SslHandler.h8
13 files changed, 85 insertions, 55 deletions
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Connection.cpp b/qpid/cpp/src/qpid/amqp_0_10/Connection.cpp
index 5b14d60ff5..34134150da 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/Connection.cpp
+++ b/qpid/cpp/src/qpid/amqp_0_10/Connection.cpp
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -72,7 +72,7 @@ size_t Connection::encode(const char* buffer, size_t size) {
{ // Swap frameQueue data into workQueue to avoid holding lock while we encode.
Mutex::ScopedLock l(frameQueueLock);
assert(workQueue.empty());
- workQueue.swap(frameQueue);
+ workQueue.swap(frameQueue);
}
framing::Buffer out(const_cast<char*>(buffer), size);
if (!isClient && !initialized) {
@@ -88,7 +88,7 @@ size_t Connection::encode(const char* buffer, size_t size) {
QPID_LOG(trace, "SENT [" << identifier << "]: " << workQueue.front());
workQueue.pop_front();
encoded += frameSize;
- if (workQueue.empty() && out.available() > 0) connection->doOutput();
+ if (workQueue.empty() && out.available() > 0) connection->doOutput();
}
assert(workQueue.empty() || workQueue.front().encodedSize() <= size);
if (!workQueue.empty() && workQueue.front().encodedSize() > size)
@@ -103,7 +103,8 @@ size_t Connection::encode(const char* buffer, size_t size) {
return out.getPosition();
}
-void Connection::activateOutput() { output.activateOutput(); }
+void Connection::abort() { output.abort(); }
+void Connection::activateOutput() { output.activateOutput(); }
void Connection::giveReadCredit(int32_t credit) { output.giveReadCredit(credit); }
void Connection::close() {
@@ -130,7 +131,7 @@ framing::ProtocolVersion Connection::getVersion() const {
return framing::ProtocolVersion(0,10);
}
-size_t Connection::getBuffered() const {
+size_t Connection::getBuffered() const {
Mutex::ScopedLock l(frameQueueLock);
return buffered;
}
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Connection.h b/qpid/cpp/src/qpid/amqp_0_10/Connection.h
index 3e0a5d1ee8..32aadff105 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/Connection.h
+++ b/qpid/cpp/src/qpid/amqp_0_10/Connection.h
@@ -10,9 +10,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -63,6 +63,7 @@ class Connection : public sys::ConnectionCodec,
size_t encode(const char* buffer, size_t size);
bool isClosed() const;
bool canEncode();
+ void abort();
void activateOutput();
void giveReadCredit(int32_t);
void closed(); // connection closed by peer.
diff --git a/qpid/cpp/src/qpid/broker/SessionState.cpp b/qpid/cpp/src/qpid/broker/SessionState.cpp
index 26a35f4a4f..f5e9139a76 100644
--- a/qpid/cpp/src/qpid/broker/SessionState.cpp
+++ b/qpid/cpp/src/qpid/broker/SessionState.cpp
@@ -134,6 +134,11 @@ void SessionState::attach(SessionHandler& h) {
}
}
+void SessionState::abort() {
+ if (isAttached())
+ getConnection().outputTasks.abort();
+}
+
void SessionState::activateOutput() {
if (isAttached())
getConnection().outputTasks.activateOutput();
@@ -213,7 +218,7 @@ struct ScheduledCreditTask : public TimerTask {
sessionState.getConnection().requestIOProcessing(boost::bind(&ScheduledCreditTask::sendCredit, this));
}
}
-
+
void sendCredit() {
if ( !sessionState.processSendCredit(0) ) {
QPID_LOG(warning, sessionState.getId() << ": Reschedule sending credit");
diff --git a/qpid/cpp/src/qpid/broker/SessionState.h b/qpid/cpp/src/qpid/broker/SessionState.h
index 880dfad99e..ef6c56ddbe 100644
--- a/qpid/cpp/src/qpid/broker/SessionState.h
+++ b/qpid/cpp/src/qpid/broker/SessionState.h
@@ -87,6 +87,7 @@ class SessionState : public qpid::SessionState,
Broker& getBroker();
/** OutputControl **/
+ void abort();
void activateOutput();
void giveReadCredit(int32_t);
@@ -132,9 +133,9 @@ class SessionState : public qpid::SessionState,
* This proxy is for sending such commands. In a clustered broker it will take steps
* to synchronize command order across the cluster. In a stand-alone broker
* it is just a synonym for getProxy()
- */
+ */
framing::AMQP_ClientProxy& getClusterOrderProxy();
-
+
Broker& broker;
SessionHandler* handler;
sys::AbsTime expiry; // Used by SessionManager.
diff --git a/qpid/cpp/src/qpid/sys/AggregateOutput.cpp b/qpid/cpp/src/qpid/sys/AggregateOutput.cpp
index fa6901d3e4..74bf6d0f85 100644
--- a/qpid/cpp/src/qpid/sys/AggregateOutput.cpp
+++ b/qpid/cpp/src/qpid/sys/AggregateOutput.cpp
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -25,13 +25,15 @@
namespace qpid {
namespace sys {
-
+
+void AggregateOutput::abort() { control.abort(); }
+
void AggregateOutput::activateOutput() { control.activateOutput(); }
void AggregateOutput::giveReadCredit(int32_t credit) { control.giveReadCredit(credit); }
bool AggregateOutput::hasOutput() {
- for (TaskList::const_iterator i = tasks.begin(); i != tasks.end(); ++i)
+ for (TaskList::const_iterator i = tasks.begin(); i != tasks.end(); ++i)
if ((*i)->hasOutput()) return true;
return false;
}
@@ -41,7 +43,7 @@ bool AggregateOutput::doOutput()
bool result = false;
if (!tasks.empty()) {
if (next >= tasks.size()) next = next % tasks.size();
-
+
size_t start = next;
//loop until a task generated some output
while (!result) {
@@ -58,7 +60,7 @@ void AggregateOutput::addOutputTask(OutputTask* t)
{
tasks.push_back(t);
}
-
+
void AggregateOutput::removeOutputTask(OutputTask* t)
{
TaskList::iterator i = std::find(tasks.begin(), tasks.end(), t);
diff --git a/qpid/cpp/src/qpid/sys/AggregateOutput.h b/qpid/cpp/src/qpid/sys/AggregateOutput.h
index fcd0d4c2f7..b33113796c 100644
--- a/qpid/cpp/src/qpid/sys/AggregateOutput.h
+++ b/qpid/cpp/src/qpid/sys/AggregateOutput.h
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -43,9 +43,10 @@ namespace sys {
public:
AggregateOutput(OutputControl& c) : next(0), control(c) {};
//this may be called on any thread
+ QPID_COMMON_EXTERN void abort();
QPID_COMMON_EXTERN void activateOutput();
QPID_COMMON_EXTERN void giveReadCredit(int32_t);
-
+
//all the following will be called on the same thread
QPID_COMMON_EXTERN bool doOutput();
QPID_COMMON_EXTERN bool hasOutput();
diff --git a/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp b/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp
index 6b7e7b5145..9da4a68381 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp
+++ b/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -26,6 +26,8 @@
#include "qpid/framing/ProtocolInitiation.h"
#include "qpid/log/Statement.h"
+#include <boost/bind.hpp>
+
namespace qpid {
namespace sys {
@@ -75,6 +77,10 @@ void AsynchIOHandler::write(const framing::ProtocolInitiation& data)
aio->queueWrite(buff);
}
+void AsynchIOHandler::abort() {
+ aio->requestCallback(boost::bind(&AsynchIOHandler::eof, this, _1));
+}
+
void AsynchIOHandler::activateOutput() {
aio->notifyPendingWrite();
}
@@ -120,7 +126,7 @@ bool AsynchIOHandler::readbuff(AsynchIO& , AsynchIO::BufferBase* buff) {
//send valid version header & close connection.
write(framing::ProtocolInitiation(framing::highestProtocolVersion));
readError = true;
- aio->queueWriteClose();
+ aio->queueWriteClose();
}
} catch (const std::exception& e) {
QPID_LOG(error, e.what());
@@ -163,7 +169,7 @@ void AsynchIOHandler::eof(AsynchIO&) {
}
void AsynchIOHandler::closedSocket(AsynchIO&, const Socket& s) {
- // If we closed with data still to send log a warning
+ // If we closed with data still to send log a warning
if (!aio->writeQueueEmpty()) {
QPID_LOG(warning, "CLOSING [" << identifier << "] unsent data (probably due to client disconnect)");
}
@@ -198,7 +204,7 @@ void AsynchIOHandler::idle(AsynchIO&){
aio->queueWrite(buff);
}
if (codec->isClosed())
- aio->queueWriteClose();
+ aio->queueWriteClose();
} catch (const std::exception& e) {
QPID_LOG(error, e.what());
aio->queueWriteClose();
diff --git a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
index 9f1d043b62..059b22a935 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
+++ b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
@@ -9,9 +9,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -60,7 +60,7 @@ class AsynchIOHandler : public OutputControl {
QPID_COMMON_EXTERN void setClient() { isClient = true; }
// Output side
- QPID_COMMON_EXTERN void close();
+ QPID_COMMON_EXTERN void abort();
QPID_COMMON_EXTERN void activateOutput();
QPID_COMMON_EXTERN void giveReadCredit(int32_t credit);
@@ -68,7 +68,7 @@ class AsynchIOHandler : public OutputControl {
QPID_COMMON_EXTERN bool readbuff(AsynchIO& aio, AsynchIOBufferBase* buff);
QPID_COMMON_EXTERN void eof(AsynchIO& aio);
QPID_COMMON_EXTERN void disconnect(AsynchIO& aio);
-
+
// Notifications
QPID_COMMON_EXTERN void nobuffs(AsynchIO& aio);
QPID_COMMON_EXTERN void idle(AsynchIO& aio);
diff --git a/qpid/cpp/src/qpid/sys/ConnectionOutputHandlerPtr.h b/qpid/cpp/src/qpid/sys/ConnectionOutputHandlerPtr.h
index 32809d86a1..909631a8c4 100644
--- a/qpid/cpp/src/qpid/sys/ConnectionOutputHandlerPtr.h
+++ b/qpid/cpp/src/qpid/sys/ConnectionOutputHandlerPtr.h
@@ -10,9 +10,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -43,6 +43,7 @@ class ConnectionOutputHandlerPtr : public ConnectionOutputHandler
void close() { next->close(); }
size_t getBuffered() const { return next->getBuffered(); }
+ void abort() { next->abort(); }
void activateOutput() { next->activateOutput(); }
void giveReadCredit(int32_t credit) { next->giveReadCredit(credit); }
void send(framing::AMQFrame& f) { next->send(f); }
diff --git a/qpid/cpp/src/qpid/sys/OutputControl.h b/qpid/cpp/src/qpid/sys/OutputControl.h
index e9e6c57a9b..d813428b67 100644
--- a/qpid/cpp/src/qpid/sys/OutputControl.h
+++ b/qpid/cpp/src/qpid/sys/OutputControl.h
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -27,10 +27,11 @@
namespace qpid {
namespace sys {
- class OutputControl
+ class OutputControl
{
public:
virtual ~OutputControl() {}
+ virtual void abort() = 0;
virtual void activateOutput() = 0;
virtual void giveReadCredit(int32_t credit) = 0;
};
diff --git a/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp b/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp
index 8afe8ba5ef..f931aeb5ea 100644
--- a/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp
+++ b/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -58,6 +58,7 @@ class RdmaIOHandler : public OutputControl {
// Output side
void close();
+ void abort();
void activateOutput();
void giveReadCredit(int32_t credit);
void initProtocolOut();
@@ -65,11 +66,11 @@ class RdmaIOHandler : public OutputControl {
// Input side
void readbuff(Rdma::AsynchIO& aio, Rdma::Buffer* buff);
void initProtocolIn(Rdma::Buffer* buff);
-
+
// Notifications
void full(Rdma::AsynchIO& aio);
void idle(Rdma::AsynchIO& aio);
- void error(Rdma::AsynchIO& aio);
+ void error(Rdma::AsynchIO& aio);
};
RdmaIOHandler::RdmaIOHandler(Rdma::Connection::intrusive_ptr& c, qpid::sys::ConnectionCodec::Factory* f) :
@@ -89,7 +90,7 @@ RdmaIOHandler::~RdmaIOHandler() {
if (codec)
codec->closed();
delete codec;
-
+
aio->deferDelete();
}
@@ -107,6 +108,10 @@ void RdmaIOHandler::close() {
aio->queueWriteClose();
}
+// TODO: Dummy implementation, need to fill this in for heartbeat timeout to work
+void RdmaIOHandler::abort() {
+}
+
void RdmaIOHandler::activateOutput() {
aio->notifyPendingWrite();
}
@@ -145,7 +150,7 @@ void RdmaIOHandler::full(Rdma::AsynchIO&) {
QPID_LOG(debug, "Rdma: buffer full [" << identifier << "]");
}
-// TODO: Dummy implementation of read throttling
+// TODO: Dummy implementation of read throttling
void RdmaIOHandler::giveReadCredit(int32_t) {
}
@@ -162,7 +167,7 @@ void RdmaIOHandler::readbuff(Rdma::AsynchIO&, Rdma::Buffer* buff) {
if (codec) {
decoded = codec->decode(buff->bytes+buff->dataStart, buff->dataCount);
}else{
- // Need to start protocol processing
+ // Need to start protocol processing
initProtocolIn(buff);
}
}catch(const std::exception& e){
@@ -181,13 +186,13 @@ void RdmaIOHandler::initProtocolIn(Rdma::Buffer* buff) {
QPID_LOG(debug, "Rdma: RECV [" << identifier << "] INIT(" << protocolInit << ")");
codec = factory->create(protocolInit.getVersion(), *this, identifier);
-
+
// If we failed to create the codec then we don't understand the offered protocol version
if (!codec) {
// send valid version header & close connection.
write(framing::ProtocolInitiation(framing::highestProtocolVersion));
readError = true;
- aio->queueWriteClose();
+ aio->queueWriteClose();
}
}
}
@@ -217,7 +222,7 @@ class RdmaIOProtocolFactory : public ProtocolFactory {
static class RdmaIOPlugin : public Plugin {
void earlyInitialize(Target&) {
}
-
+
void initialize(Target& target) {
// Check whether we actually have any rdma devices
if ( Rdma::deviceCount() == 0 ) {
@@ -257,7 +262,7 @@ bool RdmaIOProtocolFactory::request(Rdma::Connection::intrusive_ptr& ci, const R
0, // boost::bind(&RdmaIOHandler::full, async, _1),
boost::bind(&RdmaIOHandler::error, async, _1));
async->init(aio);
-
+
// Record aio so we can get it back from a connection
ci->addContext(async);
return true;
@@ -300,7 +305,7 @@ void RdmaIOProtocolFactory::accept(Poller::shared_ptr poller, ConnectionCodec::F
sin.sin_addr.s_addr = INADDR_ANY;
listener.reset(
- new Rdma::Listener((const sockaddr&)(sin),
+ new Rdma::Listener((const sockaddr&)(sin),
Rdma::ConnectionParams(65536, Rdma::DEFAULT_WR_ENTRIES),
boost::bind(&RdmaIOProtocolFactory::established, this, poller, _1),
boost::bind(&RdmaIOProtocolFactory::connectionError, this, _1, _2),
@@ -323,7 +328,7 @@ void RdmaIOProtocolFactory::connected(Poller::shared_ptr poller, Rdma::Connectio
RdmaIOHandler* async = ci->getContext<RdmaIOHandler>();
async->initProtocolOut();
}
-
+
void RdmaIOProtocolFactory::connect(
Poller::shared_ptr poller,
const std::string& host, int16_t p,
diff --git a/qpid/cpp/src/qpid/sys/ssl/SslHandler.cpp b/qpid/cpp/src/qpid/sys/ssl/SslHandler.cpp
index 3c7e2190e7..282c3ce8c8 100644
--- a/qpid/cpp/src/qpid/sys/ssl/SslHandler.cpp
+++ b/qpid/cpp/src/qpid/sys/ssl/SslHandler.cpp
@@ -7,9 +7,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -26,6 +26,8 @@
#include "qpid/framing/ProtocolInitiation.h"
#include "qpid/log/Statement.h"
+#include <boost/bind.hpp>
+
namespace qpid {
namespace sys {
namespace ssl {
@@ -76,6 +78,10 @@ void SslHandler::write(const framing::ProtocolInitiation& data)
aio->queueWrite(buff);
}
+void SslHandler::abort() {
+ // TODO: can't implement currently as underlying functionality not implemented
+ // aio->requestCallback(boost::bind(&SslHandler::eof, this, _1));
+}
void SslHandler::activateOutput() {
aio->notifyPendingWrite();
}
@@ -111,7 +117,7 @@ void SslHandler::readbuff(SslIO& , SslIO::BufferBase* buff) {
//send valid version header & close connection.
write(framing::ProtocolInitiation(framing::highestProtocolVersion));
readError = true;
- aio->queueWriteClose();
+ aio->queueWriteClose();
}
} catch (const std::exception& e) {
QPID_LOG(error, e.what());
@@ -140,7 +146,7 @@ void SslHandler::eof(SslIO&) {
}
void SslHandler::closedSocket(SslIO&, const SslSocket& s) {
- // If we closed with data still to send log a warning
+ // If we closed with data still to send log a warning
if (!aio->writeQueueEmpty()) {
QPID_LOG(warning, "CLOSING [" << identifier << "] unsent data (probably due to client disconnect)");
}
diff --git a/qpid/cpp/src/qpid/sys/ssl/SslHandler.h b/qpid/cpp/src/qpid/sys/ssl/SslHandler.h
index ae654d7ad2..8f6b8e732a 100644
--- a/qpid/cpp/src/qpid/sys/ssl/SslHandler.h
+++ b/qpid/cpp/src/qpid/sys/ssl/SslHandler.h
@@ -10,9 +10,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -56,7 +56,7 @@ class SslHandler : public OutputControl {
void setClient() { isClient = true; }
// Output side
- void close();
+ void abort();
void activateOutput();
void giveReadCredit(int32_t);
@@ -64,7 +64,7 @@ class SslHandler : public OutputControl {
void readbuff(SslIO& aio, SslIOBufferBase* buff);
void eof(SslIO& aio);
void disconnect(SslIO& aio);
-
+
// Notifications
void nobuffs(SslIO& aio);
void idle(SslIO& aio);