diff options
Diffstat (limited to 'Swiften/Network/TLSConnection.h')
-rw-r--r-- | Swiften/Network/TLSConnection.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Swiften/Network/TLSConnection.h b/Swiften/Network/TLSConnection.h new file mode 100644 index 0000000..a798393 --- /dev/null +++ b/Swiften/Network/TLSConnection.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <boost/shared_ptr.hpp> +#include <boost/enable_shared_from_this.hpp> +#include <Swiften/Base/boost_bsignals.h> + +#include <Swiften/Base/SafeByteArray.h> +#include <Swiften/Network/Connection.h> + +namespace Swift { + class HostAddressPort; + class TLSContextFactory; + class TLSContext; + + class TLSConnection : public Connection { + public: + + TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory); + virtual ~TLSConnection(); + + virtual void listen() {assert(false);}; + virtual void connect(const HostAddressPort& address); + virtual void disconnect(); + virtual void write(const SafeByteArray& data); + + virtual HostAddressPort getLocalAddress() const; + + private: + void handleRawConnectFinished(bool error); + void handleRawDisconnected(const boost::optional<Error>& error); + void handleRawDataRead(boost::shared_ptr<SafeByteArray> data); + void handleRawDataWritten(); + void handleTLSConnectFinished(bool error); + void handleTLSDataForNetwork(const SafeByteArray& data); + void handleTLSDataForApplication(const SafeByteArray& data); + private: + TLSContext* context; + Connection::ref connection; + }; +} |