From d2625df30861a4caa984031a6990d19dfebc3367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Tue, 14 Jul 2009 21:33:05 +0200 Subject: Make all Connection instances shared_ptrs. diff --git a/Swiften/Client/Session.cpp b/Swiften/Client/Session.cpp index 1ae97d6..087880f 100644 --- a/Swiften/Client/Session.cpp +++ b/Swiften/Client/Session.cpp @@ -31,7 +31,6 @@ Session::Session(const JID& jid, ConnectionFactory* connectionFactory, TLSLayerF payloadSerializers_(payloadSerializers), state_(Initial), error_(NoError), - connection_(0), xmppLayer_(0), tlsLayer_(0), connectionLayer_(0), @@ -46,7 +45,6 @@ Session::~Session() { delete connectionLayer_; delete tlsLayer_; delete xmppLayer_; - delete connection_; } void Session::start() { diff --git a/Swiften/Client/Session.h b/Swiften/Client/Session.h index 516cb5a..72b57bd 100644 --- a/Swiften/Client/Session.h +++ b/Swiften/Client/Session.h @@ -112,7 +112,7 @@ namespace Swift { PayloadSerializerCollection* payloadSerializers_; State state_; SessionError error_; - Connection* connection_; + boost::shared_ptr connection_; XMPPLayer* xmppLayer_; TLSLayer* tlsLayer_; ConnectionLayer* connectionLayer_; diff --git a/Swiften/Client/UnitTest/SessionTest.cpp b/Swiften/Client/UnitTest/SessionTest.cpp index da05a06..f7f1db0 100644 --- a/Swiften/Client/UnitTest/SessionTest.cpp +++ b/Swiften/Client/UnitTest/SessionTest.cpp @@ -428,7 +428,7 @@ class SessionTest : public CppUnit::TestFixture { private: struct MockConnection; - MockConnection* getMockServer() const { + boost::shared_ptr getMockServer() const { CPPUNIT_ASSERT_EQUAL(1, static_cast(connectionFactory_->connections_.size())); return connectionFactory_->connections_[0]; } @@ -689,15 +689,15 @@ class SessionTest : public CppUnit::TestFixture { struct MockConnectionFactory : public ConnectionFactory { MockConnectionFactory() : fail_(false) {} - MockConnection* createConnection() { - MockConnection* result = new MockConnection(fail_); + boost::shared_ptr createConnection() { + boost::shared_ptr result(new MockConnection(fail_)); connections_.push_back(result); return result; } void setCreateFailingConnections() { fail_ = true; } - std::vector connections_; + std::vector > connections_; bool fail_; }; diff --git a/Swiften/Network/BoostConnectionFactory.cpp b/Swiften/Network/BoostConnectionFactory.cpp index a1bef15..3f62730 100644 --- a/Swiften/Network/BoostConnectionFactory.cpp +++ b/Swiften/Network/BoostConnectionFactory.cpp @@ -1,12 +1,13 @@ #include "Swiften/Network/BoostConnectionFactory.h" +#include "Swiften/Network/BoostConnection.h" namespace Swift { BoostConnectionFactory::BoostConnectionFactory(boost::asio::io_service* ioService) : ioService(ioService) { } -BoostConnection* BoostConnectionFactory::createConnection() { - return new BoostConnection(ioService); +boost::shared_ptr BoostConnectionFactory::createConnection() { + return boost::shared_ptr(new BoostConnection(ioService)); } } diff --git a/Swiften/Network/BoostConnectionFactory.h b/Swiften/Network/BoostConnectionFactory.h index d15770d..5695c6c 100644 --- a/Swiften/Network/BoostConnectionFactory.h +++ b/Swiften/Network/BoostConnectionFactory.h @@ -1,5 +1,4 @@ -#ifndef SWIFTEN_BoostConnectionFactory_H -#define SWIFTEN_BoostConnectionFactory_H +#pragma once #include @@ -13,11 +12,9 @@ namespace Swift { public: BoostConnectionFactory(boost::asio::io_service*); - virtual BoostConnection* createConnection(); + virtual boost::shared_ptr createConnection(); private: boost::asio::io_service* ioService; }; } - -#endif diff --git a/Swiften/Network/ConnectionFactory.h b/Swiften/Network/ConnectionFactory.h index ef4eec9..e78f6ab 100644 --- a/Swiften/Network/ConnectionFactory.h +++ b/Swiften/Network/ConnectionFactory.h @@ -1,5 +1,6 @@ -#ifndef SWIFTEN_ConnectionFactory_H -#define SWIFTEN_ConnectionFactory_H +#pragma once + +#include namespace Swift { class Connection; @@ -8,8 +9,6 @@ namespace Swift { public: virtual ~ConnectionFactory(); - virtual Connection* createConnection() = 0; + virtual boost::shared_ptr createConnection() = 0; }; } - -#endif diff --git a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp b/Swiften/QA/NetworkTest/BoostConnectionTest.cpp index 6090a97..d29739e 100644 --- a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp +++ b/Swiften/QA/NetworkTest/BoostConnectionTest.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "Swiften/Base/String.h" #include "Swiften/Base/sleep.h" @@ -31,14 +32,14 @@ class BoostConnectionTest : public CppUnit::TestFixture { void testDestructor() { { std::string domain("el-tramo.be"); - std::auto_ptr testling(new BoostConnection(&boostIOServiceThread_->getIOService())); + boost::shared_ptr testling(new BoostConnection(&boostIOServiceThread_->getIOService())); testling->connect(domain); } } void testDestructor_PendingEvents() { { - std::auto_ptr testling(new BoostConnection(&boostIOServiceThread_->getIOService())); + boost::shared_ptr testling(new BoostConnection(&boostIOServiceThread_->getIOService())); testling->connect("el-tramo.be"); while (!eventLoop_->hasEvents()) { Swift::sleep(10); diff --git a/Swiften/Server/ServerFromClientSession.cpp b/Swiften/Server/ServerFromClientSession.cpp index 612e667..6d4aba1 100644 --- a/Swiften/Server/ServerFromClientSession.cpp +++ b/Swiften/Server/ServerFromClientSession.cpp @@ -42,7 +42,7 @@ ServerFromClientSession::ServerFromClientSession( boost::bind(boost::ref(onDataRead), _1)); xmppLayer_->onWriteData.connect( boost::bind(boost::ref(onDataWritten), _1)); - connectionLayer_ = new ConnectionLayer(connection_.get()); + connectionLayer_ = new ConnectionLayer(connection_); streamStack_ = new StreamStack(xmppLayer_, connectionLayer_); } diff --git a/Swiften/StreamStack/ConnectionLayer.h b/Swiften/StreamStack/ConnectionLayer.h index 99873a0..7688f78 100644 --- a/Swiften/StreamStack/ConnectionLayer.h +++ b/Swiften/StreamStack/ConnectionLayer.h @@ -1,7 +1,7 @@ -#ifndef SWIFTEN_CONNECTIONLAYER_H -#define SWIFTEN_CONNECTIONLAYER_H +#pragma once #include +#include #include "Swiften/StreamStack/LowLayer.h" #include "Swiften/Network/Connection.h" @@ -9,17 +9,15 @@ namespace Swift { class ConnectionLayer : public LowLayer { public: - ConnectionLayer(Connection* connection) : connection_(connection) { - connection_->onDataRead.connect(onDataRead); + ConnectionLayer(boost::shared_ptr connection) : connection(connection) { + connection->onDataRead.connect(onDataRead); } void writeData(const ByteArray& data) { - connection_->write(data); + connection->write(data); } private: - Connection* connection_; + boost::shared_ptr connection; }; } - -#endif -- cgit v0.10.2-6-g49f6