summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Grüneis <gimpf@gimpf.org>2009-11-14 18:41:00 +0000
committerMarkus Grüneis <gimpf@gimpf.org>2009-11-14 18:41:00 +0000
commitae1cde8aec63c55146c1bb1f06e2ac3148130bb7 (patch)
tree8736e4524dab48024f2fe0e3728d8816e2ce3ff6
parentforever you (diff)
simplified singleton handling: still not thread-safe (does not need to, currently, hopefully), but transformed into an equivalent but simpler formws-cleanups
-rw-r--r--src/connectionList.cpp12
-rw-r--r--src/connectionList.h14
-rw-r--r--src/log.cpp12
-rw-r--r--src/log.h13
-rw-r--r--src/options.cpp10
-rw-r--r--src/options.h11
-rw-r--r--src/resolver.cpp12
-rw-r--r--src/resolver.h10
-rw-r--r--src/routingTable.cpp11
-rw-r--r--src/routingTable.h9
-rw-r--r--src/signalController.cpp10
-rw-r--r--src/signalController.h10
-rw-r--r--src/syncQueue.cpp12
-rw-r--r--src/syncQueue.h8
14 files changed, 22 insertions, 132 deletions
diff --git a/src/connectionList.cpp b/src/connectionList.cpp
index a9f4f2f..3a6ba8c 100644
--- a/src/connectionList.cpp
+++ b/src/connectionList.cpp
@@ -39,22 +39,14 @@
#include "keyDerivationFactory.h"
#include "options.h"
#include "packetSource.h"
-
#include "connectionList.h"
-ConnectionList* ConnectionList::inst = NULL;
-Mutex ConnectionList::instMutex;
ConnectionList& gConnectionList = ConnectionList::instance();
-
ConnectionList& ConnectionList::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new ConnectionList();
-
- return *inst;
+ static ConnectionList instance;
+ return instance;
}
ConnectionList::ConnectionList()
diff --git a/src/connectionList.h b/src/connectionList.h
index e1c5ce3..069a4c4 100644
--- a/src/connectionList.h
+++ b/src/connectionList.h
@@ -50,7 +50,9 @@ class ConnectionList {
public:
ConnectionList();
~ConnectionList();
+
static ConnectionList& instance();
+
void addConnection(ConnectionParam &conn, u_int16_t mux);
const ConnectionMap::iterator getConnection(u_int16_t mux);
const ConnectionMap::iterator getEnd();
@@ -63,16 +65,8 @@ public:
Mutex& getMutex();
private:
- static Mutex instMutex;
- static ConnectionList* inst;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(ConnectionList::inst != 0)
- delete ConnectionList::inst;
- }
- };
- ConnectionList(const ConnectionList &s);
- void operator=(const ConnectionList &s);
+ ConnectionList(const ConnectionList &s); // = delete
+ void operator=(const ConnectionList &s); // = delete
ConnectionMap connections_;
Mutex mutex_;
};
diff --git a/src/log.cpp b/src/log.cpp
index 37fca28..41fd925 100644
--- a/src/log.cpp
+++ b/src/log.cpp
@@ -40,8 +40,6 @@
#include "threadUtils.hpp"
-Log* Log::inst = NULL;
-Mutex Log::instMutex;
Log& cLog = Log::instance();
LogStringBuilder::LogStringBuilder(LogStringBuilder const& src) : log(src.log), prio(src.prio)
@@ -51,7 +49,7 @@ LogStringBuilder::LogStringBuilder(LogStringBuilder const& src) : log(src.log),
LogStringBuilder::LogStringBuilder(Log& l, int p) : log(l), prio(p)
{
- // do something on the start of the line.
+ // do something on the start of the line.
}
LogStringBuilder::~LogStringBuilder()
@@ -61,12 +59,8 @@ LogStringBuilder::~LogStringBuilder()
Log& Log::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new Log();
-
- return *inst;
+ static Log instance;
+ return instance;
}
void Log::addTarget(std::string conf)
diff --git a/src/log.h b/src/log.h
index f583aea..ee0c826 100644
--- a/src/log.h
+++ b/src/log.h
@@ -80,25 +80,14 @@ public:
private:
Log() {};
~Log() {};
+
Log(const Log &l); // = delete
void operator=(const Log &l); // = delete
- static Log* inst;
- static Mutex instMutex;
- class instanceCleaner {
- public: ~instanceCleaner()
- {
- if(Log::inst != 0)
- delete Log::inst;
- }
- };
- friend class instanceCleaner;
-
void log(std::string msg, int prio);
Mutex mutex;
friend class LogStringBuilder;
-
LogTargetList targets;
};
diff --git a/src/options.cpp b/src/options.cpp
index 79e47b7..fd791f7 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -143,18 +143,12 @@ std::istream& operator>>(std::istream& stream, OptionNetwork& network)
return stream;
}
-Options* Options::inst = NULL;
-Mutex Options::instMutex;
Options& gOpt = Options::instance();
Options& Options::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new Options();
-
- return *inst;
+ static Options instance;
+ return instance;
}
Options::Options() : key_(u_int32_t(0)), salt_(u_int32_t(0))
diff --git a/src/options.h b/src/options.h
index b079d32..ae371c6 100644
--- a/src/options.h
+++ b/src/options.h
@@ -174,19 +174,8 @@ private:
Options(const Options &l);
void operator=(const Options &l);
- static Options* inst;
- static ::Mutex instMutex;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(Options::inst != 0)
- delete Options::inst;
- }
- };
- friend class instanceCleaner;
-
::SharedMutex mutex;
-
bool cluster_opts;
bool connection_opts;
diff --git a/src/resolver.cpp b/src/resolver.cpp
index e6f331c..59299d0 100644
--- a/src/resolver.cpp
+++ b/src/resolver.cpp
@@ -86,18 +86,12 @@ void ResolveHandler<Proto>::operator()(const boost::system::error_code& e, const
}
}
-Resolver* Resolver::inst = NULL;
-Mutex Resolver::instMutex;
Resolver& gResolver = Resolver::instance();
Resolver& Resolver::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new Resolver();
-
- return *inst;
+ static Resolver instance;
+ return instance;
}
Resolver::Resolver() : udp_resolver_(io_service_), tcp_resolver_(io_service_), thread_(NULL)
@@ -113,7 +107,7 @@ Resolver::~Resolver()
void Resolver::init()
{
if(!thread_)
- thread_ = new boost::thread(boost::bind(&Resolver::run, this));
+ thread_ = new boost::thread(boost::bind(&Resolver::run, this));
}
void Resolver::run()
diff --git a/src/resolver.h b/src/resolver.h
index e959533..0369050 100644
--- a/src/resolver.h
+++ b/src/resolver.h
@@ -83,16 +83,6 @@ private:
Resolver(const Resolver &r);
void operator=(const Resolver &r);
- static Resolver* inst;
- static ::Mutex instMutex;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(Resolver::inst != 0)
- delete Resolver::inst;
- }
- };
- friend class instanceCleaner;
-
boost::asio::io_service io_service_;
boost::asio::ip::udp::resolver udp_resolver_;
boost::asio::ip::tcp::resolver tcp_resolver_;
diff --git a/src/routingTable.cpp b/src/routingTable.cpp
index fcc9a1b..6d24a35 100644
--- a/src/routingTable.cpp
+++ b/src/routingTable.cpp
@@ -43,19 +43,12 @@
#include "routingTable.h"
#include "routingTree.hpp"
-RoutingTable* RoutingTable::inst = NULL;
-Mutex RoutingTable::instMutex;
RoutingTable& gRoutingTable = RoutingTable::instance();
-
RoutingTable& RoutingTable::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new RoutingTable();
-
- return *inst;
+ static RoutingTable instance;
+ return instance;
}
RoutingTable::RoutingTable()
diff --git a/src/routingTable.h b/src/routingTable.h
index 4e86afa..342d6c2 100644
--- a/src/routingTable.h
+++ b/src/routingTable.h
@@ -74,15 +74,6 @@ public:
private:
RoutingTable(const RoutingTable &s); // = delete;
void operator=(const RoutingTable &s); // = delete;
-
- static Mutex instMutex;
- static RoutingTable* inst;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(RoutingTable::inst != 0)
- delete RoutingTable::inst;
- }
- };
boost::array<RoutingMap,3> routes_; // TODO array of _3_ routing maps?
boost::array<RoutingTreeNode,3> root_;
diff --git a/src/signalController.cpp b/src/signalController.cpp
index 0e3b16f..f2bc65b 100644
--- a/src/signalController.cpp
+++ b/src/signalController.cpp
@@ -49,18 +49,12 @@
#include <windows.h>
#endif
-SignalController* SignalController::inst = NULL;
-Mutex SignalController::instMutex;
SignalController& gSignalController = SignalController::instance();
SignalController& SignalController::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new SignalController();
-
- return *inst;
+ static SignalController instance;
+ return instance;
}
int SigErrorHandler::handle(const std::string& msg)
diff --git a/src/signalController.h b/src/signalController.h
index da316c5..27f56f8 100644
--- a/src/signalController.h
+++ b/src/signalController.h
@@ -165,16 +165,6 @@ private:
SignalController(const SignalController &s); // = delete
void operator=(const SignalController &s); // = delete
- static SignalController* inst;
- static Mutex instMutex;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(SignalController::inst != NULL)
- delete SignalController::inst;
- }
- };
- friend class instanceCleaner;
-
typedef std::pair<int, std::string> SigPair;
std::queue<SigPair> sigQueue;
Mutex sigQueueMutex;
diff --git a/src/syncQueue.cpp b/src/syncQueue.cpp
index 28d206a..1899375 100644
--- a/src/syncQueue.cpp
+++ b/src/syncQueue.cpp
@@ -45,18 +45,12 @@
#include "datatypes.h"
#include "syncQueue.h"
-SyncQueue* SyncQueue::inst = NULL;
-Mutex SyncQueue::instMutex;
SyncQueue& gSyncQueue = SyncQueue::instance();
SyncQueue& SyncQueue::instance()
{
- Lock lock(instMutex);
- static instanceCleaner c;
- if(!inst)
- inst = new SyncQueue();
-
- return *inst;
+ static SyncQueue instance;
+ return instance;
}
void SyncQueue::push(const SyncCommand& scom )
@@ -73,7 +67,7 @@ void SyncQueue::push(const SyncCommand& scom )
void SyncQueue::push(const std::string& str )
{
Lock lock(mutex_);
- // std::cout << "Debug" << std:endl;
+ // std::cout << "Debug" << std:endl;
if (syncServer_)
syncServer_->send(str);
}
diff --git a/src/syncQueue.h b/src/syncQueue.h
index 02d0570..6132260 100644
--- a/src/syncQueue.h
+++ b/src/syncQueue.h
@@ -55,14 +55,6 @@ public:
bool empty();
private:
- static Mutex instMutex;
- static SyncQueue* inst;
- class instanceCleaner {
- public: ~instanceCleaner() {
- if(SyncQueue::inst != 0)
- delete SyncQueue::inst;
- }
- };
SyncQueue(const SyncQueue &s); // = delete;
void operator=(const SyncQueue &s); // = delete;
Mutex mutex_;