From 206a563e0c2e01e6796197cc28c6ecb97abcc511 Mon Sep 17 00:00:00 2001 From: kunitoki Date: Mon, 8 Apr 2013 15:18:48 +0200 Subject: [PATCH] - better usage of mapnik::singleton instance in occi datasource - occi small cosmetics --- plugins/input/occi/occi_datasource.cpp | 8 ++-- plugins/input/occi/occi_featureset.cpp | 4 +- plugins/input/occi/occi_types.cpp | 2 - plugins/input/occi/occi_types.hpp | 62 +++++++++++--------------- 4 files changed, 32 insertions(+), 44 deletions(-) diff --git a/plugins/input/occi/occi_datasource.cpp b/plugins/input/occi/occi_datasource.cpp index ee7b6c6fe..6111c7049 100644 --- a/plugins/input/occi/occi_datasource.cpp +++ b/plugins/input/occi/occi_datasource.cpp @@ -120,7 +120,7 @@ occi_datasource::occi_datasource(parameters const& params) { try { - pool_ = occi_environment::create_pool( + pool_ = occi_environment::instance().create_pool( *params.get("user"), *params.get("password"), *params.get("host"), @@ -137,7 +137,7 @@ occi_datasource::occi_datasource(parameters const& params) { try { - conn_ = occi_environment::create_connection( + conn_ = occi_environment::instance().create_connection( *params.get("user"), *params.get("password"), *params.get("host")); @@ -324,14 +324,14 @@ occi_datasource::~occi_datasource() { if (pool_ != 0) { - occi_environment::destroy_pool(pool_); + occi_environment::instance().destroy_pool(pool_); } } else { if (conn_ != 0) { - occi_environment::destroy_connection(conn_); + occi_environment::instance().destroy_connection(conn_); } } } diff --git a/plugins/input/occi/occi_featureset.cpp b/plugins/input/occi/occi_featureset.cpp index 1dede2b6d..9a2eb67b1 100644 --- a/plugins/input/occi/occi_featureset.cpp +++ b/plugins/input/occi/occi_featureset.cpp @@ -132,8 +132,6 @@ feature_ptr occi_featureset::next() } } - ++feature_id_; - std::vector listOfColumns = rs_->getColumnListMetaData(); for (unsigned int i = 1; i < listOfColumns.size(); ++i) @@ -233,6 +231,8 @@ feature_ptr occi_featureset::next() } } + ++feature_id_; + return feature; } diff --git a/plugins/input/occi/occi_types.cpp b/plugins/input/occi/occi_types.cpp index 4ea5556e9..0545b80fa 100644 --- a/plugins/input/occi/occi_types.cpp +++ b/plugins/input/occi/occi_types.cpp @@ -22,8 +22,6 @@ #include "occi_types.hpp" -oracle::occi::Environment* occi_environment::env_ = 0; - std::string occi_enums::resolve_gtype(int gtype) { switch (gtype) diff --git a/plugins/input/occi/occi_types.hpp b/plugins/input/occi/occi_types.hpp index 4c2b6ae88..896219a62 100644 --- a/plugins/input/occi/occi_types.hpp +++ b/plugins/input/occi/occi_types.hpp @@ -27,6 +27,11 @@ #include #include +// boost +#ifdef MAPNIK_THREADSAFE +#include +#endif + // occi #include @@ -84,42 +89,27 @@ class occi_environment : public mapnik::singletoncreateConnection(user, password, host); + return env_->createConnection(user, password, host); } - static void destroy_connection(oracle::occi::Connection* conn) + void destroy_connection(oracle::occi::Connection* conn) { - oracle::occi::Environment* env = get_environment(); - - env->terminateConnection(conn); + env_->terminateConnection(conn); } - static oracle::occi::StatelessConnectionPool* create_pool( + oracle::occi::StatelessConnectionPool* create_pool( const std::string& user, const std::string& password, const std::string& host, @@ -127,11 +117,9 @@ public: int initial_size, int incr_size) { - oracle::occi::Environment* env = get_environment(); - MAPNIK_LOG_DEBUG(occi) << "occi_environment: create_pool"; - return env->createStatelessConnectionPool( + return env_->createStatelessConnectionPool( user, password, host, @@ -141,11 +129,9 @@ public: oracle::occi::StatelessConnectionPool::HOMOGENEOUS); } - static void destroy_pool(oracle::occi::StatelessConnectionPool* pool) + void destroy_pool(oracle::occi::StatelessConnectionPool* pool) { - oracle::occi::Environment* env = get_environment(); - - env->terminateStatelessConnectionPool( + env_->terminateStatelessConnectionPool( pool, oracle::occi::StatelessConnectionPool::SPD_FORCE); } @@ -153,21 +139,25 @@ public: private: occi_environment() + : env_(0) { + MAPNIK_LOG_DEBUG(occi) << "occi_environment: constructor"; + + env_ = oracle::occi::Environment::createEnvironment( + (oracle::occi::Environment::Mode)(oracle::occi::Environment::OBJECT + | oracle::occi::Environment::THREADED_MUTEXED)); + RegisterClasses(env_); } ~occi_environment() { - if (env_) - { - MAPNIK_LOG_DEBUG(occi) << "occi_environment: destructor"; + MAPNIK_LOG_DEBUG(occi) << "occi_environment: destructor"; - oracle::occi::Environment::terminateEnvironment(env_); - env_ = 0; - } + oracle::occi::Environment::terminateEnvironment(env_); + env_ = 0; } - static oracle::occi::Environment* env_; + oracle::occi::Environment* env_; }; @@ -252,7 +242,7 @@ private: { if (owns_connection_) { - occi_environment::destroy_connection(conn_); + occi_environment::instance().destroy_connection(conn_); } }