summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2015-10-28 16:07:56 -0230
committerDwayne Boone <dwayne@zeroc.com>2015-10-28 16:07:56 -0230
commitbe5e69faebc1e7cb55938550440c8b8bc19c1d31 (patch)
treed5cb233ca00e0ca1aa07993fea95486e266754f5 /cpp/src
parentFixed merge issue from previous commit (diff)
downloadice-be5e69faebc1e7cb55938550440c8b8bc19c1d31.tar.bz2
ice-be5e69faebc1e7cb55938550440c8b8bc19c1d31.tar.xz
ice-be5e69faebc1e7cb55938550440c8b8bc19c1d31.zip
Convert IceGrid/IceStorm to use LMDB database rather than Freeze/BdB
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceDB/.depend.mak75
-rw-r--r--cpp/src/IceDB/IceDB.cpp460
-rw-r--r--cpp/src/IceDB/IceDB.h539
-rw-r--r--cpp/src/IceDB/IceDB.rc38
-rw-r--r--cpp/src/IceDB/Makefile44
-rw-r--r--cpp/src/IceDB/Makefile.mak58
-rwxr-xr-xcpp/src/IceGrid/.depend.mak1181
-rw-r--r--cpp/src/IceGrid/.gitignore10
-rw-r--r--cpp/src/IceGrid/DBTypes.ice (renamed from cpp/src/IceStorm/V31Format.ice)19
-rw-r--r--cpp/src/IceGrid/Database.cpp1142
-rw-r--r--cpp/src/IceGrid/Database.h90
-rw-r--r--cpp/src/IceGrid/IceGridDB.cpp530
-rw-r--r--cpp/src/IceGrid/IceGridDB.rc (renamed from cpp/src/IceStorm/IceStormMigrate.rc)6
-rw-r--r--cpp/src/IceGrid/IceGridNode.cpp51
-rw-r--r--cpp/src/IceGrid/Makefile65
-rw-r--r--cpp/src/IceGrid/Makefile.mak70
-rw-r--r--cpp/src/IceGrid/NodeCache.cpp4
-rw-r--r--cpp/src/IceGrid/NodeI.cpp100
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp9
-rw-r--r--cpp/src/IceGrid/ReplicaSessionI.cpp20
-rw-r--r--cpp/src/IceGrid/ServerI.h1
-rw-r--r--cpp/src/IceGrid/WellKnownObjectsManager.cpp1
-rwxr-xr-xcpp/src/IceStorm/.depend.mak1068
-rw-r--r--cpp/src/IceStorm/.gitignore14
-rw-r--r--cpp/src/IceStorm/DBTypes.ice (renamed from cpp/src/IceStorm/V32Format.ice)19
-rw-r--r--cpp/src/IceStorm/IceStormDB.cpp300
-rw-r--r--cpp/src/IceStorm/IceStormDB.rc34
-rw-r--r--cpp/src/IceStorm/Instance.cpp48
-rw-r--r--cpp/src/IceStorm/Instance.h31
-rw-r--r--cpp/src/IceStorm/Makefile72
-rw-r--r--cpp/src/IceStorm/Makefile.mak81
-rw-r--r--cpp/src/IceStorm/Migrate.cpp226
-rw-r--r--cpp/src/IceStorm/Service.cpp28
-rw-r--r--cpp/src/IceStorm/TopicI.cpp291
-rw-r--r--cpp/src/IceStorm/TopicI.h15
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp339
-rw-r--r--cpp/src/IceStorm/TopicManagerI.h14
-rw-r--r--cpp/src/IceStorm/TransientTopicI.cpp11
-rw-r--r--cpp/src/IceStorm/TransientTopicManagerI.cpp9
-rw-r--r--cpp/src/IceStorm/Util.cpp81
-rw-r--r--cpp/src/IceStorm/Util.h36
-rw-r--r--cpp/src/IceStorm/dummy.ice3
-rw-r--r--cpp/src/IceStorm/dummy2.ice0
-rw-r--r--cpp/src/IceUtil/Exception.cpp2
-rw-r--r--cpp/src/Makefile1
-rw-r--r--cpp/src/Makefile.mak1
46 files changed, 3563 insertions, 3674 deletions
diff --git a/cpp/src/IceDB/.depend.mak b/cpp/src/IceDB/.depend.mak
new file mode 100644
index 00000000000..17a7ab482d8
--- /dev/null
+++ b/cpp/src/IceDB/.depend.mak
@@ -0,0 +1,75 @@
+
+IceDB.obj: \
+ IceDB.cpp \
+ "IceDB.h" \
+ "$(includedir)\IceUtil\Exception.h" \
+ "$(includedir)\IceUtil\Config.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\IceUtil\Timer.h" \
+ "$(includedir)\IceUtil\Shared.h" \
+ "$(includedir)\IceUtil\Atomic.h" \
+ "$(includedir)\IceUtil\Thread.h" \
+ "$(includedir)\IceUtil\Handle.h" \
+ "$(includedir)\IceUtil\Mutex.h" \
+ "$(includedir)\IceUtil\Lock.h" \
+ "$(includedir)\IceUtil\ThreadException.h" \
+ "$(includedir)\IceUtil\Time.h" \
+ "$(includedir)\IceUtil\MutexProtocol.h" \
+ "$(includedir)\IceUtil\Monitor.h" \
+ "$(includedir)\IceUtil\Cond.h" \
+ "$(includedir)\Ice\CommunicatorF.h" \
+ "$(includedir)\IceUtil\PushDisableWarnings.h" \
+ "$(includedir)\Ice\ProxyF.h" \
+ "$(includedir)\Ice\Config.h" \
+ "$(includedir)\Ice\ProxyHandle.h" \
+ "$(includedir)\Ice\ObjectF.h" \
+ "$(includedir)\Ice\Handle.h" \
+ "$(includedir)\Ice\Exception.h" \
+ "$(includedir)\Ice\Format.h" \
+ "$(includedir)\Ice\StreamF.h" \
+ "$(includedir)\Ice\LocalObject.h" \
+ "$(includedir)\Ice\LocalObjectF.h" \
+ "$(includedir)\Ice\StreamHelpers.h" \
+ "$(includedir)\IceUtil\ScopedArray.h" \
+ "$(includedir)\IceUtil\Iterator.h" \
+ "$(includedir)\IceUtil\Optional.h" \
+ "$(includedir)\IceUtil\UndefSysMacros.h" \
+ "$(includedir)\IceUtil\PopDisableWarnings.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\Proxy.h" \
+ "$(includedir)\Ice\ProxyFactoryF.h" \
+ "$(includedir)\Ice\ConnectionIF.h" \
+ "$(includedir)\Ice\RequestHandlerF.h" \
+ "$(includedir)\Ice\EndpointF.h" \
+ "$(includedir)\Ice\EndpointTypes.h" \
+ "$(includedir)\Ice\ObjectAdapterF.h" \
+ "$(includedir)\Ice\ReferenceF.h" \
+ "$(includedir)\Ice\BatchRequestQueueF.h" \
+ "$(includedir)\Ice\AsyncResult.h" \
+ "$(includedir)\IceUtil\UniquePtr.h" \
+ "$(includedir)\Ice\ConnectionF.h" \
+ "$(includedir)\Ice\InstanceF.h" \
+ "$(includedir)\Ice\AsyncResultF.h" \
+ "$(includedir)\Ice\ObserverHelper.h" \
+ "$(includedir)\Ice\Instrumentation.h" \
+ "$(includedir)\Ice\Current.h" \
+ "$(includedir)\Ice\Identity.h" \
+ "$(includedir)\Ice\Version.h" \
+ "$(includedir)\Ice\BasicStream.h" \
+ "$(includedir)\IceUtil\StringConverter.h" \
+ "$(includedir)\Ice\Object.h" \
+ "$(includedir)\Ice\IncomingAsyncF.h" \
+ "$(includedir)\Ice\ObjectFactoryF.h" \
+ "$(includedir)\Ice\ObjectFactoryManagerF.h" \
+ "$(includedir)\Ice\Buffer.h" \
+ "$(includedir)\Ice\Protocol.h" \
+ "$(includedir)\Ice\SlicedDataF.h" \
+ "$(includedir)\Ice\UserExceptionFactory.h" \
+ "$(includedir)\Ice\FactoryTable.h" \
+ "$(includedir)\Ice\LoggerF.h" \
+ "$(includedir)\Ice\InstrumentationF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\BuiltinSequences.h" \
+ "$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
diff --git a/cpp/src/IceDB/IceDB.cpp b/cpp/src/IceDB/IceDB.cpp
new file mode 100644
index 00000000000..78cb4b4dfc7
--- /dev/null
+++ b/cpp/src/IceDB/IceDB.cpp
@@ -0,0 +1,460 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceDB/IceDB.h>
+#include <Ice/Initialize.h>
+#include <Ice/Stream.h>
+
+#include <lmdb.h>
+
+using namespace IceDB;
+using namespace std;
+
+const char* IceDB::LMDBException::_name = "IceDB::LMDBException";
+
+LMDBException::LMDBException(const char* file, int line, int err) :
+ IceUtil::Exception(file, line),
+ _error(err)
+{
+}
+
+LMDBException::~LMDBException() throw()
+{
+}
+
+string
+LMDBException::ice_name() const
+{
+ return _name;
+}
+
+void
+LMDBException::ice_print(ostream& out) const
+{
+ IceUtil::Exception::ice_print(out);
+ out << ": " << mdb_strerror(_error);
+}
+
+LMDBException*
+LMDBException::ice_clone() const
+{
+ return new LMDBException(*this);
+}
+
+void
+LMDBException::ice_throw() const
+{
+ throw *this;
+}
+
+int
+LMDBException::error() const
+{
+ return _error;
+}
+
+const char* IceDB::KeyTooLongException::_name = "IceDB::KeyTooLongException";
+
+KeyTooLongException::KeyTooLongException(const char* file, int line, size_t size) :
+ IceUtil::Exception(file, line),
+ _size(size)
+{
+}
+
+KeyTooLongException::~KeyTooLongException() throw()
+{
+}
+
+string
+KeyTooLongException::ice_name() const
+{
+ return _name;
+}
+
+void
+KeyTooLongException::ice_print(ostream& out) const
+{
+ IceUtil::Exception::ice_print(out);
+ out << ": ";
+ if(_size > 0)
+ {
+ out << "Key size = " << _size << ", ";
+ }
+ out << "Max size = " << maxKeySize;
+}
+
+KeyTooLongException*
+KeyTooLongException::ice_clone() const
+{
+ return new KeyTooLongException(*this);
+}
+
+void
+KeyTooLongException::ice_throw() const
+{
+ throw *this;
+}
+
+const char* IceDB::BadEnvException::_name = "IceDB::BadEnvException";
+
+BadEnvException::BadEnvException(const char* file, int line, size_t size) :
+ IceUtil::Exception(file, line),
+ _size(size)
+{
+}
+
+BadEnvException::~BadEnvException() throw()
+{
+}
+
+string
+BadEnvException::ice_name() const
+{
+ return _name;
+}
+
+void
+BadEnvException::ice_print(ostream& out) const
+{
+ IceUtil::Exception::ice_print(out);
+ out << ": LMDB env max key size = " << _size;
+ out << ", IceDB max key size = " << maxKeySize;
+}
+
+BadEnvException*
+BadEnvException::ice_clone() const
+{
+ return new BadEnvException(*this);
+}
+
+void
+BadEnvException::ice_throw() const
+{
+ throw *this;
+}
+
+
+Env::Env(const string& path, MDB_dbi maxDbs, size_t mapSize, unsigned int maxReaders)
+{
+ int rc = mdb_env_create(&_menv);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+
+ if(maxDbs != 0)
+ {
+ rc = mdb_env_set_maxdbs(_menv, maxDbs);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ }
+
+ if(mapSize != 0)
+ {
+ rc = mdb_env_set_mapsize(_menv, mapSize);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ }
+
+ if(maxReaders != 0)
+ {
+ rc = mdb_env_set_maxreaders(_menv, maxReaders);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ }
+
+ rc = mdb_env_open(_menv, path.c_str(), 0, 0644);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+
+ size_t envMaxKeySize = mdb_env_get_maxkeysize(_menv);
+ if(maxKeySize > envMaxKeySize)
+ {
+ throw BadEnvException(__FILE__, __LINE__, envMaxKeySize);
+ }
+}
+
+Env::~Env()
+{
+ close();
+}
+
+void
+Env::close()
+{
+ if(_menv != 0)
+ {
+ mdb_env_close(_menv);
+ _menv = 0;
+ }
+}
+
+MDB_env*
+Env::menv() const
+{
+ return _menv;
+}
+
+Txn::Txn(const Env& env, unsigned int flags)
+{
+ const int rc = mdb_txn_begin(env.menv(), 0, flags, &_mtxn);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+Txn::~Txn()
+{
+ abort();
+}
+
+void
+Txn::commit()
+{
+ const int rc = mdb_txn_commit(_mtxn);
+ _mtxn = 0;
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+void
+Txn::abort()
+{
+ if(_mtxn != 0)
+ {
+ mdb_txn_abort(_mtxn);
+ _mtxn = 0;
+ }
+}
+
+MDB_txn*
+Txn::mtxn() const
+{
+ return _mtxn;
+}
+
+ReadOnlyTxn::ReadOnlyTxn(const Env& env) :
+ Txn(env, MDB_RDONLY)
+{
+}
+
+void
+ReadOnlyTxn::reset()
+{
+ mdb_txn_reset(_mtxn);
+}
+
+void
+ReadOnlyTxn::renew()
+{
+ const int rc = mdb_txn_renew(_mtxn);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+ReadWriteTxn::ReadWriteTxn(const Env& env) :
+ Txn(env, 0)
+{
+}
+
+DbiBase::DbiBase(const Txn& txn, const std::string& name, unsigned int flags, MDB_cmp_func* cmp)
+{
+ int rc = mdb_dbi_open(txn.mtxn(), name.c_str(), flags, &_mdbi);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ if(cmp != 0)
+ {
+ rc = mdb_set_compare(txn.mtxn(), _mdbi, cmp);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ }
+}
+
+DbiBase::DbiBase() :
+ _mdbi(0)
+{
+}
+
+DbiBase::~DbiBase()
+{
+}
+
+void
+DbiBase::clear(const ReadWriteTxn& txn)
+{
+ const int rc = mdb_drop(txn.mtxn(), _mdbi, 0);
+ if (rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+MDB_dbi
+DbiBase::mdbi() const
+{
+ return _mdbi;
+}
+
+bool
+DbiBase::get(const Txn& txn, MDB_val* key, MDB_val* data) const
+{
+ assert(key->mv_size <= maxKeySize);
+
+ const int rc = mdb_get(txn.mtxn(), _mdbi, key, data);
+ if(rc != MDB_SUCCESS && rc != MDB_NOTFOUND)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ return rc == MDB_SUCCESS;
+}
+
+void
+DbiBase::put(const ReadWriteTxn& txn, MDB_val* key, MDB_val* data, unsigned int flags)
+{
+ assert(key->mv_size <= maxKeySize);
+
+ const int rc = mdb_put(txn.mtxn(), _mdbi, key, data, flags);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+bool
+DbiBase::find(const Txn& txn, MDB_val* key) const
+{
+ MDB_val data;
+ return get(txn, key, &data);
+}
+
+bool
+DbiBase::del(const ReadWriteTxn& txn, MDB_val* key, MDB_val* data)
+{
+ assert(key->mv_size <= maxKeySize);
+
+ const int rc = mdb_del(txn.mtxn(), _mdbi, key, data);
+ if (rc != MDB_SUCCESS && rc != MDB_NOTFOUND)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ return rc == MDB_SUCCESS;
+}
+
+CursorBase::CursorBase(MDB_dbi dbi, const Txn& txn, bool readOnly) :
+ _readOnly(readOnly)
+{
+ const int rc = mdb_cursor_open(txn.mtxn(), dbi, &_mcursor);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+CursorBase::~CursorBase()
+{
+ if(_readOnly)
+ {
+ close();
+ }
+}
+
+void
+CursorBase::close()
+{
+ if(_mcursor != 0)
+ {
+ mdb_cursor_close(_mcursor);
+ _mcursor = 0;
+ }
+}
+
+MDB_cursor*
+CursorBase::mcursor() const
+{
+ return _mcursor;
+}
+
+bool
+CursorBase::get(MDB_val* key, MDB_val* data, MDB_cursor_op op)
+{
+ const int rc = mdb_cursor_get(_mcursor, key, data, op);
+ if(rc != MDB_SUCCESS && rc != MDB_NOTFOUND)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+ return rc == MDB_SUCCESS;
+}
+
+void
+CursorBase::put(MDB_val* key, MDB_val* data, unsigned int flags)
+{
+ assert(key->mv_size <= maxKeySize);
+ assert(!_readOnly);
+
+ const int rc = mdb_cursor_put(_mcursor, key, data, flags);
+ if (rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+bool
+CursorBase::find(MDB_val* key)
+{
+ MDB_val data;
+ return get(key, &data, MDB_SET);
+}
+
+bool
+CursorBase::find(MDB_val* key, MDB_val* data)
+{
+ return get(key, data, MDB_SET);
+}
+
+void
+CursorBase::del(unsigned int flags)
+{
+ assert(!_readOnly);
+
+ const int rc = mdb_cursor_del(_mcursor, flags);
+ if (rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+void
+CursorBase::renew(const ReadOnlyTxn& txn)
+{
+ assert(_readOnly);
+ const int rc = mdb_cursor_renew(txn.mtxn(), CursorBase::_mcursor);
+ if(rc != MDB_SUCCESS)
+ {
+ throw LMDBException(__FILE__, __LINE__, rc);
+ }
+}
+
+
diff --git a/cpp/src/IceDB/IceDB.h b/cpp/src/IceDB/IceDB.h
new file mode 100644
index 00000000000..764daa0ed1e
--- /dev/null
+++ b/cpp/src/IceDB/IceDB.h
@@ -0,0 +1,539 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_DB_H
+#define ICE_DB_H
+
+#include <IceUtil/Exception.h>
+#include <IceUtil/FileUtil.h>
+#include <Ice/Initialize.h>
+#include <Ice/Stream.h>
+
+#include <lmdb.h>
+
+#ifndef ICE_DB_API
+# ifdef ICE_DB_API_EXPORTS
+# define ICE_DB_API ICE_DECLSPEC_EXPORT
+# elif defined(ICE_STATIC_LIBS)
+# define ICE_DB_API /**/
+# else
+# define ICE_DB_API ICE_DECLSPEC_IMPORT
+# endif
+#endif
+
+//
+// Automatically link IceDB[D].lib with Visual C++
+//
+#if !defined(ICE_BUILDING_ICE_DB) && defined(ICE_DB_API_EXPORTS)
+# define ICE_BUILDING_ICE_DB
+#endif
+
+#ifdef _MSC_VER
+# if !defined(ICE_BUILDING_ICE_DB)
+# if defined(_DEBUG) && !defined(ICE_OS_WINRT)
+# pragma comment(lib, "IceDBD.lib")
+# else
+# pragma comment(lib, "IceDB.lib")
+# endif
+# endif
+#endif
+
+namespace IceDB
+{
+
+const size_t maxKeySize = 511;
+
+//
+// LMDBException wraps an error condition (and error code)
+// returned by LMDB
+//
+class ICE_DB_API LMDBException : public IceUtil::Exception
+{
+public:
+
+ LMDBException(const char*, int, int);
+ virtual ~LMDBException() throw();
+
+ virtual std::string ice_name() const;
+ virtual void ice_print(std::ostream&) const;
+ virtual LMDBException* ice_clone() const;
+ virtual void ice_throw() const;
+
+ int error() const;
+
+private:
+
+ const int _error;
+ static const char* _name;
+};
+
+//
+// KeyTooLongException is thrown if we attempt to marshal a
+// key with a marshaled representation longer than maxKeySize.
+//
+class ICE_DB_API KeyTooLongException : public IceUtil::Exception
+{
+public:
+
+ KeyTooLongException(const char*, int, size_t);
+ virtual ~KeyTooLongException() throw();
+
+ virtual std::string ice_name() const;
+ virtual void ice_print(std::ostream&) const;
+ virtual KeyTooLongException* ice_clone() const;
+ virtual void ice_throw() const;
+
+private:
+
+ const size_t _size;
+ static const char* _name;
+};
+
+//
+// The creation of an Env fails with BadEnvException when this
+// Env's max key size is smaller than maxKeySize.
+//
+class ICE_DB_API BadEnvException : public IceUtil::Exception
+{
+public:
+
+ BadEnvException(const char*, int, size_t);
+ virtual ~BadEnvException() throw();
+
+ virtual std::string ice_name() const;
+ virtual void ice_print(std::ostream&) const;
+ virtual BadEnvException* ice_clone() const;
+ virtual void ice_throw() const;
+
+private:
+
+ const size_t _size;
+ static const char* _name;
+};
+
+
+//
+// Codec reads and writes T to/from MDB_val
+//
+// Partial specializations of this template must provide:
+//
+// Read [out] T from [in] MDB_val using [in] context C
+// static void read(T& , const MDB_val&, const C&);
+//
+// Write [in] T into [out] MDB_val using [in] context C
+// [out] H& holds the memory for MDB_val.mv_data.
+// static void write(const T&, MDB_val&, H&, const C&);
+//
+// Write [in] T into [in/out] MDB_val using [in] context C
+// [in] MDB_val contains the destination array
+// write returns true on success, and false if the provided
+// array is too small.
+// On failure, MDB_val.mv_size contains the marshaled key
+// size if known, and 0 if not know.
+// static bool write(const T&, MDB_val&, H&, const C&);
+//
+template<typename T, typename C, typename H>
+struct Codec;
+
+class ICE_DB_API Env
+{
+public:
+
+ explicit Env(const std::string&, MDB_dbi = 0, size_t = 0, unsigned int = 0);
+ ~Env();
+
+ void close();
+
+ MDB_env* menv() const;
+
+private:
+
+ // Not implemented: class is not copyable
+ Env(const Env&);
+ void operator=(const Env&);
+
+ MDB_env* _menv;
+};
+
+class ICE_DB_API Txn
+{
+public:
+
+ virtual ~Txn();
+
+ void commit();
+ void abort();
+
+ MDB_txn* mtxn() const;
+
+protected:
+
+ explicit Txn(const Env&, unsigned int);
+
+ MDB_txn* _mtxn;
+
+private:
+
+ // Not implemented: class is not copyable
+ Txn(const Txn&);
+ void operator=(const Txn&);
+};
+
+class ICE_DB_API ReadOnlyTxn : public Txn
+{
+public:
+
+ explicit ReadOnlyTxn(const Env&);
+
+ void reset();
+ void renew();
+};
+
+class ICE_DB_API ReadWriteTxn : public Txn
+{
+public:
+
+ explicit ReadWriteTxn(const Env&);
+};
+
+class ICE_DB_API DbiBase
+{
+public:
+
+ void clear(const ReadWriteTxn&);
+ MDB_dbi mdbi() const;
+
+ virtual ~DbiBase();
+
+protected:
+
+ DbiBase(const Txn&, const std::string&, unsigned int, MDB_cmp_func*);
+ DbiBase();
+
+ // default copy ctor and assignment operator are OK
+
+ bool get(const Txn&, MDB_val*, MDB_val*) const;
+ void put(const ReadWriteTxn&, MDB_val*, MDB_val*, unsigned int);
+ bool find(const Txn&, MDB_val*) const;
+ bool del(const ReadWriteTxn&, MDB_val*, MDB_val*);
+
+private:
+
+ MDB_dbi _mdbi;
+};
+
+template<typename K, typename D, typename C, typename H>
+class Dbi : public DbiBase
+{
+public:
+
+ Dbi(const Txn& txn, const std::string& name, const C& ctx, unsigned int flags = 0, MDB_cmp_func* cmp = 0) :
+ DbiBase(txn, name, flags, cmp),
+ _marshalingContext(ctx)
+ {
+ }
+
+ Dbi()
+ {
+ }
+
+ bool get(const Txn& txn, const K& key, D& data) const
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ MDB_val mdata;
+ if(DbiBase::get(txn, &mkey, &mdata))
+ {
+ Codec<D, C, H>::read(data, mdata, _marshalingContext);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void put(const ReadWriteTxn& txn, const K& key, const D& data, unsigned int flags = 0)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ H hdata;
+ MDB_val mdata;
+ Codec<D, C, H>::write(data, mdata, hdata, _marshalingContext);
+ DbiBase::put(txn, &mkey, &mdata, flags);
+ }
+ else
+ {
+ throw KeyTooLongException(__FILE__, __LINE__, mkey.mv_size);
+ }
+ }
+
+ bool find(const Txn& txn, const K& key) const
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ return DbiBase::find(txn, &mkey);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ bool del(const ReadWriteTxn& txn, const K& key, const D& data)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ H hdata;
+ MDB_val mdata;
+ Codec<D, C, H>::write(data, mdata, hdata, _marshalingContext);
+ return DbiBase::del(txn, &mkey, &mdata);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ bool del(const ReadWriteTxn& txn, const K& key)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ return DbiBase::del(txn, &mkey, 0);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ C marshalingContext() const
+ {
+ return _marshalingContext;
+ }
+
+private:
+
+ C _marshalingContext;
+};
+
+class ICE_DB_API CursorBase
+{
+public:
+
+ void close();
+
+ MDB_cursor* mcursor() const;
+
+ virtual ~CursorBase();
+
+protected:
+
+ CursorBase(MDB_dbi dbi, const Txn& txn, bool);
+
+ bool get(MDB_val*, MDB_val*, MDB_cursor_op);
+ void put(MDB_val*, MDB_val*, unsigned int);
+ bool find(MDB_val*);
+ bool find(MDB_val*, MDB_val*);
+ void del(unsigned int);
+ void renew(const ReadOnlyTxn&);
+
+private:
+
+ // Not implemented: class is not copyable
+ CursorBase(const CursorBase&);
+ void operator=(const CursorBase&);
+
+ MDB_cursor* _mcursor;
+ const bool _readOnly;
+};
+
+template<typename K, typename D, typename C, typename H>
+class Cursor : public CursorBase
+{
+public:
+
+ Cursor(const Dbi<K, D, C, H>& dbi, const ReadOnlyTxn& txn) :
+ CursorBase(dbi.mdbi(), txn, true),
+ _marshalingContext(dbi.marshalingContext())
+ {
+ }
+
+ Cursor(const Dbi<K, D, C, H>& dbi, const ReadWriteTxn& txn) :
+ CursorBase(dbi.mdbi(), txn, false),
+ _marshalingContext(dbi.marshalingContext())
+ {
+ }
+
+ Cursor(const Dbi<K, D, C, H>& dbi, const Txn& txn) :
+ CursorBase(dbi.mdbi(), txn, dynamic_cast<const ReadOnlyTxn*>(&txn) != 0),
+ _marshalingContext(dbi.marshalingContext())
+ {
+ }
+
+ bool get(K& key, D& data, MDB_cursor_op op)
+ {
+ MDB_val mkey, mdata;
+ if(CursorBase::get(&mkey, &mdata, op))
+ {
+ Codec<K, C, H>::read(key, mkey, _marshalingContext);
+ Codec<D, C, H>::read(data, mdata, _marshalingContext);
+ return true;
+ }
+ return false;
+ }
+
+ bool find(const K& key)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ return CursorBase::find(&mkey);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ bool find(const K& key, D& data)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, _marshalingContext))
+ {
+ MDB_val mdata;
+ if(CursorBase::find(&mkey, &mdata))
+ {
+ Codec<D, C, H>::read(data, mdata, _marshalingContext);
+ return true;
+ }
+ }
+ return false;
+ }
+
+protected:
+
+ C _marshalingContext;
+};
+
+template<typename K, typename D, typename C, typename H>
+class ReadWriteCursor : public Cursor<K, D, C, H>
+{
+public:
+
+ ReadWriteCursor(const Dbi<K, D, C, H>& dbi, const ReadWriteTxn& txn) :
+ Cursor<K, D, C, H>(dbi, txn)
+ {
+ }
+
+ void put(const K& key, const D& data, unsigned int flags = 0)
+ {
+ unsigned char kbuf[maxKeySize];
+ MDB_val mkey = {maxKeySize, kbuf};
+ if(Codec<K, C, H>::write(key, mkey, this->_marshalingContext))
+ {
+ H hdata;
+ MDB_val mdata;
+ Codec<D, C, H>::write(data, mdata, hdata, this->_marshalingContext);
+ CursorBase::put(&mkey, &mdata, flags);
+ }
+ else
+ {
+ throw KeyTooLongException(__FILE__, __LINE__, mkey.mv_size);
+ }
+ }
+
+ void del(unsigned int flags = 0)
+ {
+ CursorBase::del(flags);
+ }
+};
+
+template<typename K, typename D, typename C, typename H>
+class ReadOnlyCursor : public Cursor<K, D, C, H>
+{
+public:
+
+ ReadOnlyCursor(const Dbi<K, D, C, H>& dbi, const ReadOnlyTxn& txn) :
+ Cursor<K, D, C, H>(dbi, txn)
+ {
+ }
+
+ void renew(const ReadOnlyTxn& txn)
+ {
+ CursorBase::renew(txn);
+ }
+};
+
+
+//
+// Partial specialization of Codec for Ice encoding
+//
+struct IceContext
+{
+ Ice::CommunicatorPtr communicator;
+ Ice::EncodingVersion encoding;
+};
+
+template<typename T>
+struct Codec<T, IceContext, Ice::OutputStreamPtr>
+{
+ static void read(T& t, const MDB_val& val, const IceContext& ctx)
+ {
+ std::pair<const Ice::Byte*, const Ice::Byte*> buf(static_cast<const Ice::Byte*>(val.mv_data),
+ static_cast<const Ice::Byte*>(val.mv_data) + val.mv_size);
+ Ice::InputStreamPtr in = Ice::wrapInputStream(ctx.communicator, buf, ctx.encoding);
+ in->read(t);
+ }
+
+ static void write(const T& t, MDB_val& val, Ice::OutputStreamPtr& holder, const IceContext& ctx)
+ {
+ holder = Ice::createOutputStream(ctx.communicator, ctx.encoding);
+ holder->write(t);
+ std::pair<const Ice::Byte*, const Ice::Byte*> buf = holder->finished();
+ val.mv_size = buf.second - buf.first;
+ val.mv_data = const_cast<Ice::Byte*>(buf.first);
+ }
+
+ static bool write(const T& t, MDB_val& val, const IceContext& ctx)
+ {
+ // Cannot use stack-allocated bytes for now
+ Ice::OutputStreamPtr stream = Ice::createOutputStream(ctx.communicator, ctx.encoding);
+ stream->write(t);
+ std::pair<const Ice::Byte*, const Ice::Byte*> buf = stream->finished();
+ size_t sz = static_cast<size_t>(buf.second - buf.first);
+ if(sz > val.mv_size)
+ {
+ val.mv_size = sz;
+ return false;
+ }
+ else
+ {
+ val.mv_size = sz;
+ memcpy(val.mv_data, buf.first, sz);
+ return true;
+ }
+ }
+};
+
+}
+
+#endif
diff --git a/cpp/src/IceDB/IceDB.rc b/cpp/src/IceDB/IceDB.rc
new file mode 100644
index 00000000000..2256f2f27a8
--- /dev/null
+++ b/cpp/src/IceDB/IceDB.rc
@@ -0,0 +1,38 @@
+#include "winver.h"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 3,6,1,0
+ PRODUCTVERSION 3,6,1,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+ #define INTERNALNAME "icedb36d\0"
+ #define ORIGINALFILENAME "icedb36d.dll\0"
+#else
+ FILEFLAGS 0x0L
+ #define INTERNALNAME "icedb36\0"
+ #define ORIGINALFILENAME "icedb36.dll\0"
+#endif
+ FILEOS 0x4L
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "CompanyName", "ZeroC, Inc.\0"
+ VALUE "FileDescription", "IceDB C++ Library\0"
+ VALUE "FileVersion", "3.6.1\0"
+ VALUE "InternalName", INTERNALNAME
+ VALUE "LegalCopyright", "\251 2003-2015 ZeroC, Inc.\0"
+ VALUE "OriginalFilename", ORIGINALFILENAME
+ VALUE "ProductName", "Ice\0"
+ VALUE "ProductVersion", "3.6.1\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
diff --git a/cpp/src/IceDB/Makefile b/cpp/src/IceDB/Makefile
new file mode 100644
index 00000000000..c82a7b32ad8
--- /dev/null
+++ b/cpp/src/IceDB/Makefile
@@ -0,0 +1,44 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+top_srcdir = ../..
+
+LIBFILENAME = $(call mklibfilename,IceDB,$(VERSION))
+SONAME = $(call mksoname,IceDB,$(SOVERSION))
+LIBNAME = $(call mklibname,IceDB)
+
+TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)$(cpp11libdirsuffix)/$(LIBNAME))
+
+OBJS = IceDB.o
+
+RPATH_DIR = $(LOADER_PATH)/../$(libsubdir)
+
+include $(top_srcdir)/config/Make.rules
+
+CPPFLAGS := $(CPPFLAGS) -DICE_DB_API_EXPORTS -I..
+LINKWITH := -lIce -lIceUtil -llmdb
+
+$(libdir)/$(LIBFILENAME): $(OBJS)
+ @mkdir -p $(dir $@)
+ rm -f $@
+ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH))
+
+$(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME)
+ rm -f $@
+ ln -s $(LIBFILENAME) $@
+
+$(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME)
+ @mkdir -p $(libdir)$(cpp11libdirsuffix)
+ rm -f $@
+ ln -s $(cpp11sonamedir)$(SONAME) $@
+
+install:: all
+ $(call installlib,$(DESTDIR)$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
+ $(call installprogram,$(ADMIN),$(DESTDIR)$(install_bindir))
+ $(call installdata,$(top_srcdir)/../man/man1/icestormadmin.1,$(DESTDIR)$(install_mandir))
diff --git a/cpp/src/IceDB/Makefile.mak b/cpp/src/IceDB/Makefile.mak
new file mode 100644
index 00000000000..b711a9b4d67
--- /dev/null
+++ b/cpp/src/IceDB/Makefile.mak
@@ -0,0 +1,58 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+top_srcdir = ..\..
+
+LIBNAME = $(top_srcdir)\lib\icedb$(LIBSUFFIX).lib
+DLLNAME = $(top_srcdir)\bin\icedb$(SOVERSION)$(LIBSUFFIX)$(COMPSUFFIX).dll
+
+TARGETS = $(LIBNAME) $(DLLNAME)
+
+OBJS = .\IceDB.obj
+
+!include $(top_srcdir)/config/Make.rules.mak
+
+#
+#$(OBJS) : $(LMDB_NUPKG)
+#
+
+CPPFLAGS = -I.. -I$(LMDB_HOME)\include $(CPPFLAGS) -DICE_DB_API_EXPORTS -DWIN32_LEAN_AND_MEAN
+LINKWITH = /LIBPATH:$(LMDB_HOME)\lib$(libsuff) lmdb$(LIBSUFFIX).lib Advapi32.lib
+
+!if "$(GENERATE_PDB)" == "yes"
+PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
+!endif
+
+RES_FILE = IceDB.res
+
+$(LIBNAME): $(DLLNAME)
+
+$(DLLNAME): $(OBJS) IceDB.res
+ $(LINK) $(BASE):0x2D000000 $(LD_DLLFLAGS) $(DB_LDFLAGS) $(PDBFLAGS) $(OBJS) $(PREOUT)$@ $(PRELIBS)$(LINKWITH) $(RES_FILE)
+ move $(DLLNAME:.dll=.lib) $(LIBNAME)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#2 && del /q $@.manifest
+ @if exist $(DLLNAME:.dll=.exp) del /q $(DLLNAME:.dll=.exp)
+ @if defined SIGN_CERTIFICATE echo ^ ^ ^ Signing $@ && \
+ signtool sign /f "$(SIGN_CERTIFICATE)" /p $(SIGN_PASSWORD) /t $(SIGN_TIMESTAMPSERVER) $@
+
+clean::
+ -del /q IceDB.obj
+ -del /q $(RES_FILE)
+
+install:: all
+ copy $(LIBNAME) "$(install_libdir)"
+ copy $(DLLNAME) "$(install_bindir)"
+
+!if "$(GENERATE_PDB)" == "yes"
+
+install:: all
+ copy $(DLLNAME:.dll=.pdb) "$(install_bindir)"
+
+!endif
diff --git a/cpp/src/IceGrid/.depend.mak b/cpp/src/IceGrid/.depend.mak
index 752acc49a81..7b45a35e975 100755
--- a/cpp/src/IceGrid/.depend.mak
+++ b/cpp/src/IceGrid/.depend.mak
@@ -2049,7 +2049,6 @@ Activator.obj: \
"$(includedir)\IceUtil\StringUtil.h" \
"$(includedir)\IceUtil\Random.h" \
"ServerI.h" \
- "$(includedir)\Freeze\EvictorF.h" \
"..\..\src\IcePatch2Lib\Util.h" \
"$(includedir)\IcePatch2\FileInfo.h" \
"$(includedir)\IcePatch2\Config.h" \
@@ -2196,7 +2195,6 @@ NodeAdminRouter.obj: \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
"ServerI.h" \
- "$(includedir)\Freeze\EvictorF.h" \
"Activator.h" \
"ServerAdapterI.h" \
@@ -2344,7 +2342,6 @@ NodeI.obj: \
"FileCache.h" \
"Activator.h" \
"ServerI.h" \
- "$(includedir)\Freeze\EvictorF.h" \
"ServerAdapterI.h" \
"Util.h" \
"$(includedir)\IceUtil\StringUtil.h" \
@@ -2632,7 +2629,6 @@ ServerAdapterI.obj: \
"$(includedir)\IceGrid\Registry.h" \
"$(includedir)\IceGrid\Session.h" \
"ServerI.h" \
- "$(includedir)\Freeze\EvictorF.h" \
"Activator.h" \
"TraceLevels.h" \
"NodeI.h" \
@@ -2767,7 +2763,6 @@ ServerI.obj: \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
"ServerI.h" \
- "$(includedir)\Freeze\EvictorF.h" \
"Activator.h" \
"Internal.h" \
"$(includedir)\Glacier2\Session.h" \
@@ -3233,22 +3228,7 @@ AdminI.obj: \
"$(includedir)\IceStorm\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -3264,9 +3244,7 @@ AdminI.obj: \
"AdapterCache.h" \
"Topics.h" \
"PluginFacadeI.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"DescriptorParser.h" \
"DescriptorHelper.h" \
"$(includedir)\IceUtil\OutputUtil.h" \
@@ -3444,22 +3422,7 @@ AdminSessionI.obj: \
"Topics.h" \
"AdminI.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -3473,9 +3436,7 @@ AdminSessionI.obj: \
"AllocatableObjectCache.h" \
"AdapterCache.h" \
"PluginFacadeI.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"$(includedir)\IceSSL\Plugin.h" \
"$(includedir)\IceSSL\Config.h" \
"$(includedir)\IceSSL\ConnectionInfo.h" \
@@ -3857,58 +3818,12 @@ Database.obj: \
"$(includedir)\Ice\ObjectAdapter.h" \
"$(includedir)\Ice\Endpoint.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
+ "$(includedir)\IceGrid\Admin.h" \
"$(includedir)\Ice\FactoryTableInit.h" \
"$(includedir)\Ice\DefaultObjectFactory.h" \
"$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "$(includedir)\IceGrid\Admin.h" \
"$(includedir)\Glacier2\Session.h" \
"$(includedir)\Glacier2\SSLInfo.h" \
"$(includedir)\Glacier2\Config.h" \
@@ -3916,12 +3831,16 @@ Database.obj: \
"$(includedir)\IceGrid\Config.h" \
"$(includedir)\IceGrid\Descriptor.h" \
"Internal.h" \
+ "$(includedir)\Ice\ProcessF.h" \
+ "$(includedir)\Ice\Locator.h" \
"$(includedir)\IceGrid\Observer.h" \
"$(includedir)\IceGrid\Registry.h" \
"$(includedir)\IceGrid\Session.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
+ "$(includedir)\IceUtil\Timer.h" \
+ "$(includedir)\IceUtil\Thread.h" \
"Cache.h" \
"Util.h" \
"TraceLevels.h" \
@@ -3930,6 +3849,7 @@ Database.obj: \
"ReplicaCache.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
+ "$(includedir)\Ice\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"ObjectCache.h" \
"AllocatableObjectCache.h" \
@@ -3937,9 +3857,12 @@ Database.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
"DescriptorHelper.h" \
"$(includedir)\IceUtil\OutputUtil.h" \
"..\..\src\IceXML\Parser.h" \
@@ -3949,7 +3872,6 @@ Database.obj: \
"$(includedir)\IceGrid\FileParser.h" \
"$(includedir)\IceGrid\Locator.h" \
"$(includedir)\IceGrid\UserAccountMapper.h" \
- "SerialsDict.h" \
FileUserAccountMapperI.obj: \
FileUserAccountMapperI.cpp \
@@ -4028,142 +3950,6 @@ FileUserAccountMapperI.obj: \
"$(includedir)\Ice\ObjectFactory.h" \
"$(includedir)\IceGrid\Config.h" \
-IdentityObjectInfoDict.obj: \
- IdentityObjectInfoDict.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "IdentityObjectInfoDict.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\IceGrid\Admin.h" \
- "$(includedir)\Glacier2\Session.h" \
- "$(includedir)\Glacier2\SSLInfo.h" \
- "$(includedir)\Glacier2\Config.h" \
- "$(includedir)\IceGrid\Exception.h" \
- "$(includedir)\IceGrid\Config.h" \
- "$(includedir)\IceGrid\Descriptor.h" \
-
InternalRegistryI.obj: \
InternalRegistryI.cpp \
"$(includedir)\IceUtil\DisableWarnings.h" \
@@ -4313,22 +4099,7 @@ InternalRegistryI.obj: \
"$(includedir)\IceStorm\Config.h" \
"InternalRegistryI.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -4344,9 +4115,7 @@ InternalRegistryI.obj: \
"AdapterCache.h" \
"Topics.h" \
"PluginFacadeI.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"WellKnownObjectsManager.h" \
"ReapThread.h" \
"NodeSessionI.h" \
@@ -4494,22 +4263,7 @@ LocatorI.obj: \
"$(includedir)\IceGrid\Session.h" \
"$(includedir)\IceGrid\Locator.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
@@ -4530,9 +4284,7 @@ LocatorI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"WellKnownObjectsManager.h" \
"SessionI.h" \
"ReapThread.h" \
@@ -4682,22 +4434,7 @@ LocatorRegistryI.obj: \
"SessionManager.h" \
"$(includedir)\IceGrid\Query.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -4717,9 +4454,7 @@ LocatorRegistryI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
NodeCache.obj: \
NodeCache.cpp \
@@ -5017,22 +4752,7 @@ NodeSessionI.obj: \
"$(includedir)\IceGrid\Registry.h" \
"$(includedir)\IceGrid\Session.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
@@ -5053,9 +4773,7 @@ NodeSessionI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
ObjectCache.obj: \
ObjectCache.cpp \
@@ -5306,85 +5024,36 @@ PluginFacadeI.obj: \
"$(includedir)\IceGrid\Session.h" \
"NodeSessionI.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
+ "$(includedir)\IceUtil\Timer.h" \
"Cache.h" \
"Util.h" \
"$(includedir)\IceUtil\StringUtil.h" \
"$(includedir)\IceUtil\Random.h" \
"TraceLevels.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"NodeCache.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"ReplicaCache.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
+ "$(includedir)\Ice\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"ObjectCache.h" \
"AllocatableObjectCache.h" \
"AdapterCache.h" \
"Topics.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\InstrumentationF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
QueryI.obj: \
QueryI.cpp \
@@ -5478,77 +5147,23 @@ QueryI.obj: \
"QueryI.h" \
"$(includedir)\IceGrid\Query.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
+ "$(includedir)\IceUtil\Timer.h" \
+ "$(includedir)\IceUtil\Thread.h" \
"Cache.h" \
"Util.h" \
"$(includedir)\IceUtil\StringUtil.h" \
"$(includedir)\IceUtil\Random.h" \
"TraceLevels.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"NodeCache.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"ReplicaCache.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
+ "$(includedir)\Ice\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"ObjectCache.h" \
"AllocatableObjectCache.h" \
@@ -5556,9 +5171,14 @@ QueryI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\InstrumentationF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
ReapThread.obj: \
ReapThread.cpp \
@@ -5696,12 +5316,13 @@ RegistryAdminRouter.obj: \
"$(includedir)\IceUtil\MutexProtocol.h" \
"$(includedir)\IceUtil\Shared.h" \
"$(includedir)\IceUtil\Atomic.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
+ "$(includedir)\IceUtil\Handle.h" \
"$(includedir)\Ice\CommunicatorF.h" \
"$(includedir)\IceUtil\PushDisableWarnings.h" \
"$(includedir)\Ice\ProxyF.h" \
"$(includedir)\Ice\Config.h" \
"$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\IceUtil\Handle.h" \
"$(includedir)\Ice\ObjectF.h" \
"$(includedir)\Ice\Handle.h" \
"$(includedir)\Ice\Exception.h" \
@@ -5715,20 +5336,7 @@ RegistryAdminRouter.obj: \
"$(includedir)\IceUtil\Optional.h" \
"$(includedir)\IceUtil\UndefSysMacros.h" \
"$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\IceGrid\Admin.h" \
"$(includedir)\Ice\Proxy.h" \
"$(includedir)\Ice\ProxyFactoryF.h" \
"$(includedir)\Ice\ConnectionIF.h" \
@@ -5739,6 +5347,8 @@ RegistryAdminRouter.obj: \
"$(includedir)\Ice\ReferenceF.h" \
"$(includedir)\Ice\BatchRequestQueueF.h" \
"$(includedir)\Ice\AsyncResult.h" \
+ "$(includedir)\IceUtil\Monitor.h" \
+ "$(includedir)\IceUtil\Cond.h" \
"$(includedir)\IceUtil\UniquePtr.h" \
"$(includedir)\Ice\ConnectionF.h" \
"$(includedir)\Ice\InstanceF.h" \
@@ -5749,6 +5359,7 @@ RegistryAdminRouter.obj: \
"$(includedir)\Ice\Identity.h" \
"$(includedir)\Ice\Version.h" \
"$(includedir)\Ice\BasicStream.h" \
+ "$(includedir)\IceUtil\StringConverter.h" \
"$(includedir)\Ice\Object.h" \
"$(includedir)\Ice\IncomingAsyncF.h" \
"$(includedir)\Ice\ObjectFactoryF.h" \
@@ -5758,11 +5369,6 @@ RegistryAdminRouter.obj: \
"$(includedir)\Ice\SlicedDataF.h" \
"$(includedir)\Ice\UserExceptionFactory.h" \
"$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
"$(includedir)\Ice\GCObject.h" \
"$(includedir)\IceUtil\MutexPtrLock.h" \
"$(includedir)\Ice\Incoming.h" \
@@ -5770,59 +5376,13 @@ RegistryAdminRouter.obj: \
"$(includedir)\Ice\ServantManagerF.h" \
"$(includedir)\Ice\ResponseHandlerF.h" \
"$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
"$(includedir)\Ice\FactoryTableInit.h" \
"$(includedir)\Ice\DefaultObjectFactory.h" \
"$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
+ "$(includedir)\Ice\BuiltinSequences.h" \
+ "$(includedir)\Ice\Properties.h" \
+ "$(includedir)\Ice\PropertiesAdmin.h" \
"$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "$(includedir)\IceGrid\Admin.h" \
"$(includedir)\Glacier2\Session.h" \
"$(includedir)\Glacier2\SSLInfo.h" \
"$(includedir)\Glacier2\Config.h" \
@@ -5830,22 +5390,28 @@ RegistryAdminRouter.obj: \
"$(includedir)\IceGrid\Config.h" \
"$(includedir)\IceGrid\Descriptor.h" \
"Internal.h" \
+ "$(includedir)\Ice\ProcessF.h" \
+ "$(includedir)\Ice\Locator.h" \
"$(includedir)\IceGrid\Observer.h" \
"$(includedir)\IceGrid\Registry.h" \
"$(includedir)\IceGrid\Session.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
+ "$(includedir)\IceUtil\Timer.h" \
+ "$(includedir)\IceUtil\Thread.h" \
"Cache.h" \
"Util.h" \
"$(includedir)\IceUtil\StringUtil.h" \
"$(includedir)\IceUtil\Random.h" \
"TraceLevels.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"NodeCache.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"ReplicaCache.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
+ "$(includedir)\Ice\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"ObjectCache.h" \
"AllocatableObjectCache.h" \
@@ -5853,10 +5419,47 @@ RegistryAdminRouter.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\InstrumentationF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
"AdminRouter.h" \
+ "$(includedir)\Ice\Ice.h" \
+ "$(includedir)\Ice\DeprecatedStringConverter.h" \
+ "$(includedir)\Ice\LocalException.h" \
+ "$(includedir)\Ice\Logger.h" \
+ "$(includedir)\Ice\LoggerUtil.h" \
+ "$(includedir)\Ice\RemoteLogger.h" \
+ "$(includedir)\Ice\Communicator.h" \
+ "$(includedir)\Ice\RouterF.h" \
+ "$(includedir)\Ice\LocatorF.h" \
+ "$(includedir)\Ice\PluginF.h" \
+ "$(includedir)\Ice\ImplicitContextF.h" \
+ "$(includedir)\Ice\FacetMap.h" \
+ "$(includedir)\Ice\CommunicatorAsync.h" \
+ "$(includedir)\Ice\ObjectAdapter.h" \
+ "$(includedir)\Ice\Endpoint.h" \
+ "$(includedir)\Ice\ServantLocator.h" \
+ "$(includedir)\Ice\SlicedData.h" \
+ "$(includedir)\Ice\OutgoingAsync.h" \
+ "$(includedir)\Ice\OutgoingAsyncF.h" \
+ "$(includedir)\Ice\Process.h" \
+ "$(includedir)\Ice\Application.h" \
+ "$(includedir)\Ice\Connection.h" \
+ "$(includedir)\Ice\ConnectionAsync.h" \
+ "$(includedir)\Ice\Functional.h" \
+ "$(includedir)\IceUtil\Functional.h" \
+ "$(includedir)\Ice\ImplicitContext.h" \
+ "$(includedir)\Ice\Router.h" \
+ "$(includedir)\Ice\DispatchInterceptor.h" \
+ "$(includedir)\Ice\NativePropertiesAdmin.h" \
+ "$(includedir)\Ice\SliceChecksums.h" \
+ "$(includedir)\Ice\Service.h" \
+ "$(includedir)\Ice\RegisterPlugins.h" \
RegistryI.obj: \
RegistryI.cpp \
@@ -6006,22 +5609,6 @@ RegistryI.obj: \
"$(includedir)\Glacier2\NullPermissionsVerifier.h" \
"TraceLevels.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
"$(includedir)\IceGrid\Admin.h" \
"$(includedir)\Glacier2\Session.h" \
"$(includedir)\IceGrid\Exception.h" \
@@ -6047,9 +5634,7 @@ RegistryI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"ReapThread.h" \
"RegistryI.h" \
"$(includedir)\IceGrid\Locator.h" \
@@ -6327,22 +5912,7 @@ ReplicaSessionI.obj: \
"Internal.h" \
"$(includedir)\IceGrid\Observer.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
@@ -6363,9 +5933,7 @@ ReplicaSessionI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"WellKnownObjectsManager.h" \
"$(includedir)\IceGrid\Locator.h" \
"PlatformInfo.h" \
@@ -6507,22 +6075,7 @@ ReplicaSessionManager.obj: \
"$(includedir)\IceGrid\Session.h" \
"TraceLevels.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -6541,141 +6094,10 @@ ReplicaSessionManager.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"WellKnownObjectsManager.h" \
"$(includedir)\IceGrid\Locator.h" \
-SerialsDict.obj: \
- SerialsDict.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "SerialsDict.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
-
ServerCache.obj: \
ServerCache.cpp \
"$(includedir)\IceUtil\DisableWarnings.h" \
@@ -6984,22 +6406,7 @@ SessionI.obj: \
"$(includedir)\IceGrid\Registry.h" \
"$(includedir)\IceGrid\Locator.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"Allocatable.h" \
"Cache.h" \
@@ -7018,9 +6425,7 @@ SessionI.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
"$(includedir)\IceSSL\Plugin.h" \
"$(includedir)\IceSSL\Config.h" \
"$(includedir)\IceSSL\ConnectionInfo.h" \
@@ -7159,278 +6564,6 @@ SessionServantManager.obj: \
"$(includedir)\Glacier2\SSLInfo.h" \
"$(includedir)\Glacier2\Config.h" \
-StringAdapterInfoDict.obj: \
- StringAdapterInfoDict.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "StringAdapterInfoDict.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\IceGrid\Admin.h" \
- "$(includedir)\Glacier2\Session.h" \
- "$(includedir)\Glacier2\SSLInfo.h" \
- "$(includedir)\Glacier2\Config.h" \
- "$(includedir)\IceGrid\Exception.h" \
- "$(includedir)\IceGrid\Config.h" \
- "$(includedir)\IceGrid\Descriptor.h" \
-
-StringApplicationInfoDict.obj: \
- StringApplicationInfoDict.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "StringApplicationInfoDict.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\IceGrid\Admin.h" \
- "$(includedir)\Glacier2\Session.h" \
- "$(includedir)\Glacier2\SSLInfo.h" \
- "$(includedir)\Glacier2\Config.h" \
- "$(includedir)\IceGrid\Exception.h" \
- "$(includedir)\IceGrid\Config.h" \
- "$(includedir)\IceGrid\Descriptor.h" \
-
Topics.obj: \
Topics.cpp \
"$(includedir)\Ice\Ice.h" \
@@ -7573,7 +6706,7 @@ Topics.obj: \
WellKnownObjectsManager.obj: \
WellKnownObjectsManager.cpp \
- "$(includedir)\Glacier2\PermissionsVerifier.h" \
+ "$(includedir)\Ice\Endpoint.h" \
"$(includedir)\IceUtil\PushDisableWarnings.h" \
"$(includedir)\Ice\ProxyF.h" \
"$(includedir)\IceUtil\Shared.h" \
@@ -7593,6 +6726,13 @@ WellKnownObjectsManager.obj: \
"$(includedir)\Ice\StreamHelpers.h" \
"$(includedir)\IceUtil\ScopedArray.h" \
"$(includedir)\IceUtil\Iterator.h" \
+ "$(includedir)\IceUtil\Optional.h" \
+ "$(includedir)\Ice\Version.h" \
+ "$(includedir)\IceUtil\UndefSysMacros.h" \
+ "$(includedir)\IceUtil\PopDisableWarnings.h" \
+ "$(includedir)\Ice\BuiltinSequences.h" \
+ "$(includedir)\Ice\EndpointF.h" \
+ "$(includedir)\Glacier2\PermissionsVerifier.h" \
"$(includedir)\Ice\Proxy.h" \
"$(includedir)\IceUtil\Mutex.h" \
"$(includedir)\IceUtil\Lock.h" \
@@ -7602,10 +6742,6 @@ WellKnownObjectsManager.obj: \
"$(includedir)\Ice\ProxyFactoryF.h" \
"$(includedir)\Ice\ConnectionIF.h" \
"$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
"$(includedir)\Ice\EndpointTypes.h" \
"$(includedir)\Ice\ObjectAdapterF.h" \
"$(includedir)\Ice\ReferenceF.h" \
@@ -7622,7 +6758,6 @@ WellKnownObjectsManager.obj: \
"$(includedir)\Ice\Instrumentation.h" \
"$(includedir)\Ice\Current.h" \
"$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
"$(includedir)\Ice\BasicStream.h" \
"$(includedir)\IceUtil\StringConverter.h" \
"$(includedir)\Ice\Object.h" \
@@ -7644,7 +6779,6 @@ WellKnownObjectsManager.obj: \
"$(includedir)\Ice\DefaultObjectFactory.h" \
"$(includedir)\Ice\ObjectFactory.h" \
"$(includedir)\Glacier2\SSLInfo.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
"$(includedir)\Glacier2\Config.h" \
"WellKnownObjectsManager.h" \
"Internal.h" \
@@ -7664,78 +6798,24 @@ WellKnownObjectsManager.obj: \
"$(includedir)\IceGrid\Session.h" \
"$(includedir)\IceGrid\Locator.h" \
"Database.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceUtil\FileUtil.h" \
"ServerCache.h" \
"$(includedir)\IceGrid\Query.h" \
"Allocatable.h" \
+ "$(includedir)\IceUtil\Timer.h" \
+ "$(includedir)\IceUtil\Thread.h" \
"Cache.h" \
"Util.h" \
"$(includedir)\IceUtil\StringUtil.h" \
"$(includedir)\IceUtil\Random.h" \
"TraceLevels.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"NodeCache.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"ReplicaCache.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
+ "$(includedir)\Ice\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"ObjectCache.h" \
"AllocatableObjectCache.h" \
@@ -7743,9 +6823,14 @@ WellKnownObjectsManager.obj: \
"Topics.h" \
"PluginFacadeI.h" \
"$(includedir)\IceGrid\PluginFacade.h" \
- "StringApplicationInfoDict.h" \
- "StringAdapterInfoDict.h" \
- "IdentityObjectInfoDict.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "$(includedir)\Ice\Initialize.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "$(includedir)\Ice\InstrumentationF.h" \
+ "$(includedir)\Ice\Dispatcher.h" \
+ "$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\BatchRequestInterceptor.h" \
+ "$(includedir)\Ice\Stream.h" \
IceGridNode.obj: \
IceGridNode.cpp \
diff --git a/cpp/src/IceGrid/.gitignore b/cpp/src/IceGrid/.gitignore
index 5a179db546b..dd791e621d9 100644
--- a/cpp/src/IceGrid/.gitignore
+++ b/cpp/src/IceGrid/.gitignore
@@ -5,11 +5,5 @@ IceLocatorDiscovery.cpp
IceLocatorDiscovery.h
Internal.cpp
Internal.h
-StringApplicationInfoDict.h
-StringApplicationInfoDict.cpp
-IdentityObjectInfoDict.h
-IdentityObjectInfoDict.cpp
-StringAdapterInfoDict.h
-StringAdapterInfoDict.cpp
-SerialsDict.h
-SerialsDict.cpp
+DBTypes.h
+DBTypes.cpp
diff --git a/cpp/src/IceStorm/V31Format.ice b/cpp/src/IceGrid/DBTypes.ice
index 57281cb73ff..96efb51157c 100644
--- a/cpp/src/IceStorm/V31Format.ice
+++ b/cpp/src/IceGrid/DBTypes.ice
@@ -9,15 +9,22 @@
#pragma once
-[["cpp:header-ext:h"]]
+#include <IceGrid/Admin.ice>
-#include <IceStorm/LinkRecord.ice>
+[["cpp:header-ext:h"]]
-module IceStorm
+module IceGrid
{
-/** Dictionary of link name to link record. */
-dictionary<string, LinkRecord> LinkRecordDict;
+dictionary<string, long> StringLongDict;
-}; // End module IceStorm
+struct AllData
+{
+ ApplicationInfoSeq applications;
+ AdapterInfoSeq adapters;
+ ObjectInfoSeq objects;
+ ObjectInfoSeq internalObjects;
+ StringLongDict serials;
+};
+};
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index c38dfea7ac0..91989d77a01 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -22,7 +22,6 @@
#include <IceGrid/Session.h>
#include <IceGrid/Topics.h>
#include <IceGrid/IceGrid.h>
-#include <IceGrid/SerialsDict.h>
#include <algorithm>
#include <functional>
@@ -30,15 +29,23 @@
using namespace std;
using namespace IceGrid;
-using namespace Freeze;
+
+typedef IceDB::ReadWriteCursor<string, ApplicationInfo, IceDB::IceContext, Ice::OutputStreamPtr> ApplicationMapRWCursor;
+typedef IceDB::ReadOnlyCursor<string, AdapterInfo, IceDB::IceContext, Ice::OutputStreamPtr> AdapterMapROCursor;
+typedef IceDB::Cursor<string, string, IceDB::IceContext, Ice::OutputStreamPtr> AdaptersByGroupMapCursor;
+typedef IceDB::ReadOnlyCursor<string, Ice::Identity, IceDB::IceContext, Ice::OutputStreamPtr> ObjectsByTypeMapROCursor;
+typedef IceDB::ReadOnlyCursor<Ice::Identity, ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr> ObjectsMapROCursor;
namespace
{
const string applicationsDbName = "applications";
const string adaptersDbName = "adapters";
+const string adaptersByReplicaGroupIdDbName = "adaptersByReplicaGroupId";
const string objectsDbName = "objects";
+const string objectsByTypeDbName = "objectsByType";
const string internalObjectsDbName = "internal-objects";
+const string internalObjectsByTypeDbName = "internal-objectsByType";
const string serialsDbName = "serials";
struct ObjectLoadCI : binary_function<pair<Ice::ObjectPrx, float>&, pair<Ice::ObjectPrx, float>&, bool>
@@ -49,35 +56,38 @@ struct ObjectLoadCI : binary_function<pair<Ice::ObjectPrx, float>&, pair<Ice::Ob
}
};
-template<typename K, typename V, typename C, typename Comp> vector<V>
-toVector(const Map<K, V, C, Comp>& m)
+template<typename K, typename V, typename C, typename H> vector<V>
+toVector(const IceDB::ReadOnlyTxn& txn, const IceDB::Dbi<K, V, C, H>& m)
{
vector<V> v;
- for(typename Map<K, V, C, Comp>::const_iterator p = m.begin(); p != m.end(); ++p)
+ IceDB::ReadOnlyCursor<K, V, C, H> cursor(m, txn);
+ K key;
+ V value;
+ while(cursor.get(key, value, MDB_NEXT))
{
- v.push_back(p->second);
+ v.push_back(value);
}
return v;
}
-template<typename K, typename V, typename C, typename Comp> map<K, V>
-toMap(const Map<K, V, C, Comp>& d)
+template<typename K, typename V, typename C, typename H> map<K, V>
+toMap(const IceDB::Txn& txn, const IceDB::Dbi<K, V, C, H>& d)
{
std::map<K, V> m;
- for(typename Map<K, V, C, Comp>::const_iterator p = d.begin(); p != d.end(); ++p)
+ IceDB::Cursor<K, V, C, H> cursor(d, txn);
+ K key;
+ V value;
+ while(cursor.get(key, value, MDB_NEXT))
{
-#ifdef __SUNPRO_CC
- std::map<Key, Value>::value_type v(p->first, p->second);
+ typename std::map<K, V>::value_type v(key, value);
m.insert(v);
-#else
- m.insert(*p);
-#endif
}
+ cursor.close();
return m;
}
void
-halt(const Ice::CommunicatorPtr& com, const DatabaseException& ex)
+halt(const Ice::CommunicatorPtr& com, const IceDB::LMDBException& ex)
{
{
Ice::Error error(com->getLogger());
@@ -134,69 +144,52 @@ filterAdapterInfos(const string& filter,
infos.swap(filteredAdpts);
}
-Ice::Long
-getSerial(const Freeze::ConnectionPtr& connection, const string& dbName)
-{
- SerialsDict dict(connection, serialsDbName);
-
- //
- // If a serial number is provided, juste update the serial number from the database,
- // otherwise if the serial is 0, we increment the serial from the database.
- //
- SerialsDict::iterator p = dict.find(dbName);
- if(p == dict.end())
- {
- dict.insert(SerialsDict::value_type(dbName, 1));
- return 1;
- }
- return p->second;
-}
-
-Ice::Long
-updateSerial(const Freeze::ConnectionPtr& connection, const string& dbName, Ice::Long serial = 0)
-{
- if(serial == -1) // Master doesn't support serials.
- {
- return -1;
- }
-
- SerialsDict dict(connection, serialsDbName);
-
- //
- // If a serial number is provided, juste update the serial number from the database,
- // otherwise if the serial is 0, we increment the serial from the database.
- //
- SerialsDict::iterator p = dict.find(dbName);
- if(p == dict.end())
- {
- dict.insert(SerialsDict::value_type(dbName, serial == 0 ? 1 : serial));
- return 1;
- }
- else
- {
- p.set(serial == 0 ? p->second + 1 : serial);
- return p->second;
- }
-}
-
vector<AdapterInfo>
-findByReplicaGroupId(const StringAdapterInfoDict& dict, const string& name)
+findByReplicaGroupId(const IceDB::Txn& txn,
+ const StringAdapterInfoMap& adapters,
+ const StringStringMap& adaptersByGroupId,
+ const string& name)
{
vector<AdapterInfo> result;
- for(StringAdapterInfoDict::const_iterator p = dict.findByReplicaGroupId(name, true); p != dict.end(); ++p)
+ AdaptersByGroupMapCursor cursor(adaptersByGroupId, txn);
+ string id;
+ if(cursor.find(name, id))
{
- result.push_back(p->second);
+ AdapterInfo info;
+ adapters.get(txn, id, info);
+ result.push_back(info);
+
+ string n;
+ while(cursor.get(n, id, MDB_NEXT) && n == name)
+ {
+ adapters.get(txn, id, info);
+ result.push_back(info);
+ }
}
return result;
}
vector<ObjectInfo>
-findByType(const IdentityObjectInfoDict& dict, const string& type)
+findByType(const IceDB::ReadOnlyTxn& txn,
+ const IdentityObjectInfoMap& objects,
+ const StringIdentityMap& objectsByType,
+ const string& type)
{
vector<ObjectInfo> result;
- for(IdentityObjectInfoDict::const_iterator p = dict.findByType(type); p != dict.end(); ++p)
+ ObjectsByTypeMapROCursor cursor(objectsByType, txn);
+ Ice::Identity id;
+ if(cursor.find(type, id))
{
- result.push_back(p->second);
+ ObjectInfo info;
+ objects.get(txn, id, info);
+ result.push_back(info);
+
+ string t;
+ while(cursor.get(t, id, MDB_NEXT) && t == type)
+ {
+ objects.get(txn, id, info);
+ result.push_back(info);
+ }
}
return result;
}
@@ -208,8 +201,6 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
const string& instanceName,
const TraceLevelsPtr& traceLevels,
const RegistryInfo& info,
- const Freeze::ConnectionPtr& connection,
- const string& envName,
bool readonly) :
_communicator(registryAdapter->getCommunicator()),
_internalAdapter(registryAdapter),
@@ -224,27 +215,45 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
_objectCache(_communicator),
_allocatableObjectCache(_communicator),
_serverCache(_communicator, _instanceName, _nodeCache, _adapterCache, _objectCache, _allocatableObjectCache),
- _connection(connection),
- _envName(envName),
- _applications(_connection, applicationsDbName),
- _adapters(_connection, adaptersDbName),
- _objects(_connection, objectsDbName),
- _internalObjects(_connection, internalObjectsDbName),
+ _dbLock(_communicator->getProperties()->getProperty("Registry.LMDB.Path") + "/icedb.lock"),
+ _env(_communicator->getProperties()->getProperty("Registry.LMDB.Path"), 8),
_pluginFacade(RegistryPluginFacadeIPtr::dynamicCast(getRegistryPluginFacade())),
_lock(0)
{
+ IceDB::ReadWriteTxn txn(_env);
+
+ IceDB::IceContext context;
+ context.communicator = _communicator;
+ context.encoding = { 1, 1 };
+
+ _applications = StringApplicationInfoMap(txn, applicationsDbName, context, MDB_CREATE);
+
+ _adapters = StringAdapterInfoMap(txn, adaptersDbName, context, MDB_CREATE);
+ _adaptersByGroupId = StringStringMap(txn, adaptersByReplicaGroupIdDbName, context, MDB_CREATE|MDB_DUPSORT);
+
+ _objects = IdentityObjectInfoMap(txn, objectsDbName, context, MDB_CREATE);
+ _objectsByType = StringIdentityMap(txn, objectsByTypeDbName, context, MDB_CREATE|MDB_DUPSORT);
+
+ _internalObjects = IdentityObjectInfoMap(txn, internalObjectsDbName, context, MDB_CREATE);
+ _internalObjectsByType = StringIdentityMap(txn, internalObjectsByTypeDbName, context, MDB_CREATE|MDB_DUPSORT);
+
+ _serials = StringLongMap(txn, serialsDbName, context, MDB_CREATE);
+
ServerEntrySeq entries;
- for(StringApplicationInfoDict::iterator p = _applications.begin(); p != _applications.end(); ++p)
+ string k;
+ ApplicationInfo v;
+ ApplicationMapRWCursor cursor(_applications, txn);
+ while(cursor.get(k, v, MDB_NEXT))
{
try
{
- load(ApplicationHelper(_communicator, p->second.descriptor), entries, p->second.uuid, p->second.revision);
+ load(ApplicationHelper(_communicator, v.descriptor), entries, v.uuid, v.revision);
}
catch(const DeploymentException& ex)
{
Ice::Error err(_traceLevels->logger);
- err << "invalid application `" << p->first << "':\n" << ex.reason;
+ err << "invalid application `" << k << "':\n" << ex.reason;
}
}
@@ -257,9 +266,15 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
_nodeObserverTopic = new NodeObserverTopic(_topicManager, _internalAdapter);
_registryObserverTopic = new RegistryObserverTopic(_topicManager);
- _applicationObserverTopic = new ApplicationObserverTopic(_topicManager, toMap(_applications), getSerial(_connection, applicationsDbName));
- _adapterObserverTopic = new AdapterObserverTopic(_topicManager, toMap(_adapters), getSerial(_connection, adaptersDbName));
- _objectObserverTopic = new ObjectObserverTopic(_topicManager, toMap(_objects), getSerial(_connection, objectsDbName));
+
+ _applicationObserverTopic =
+ new ApplicationObserverTopic(_topicManager, toMap(txn, _applications), getSerial(txn, applicationsDbName));
+ _adapterObserverTopic =
+ new AdapterObserverTopic(_topicManager, toMap(txn, _adapters), getSerial(txn, adaptersDbName));
+ _objectObserverTopic =
+ new ObjectObserverTopic(_topicManager, toMap(txn, _objects), getSerial(txn, objectsDbName));
+
+ txn.commit();
_registryObserverTopic->registryUp(info);
@@ -353,29 +368,23 @@ Database::syncApplications(const ApplicationInfoSeq& newApplications, Ice::Long
Lock sync(*this);
map<string, ApplicationInfo> oldApplications;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- oldApplications = toMap(_applications);
- _applications.clear();
- for(ApplicationInfoSeq::const_iterator p = newApplications.begin(); p != newApplications.end(); ++p)
- {
- _applications.put(StringApplicationInfoDict::value_type(p->descriptor.name, *p));
- }
- dbSerial = updateSerial(_connection, applicationsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ oldApplications = toMap(txn, _applications);
+ _applications.clear(txn);
+ for(ApplicationInfoSeq::const_iterator p = newApplications.begin(); p != newApplications.end(); ++p)
{
- halt(_communicator, ex);
+ _applications.put(txn, p->descriptor.name, *p);
}
+ dbSerial = updateSerial(txn, applicationsDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
ServerEntrySeq entries;
@@ -433,28 +442,23 @@ Database::syncAdapters(const AdapterInfoSeq& adapters, Ice::Long dbSerial)
int serial = 0;
{
Lock sync(*this);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- _adapters.clear();
- for(AdapterInfoSeq::const_iterator r = adapters.begin(); r != adapters.end(); ++r)
- {
- _adapters.put(StringAdapterInfoDict::value_type(r->id, *r));
- }
- dbSerial = updateSerial(_connection, adaptersDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
+ IceDB::ReadWriteTxn txn(_env);
+
+ _adapters.clear(txn);
+ _adaptersByGroupId.clear(txn);
+ for(AdapterInfoSeq::const_iterator r = adapters.begin(); r != adapters.end(); ++r)
{
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
+ addAdapter(txn, *r);
}
+ dbSerial = updateSerial(txn, adaptersDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
if(_traceLevels->adapter > 0)
@@ -475,28 +479,23 @@ Database::syncObjects(const ObjectInfoSeq& objects, Ice::Long dbSerial)
int serial = 0;
{
Lock sync(*this);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- _objects.clear();
- for(ObjectInfoSeq::const_iterator q = objects.begin(); q != objects.end(); ++q)
- {
- _objects.put(IdentityObjectInfoDict::value_type(q->proxy->ice_getIdentity(), *q));
- }
- dbSerial = updateSerial(_connection, objectsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ _objects.clear(txn);
+ _objectsByType.clear(txn);
+ for(ObjectInfoSeq::const_iterator q = objects.begin(); q != objects.end(); ++q)
{
- halt(_communicator, ex);
+ addObject(txn, *q, false);
}
+ dbSerial = updateSerial(txn, objectsDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
if(_traceLevels->object > 0)
@@ -511,82 +510,64 @@ Database::syncObjects(const ObjectInfoSeq& objects, Ice::Long dbSerial)
}
ApplicationInfoSeq
-Database::getApplications(Ice::Long& serial) const
+Database::getApplications(Ice::Long& serial)
{
- for(;;)
+ try
{
- try
- {
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- TransactionHolder txHolder(connection);
- StringApplicationInfoDict applications(connection, applicationsDbName);
- serial = getSerial(connection, applicationsDbName);
- return toVector(applications);
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
- }
+ IceDB::ReadOnlyTxn txn(_env);
+
+ serial = getSerial(txn, applicationsDbName);
+ return toVector(txn, _applications);
}
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
+ }
+ assert(false);
+ return ApplicationInfoSeq();
}
AdapterInfoSeq
-Database::getAdapters(Ice::Long& serial) const
+Database::getAdapters(Ice::Long& serial)
{
- for(;;)
+ try
{
- try
- {
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- TransactionHolder txHolder(connection);
- StringAdapterInfoDict adapters(connection, adaptersDbName);
- serial = getSerial(connection, adaptersDbName);
- return toVector(adapters);
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
- }
+ IceDB::ReadOnlyTxn txn(_env);
+
+ serial = getSerial(txn, adaptersDbName);
+ return toVector(txn, _adapters);
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
+ assert(false);
+ return AdapterInfoSeq();
}
ObjectInfoSeq
-Database::getObjects(Ice::Long& serial) const
+Database::getObjects(Ice::Long& serial)
{
- for(;;)
+ try
{
- try
- {
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- TransactionHolder txHolder(connection);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- serial = getSerial(connection, objectsDbName);
- return toVector(objects);
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
- }
+ IceDB::ReadOnlyTxn txn(_env);
+
+ serial = getSerial(txn, objectsDbName);
+ return toVector(txn, _objects);
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
+ assert(false);
+ return ObjectInfoSeq();
}
StringLongDict
Database::getSerials() const
{
- SerialsDict serials(Freeze::createConnection(_communicator, _envName), serialsDbName);
- return toMap(serials);
+ IceDB::ReadOnlyTxn txn(_env);
+ return toMap(txn, _serials);
}
void
@@ -603,22 +584,30 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session, Ic
waitForUpdate(info.descriptor.name);
- StringApplicationInfoDict::const_iterator i = _applications.find(info.descriptor.name);
- if(i != _applications.end())
+ IceDB::ReadWriteTxn txn(_env);
+
+ if(_applications.find(txn, info.descriptor.name))
{
throw DeploymentException("application `" + info.descriptor.name + "' already exists");
}
ApplicationHelper helper(_communicator, info.descriptor, true);
- checkForAddition(helper, _connection);
- dbSerial = saveApplication(info, _connection, dbSerial);
+ checkForAddition(helper, txn);
+ dbSerial = saveApplication(info, txn, dbSerial);
+
+ txn.commit();
+
load(helper, entries, info.uuid, info.revision);
startUpdating(info.descriptor.name, info.uuid, info.revision);
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
serial = _applicationObserverTopic->applicationAdded(dbSerial, info);
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::KeyTooLongException&)
+ {
+ throw DeploymentException("application name is too long: `" + info.descriptor.name + "'");
+ }
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -659,7 +648,10 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session, Ic
Lock sync(*this);
entries.clear();
unload(ApplicationHelper(_communicator, info.descriptor), entries);
- dbSerial = removeApplication(info.descriptor.name, _connection);
+
+ IceDB::ReadWriteTxn txn(_env);
+ dbSerial = removeApplication(info.descriptor.name, txn);
+ txn.commit();
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
serial = _applicationObserverTopic->applicationRemoved(dbSerial, info.descriptor.name);
@@ -669,7 +661,7 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session, Ic
Ice::Error err(_traceLevels->logger);
err << "failed to rollback previous application `" << info.descriptor.name << "':\n" << ex.reason;
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -705,12 +697,12 @@ Database::updateApplication(const ApplicationUpdateInfo& updt, bool noRestart, A
waitForUpdate(update.descriptor.name);
- StringApplicationInfoDict::const_iterator i = _applications.find(update.descriptor.name);
- if(i == _applications.end())
+ IceDB::ReadOnlyTxn txn(_env);
+
+ if(!_applications.get(txn, update.descriptor.name, oldApp))
{
throw ApplicationNotExistException(update.descriptor.name);
}
- oldApp = i->second;
if(update.revision < 0)
{
@@ -722,7 +714,7 @@ Database::updateApplication(const ApplicationUpdateInfo& updt, bool noRestart, A
startUpdating(update.descriptor.name, oldApp.uuid, oldApp.revision + 1);
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -746,12 +738,12 @@ Database::syncApplicationDescriptor(const ApplicationDescriptor& newDesc, bool n
waitForUpdate(newDesc.name);
- StringApplicationInfoDict::const_iterator i = _applications.find(newDesc.name);
- if(i == _applications.end())
+ IceDB::ReadOnlyTxn txn(_env);
+
+ if(!_applications.get(txn, newDesc.name, oldApp))
{
throw ApplicationNotExistException(newDesc.name);
}
- oldApp = i->second;
previous.reset(new ApplicationHelper(_communicator, oldApp.descriptor));
helper.reset(new ApplicationHelper(_communicator, newDesc, true));
@@ -763,7 +755,7 @@ Database::syncApplicationDescriptor(const ApplicationDescriptor& newDesc, bool n
startUpdating(update.descriptor.name, oldApp.uuid, oldApp.revision + 1);
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -791,13 +783,12 @@ Database::instantiateServer(const string& application,
waitForUpdate(application);
- StringApplicationInfoDict::const_iterator i = _applications.find(application);
- if(i == _applications.end())
+ IceDB::ReadOnlyTxn txn(_env);
+
+ if(!_applications.get(txn, application, oldApp))
{
throw ApplicationNotExistException(application);
-
}
- oldApp = i->second;
previous.reset(new ApplicationHelper(_communicator, oldApp.descriptor));
helper.reset(new ApplicationHelper(_communicator, previous->instantiateServer(node, instance), true));
@@ -809,7 +800,7 @@ Database::instantiateServer(const string& application,
startUpdating(update.descriptor.name, oldApp.uuid, oldApp.revision + 1);
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -833,12 +824,12 @@ Database::removeApplication(const string& name, AdminSessionI* session, Ice::Lon
ApplicationInfo appInfo;
- StringApplicationInfoDict::const_iterator i = _applications.find(name);
- if(i == _applications.end())
+ IceDB::ReadWriteTxn txn(_env);
+
+ if(!_applications.get(txn, name, appInfo))
{
throw ApplicationNotExistException(name);
}
- appInfo = i->second;
bool init = false;
try
@@ -855,14 +846,16 @@ Database::removeApplication(const string& name, AdminSessionI* session, Ice::Lon
throw;
}
}
+ dbSerial = removeApplication(name, txn, dbSerial);
+
+ txn.commit();
- dbSerial = removeApplication(name, _connection, dbSerial);
startUpdating(name, appInfo.uuid, appInfo.revision);
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
serial = _applicationObserverTopic->applicationRemoved(dbSerial, name);
}
- catch(const DatabaseException& ex)
+ catch(const IceDB::LMDBException& ex)
{
halt(_communicator, ex);
}
@@ -885,22 +878,21 @@ Database::removeApplication(const string& name, AdminSessionI* session, Ice::Lon
ApplicationInfo
Database::getApplicationInfo(const std::string& name)
{
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- StringApplicationInfoDict applications(connection, applicationsDbName);
- StringApplicationInfoDict::const_iterator i = applications.find(name);
- if(i == applications.end())
+ IceDB::ReadOnlyTxn txn(_env);
+
+ ApplicationInfo info;
+ if(!_applications.get(txn, name, info))
{
throw ApplicationNotExistException(name);
}
- return i->second;
+ return info;
}
Ice::StringSeq
Database::getAllApplications(const string& expression)
{
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- StringApplicationInfoDict applications(connection, applicationsDbName);
- return getMatchingKeys<map<string, ApplicationInfo> >(toMap(applications), expression);
+ IceDB::ReadOnlyTxn txn(_env);
+ return getMatchingKeys<map<string, ApplicationInfo> >(toMap(txn, _applications), expression);
}
void
@@ -989,44 +981,37 @@ Database::setAdapterDirectProxy(const string& adapterId, const string& replicaGr
info.replicaGroupId = replicaGroupId;
bool updated = false;
- for(;;)
+ try
{
- try
+ IceDB::ReadWriteTxn txn(_env);
+
+ AdapterInfo oldInfo;
+ bool found = _adapters.get(txn, adapterId, oldInfo);
+ if(proxy)
{
- TransactionHolder txHolder(_connection);
- StringAdapterInfoDict::iterator i = _adapters.find(adapterId);
- if(proxy)
- {
- if(i == _adapters.end())
- {
- _adapters.put(StringAdapterInfoDict::value_type(adapterId, info));
- }
- else
- {
- updated = true;
- i.set(info);
- }
- }
- else
+ updated = found;
+
+ if(replicaGroupId != oldInfo.replicaGroupId)
{
- if(i == _adapters.end())
- {
- return;
- }
- _adapters.erase(i);
+ _adaptersByGroupId.del(txn, oldInfo.replicaGroupId, adapterId);
}
- dbSerial = updateSerial(_connection, adaptersDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
+ addAdapter(txn, info);
}
- catch(const DatabaseException& ex)
+ else
{
- halt(_communicator, ex);
+ if(!found)
+ {
+ return;
+ }
+ deleteAdapter(txn, oldInfo);
}
+ dbSerial = updateSerial(txn, adaptersDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
if(_traceLevels->adapter > 0)
@@ -1037,7 +1022,7 @@ Database::setAdapterDirectProxy(const string& adapterId, const string& replicaGr
{
out << " with replica group `" << replicaGroupId << "'";
}
- out << " (serial = `" << dbSerial << "')";
+ out << " (serial = `" << dbSerial << "')";
}
if(proxy)
@@ -1063,16 +1048,16 @@ Ice::ObjectPrx
Database::getAdapterDirectProxy(const string& id, const Ice::EncodingVersion& encoding, const Ice::ConnectionPtr& con,
const Ice::Context& ctx)
{
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- StringAdapterInfoDict adapters(connection, adaptersDbName);
- StringAdapterInfoDict::const_iterator i = adapters.find(id);
- if(i != adapters.end())
+ IceDB::ReadOnlyTxn txn(_env);
+
+ AdapterInfo info;
+ if(_adapters.get(txn, id, info))
{
- return i->second.proxy;
+ return info.proxy;
}
Ice::EndpointSeq endpoints;
- vector<AdapterInfo> infos = findByReplicaGroupId(adapters, id);
+ vector<AdapterInfo> infos = findByReplicaGroupId(txn, _adapters, _adaptersByGroupId, id);
filterAdapterInfos("", id, _pluginFacade, con, ctx, infos);
for(unsigned int i = 0; i < infos.size(); ++i)
{
@@ -1109,41 +1094,36 @@ Database::removeAdapter(const string& adapterId)
AdapterInfoSeq infos;
Ice::Long dbSerial = 0;
- for(;;)
+ try
{
- try
+ IceDB::ReadWriteTxn txn(_env);
+
+ AdapterInfo info;
+ if(_adapters.get(txn, adapterId, info))
{
- TransactionHolder txHolder(_connection);
- StringAdapterInfoDict::iterator i = _adapters.find(adapterId);
- if(i != _adapters.end())
+ deleteAdapter(txn, info);
+ }
+ else
+ {
+ infos = findByReplicaGroupId(txn, _adapters, _adaptersByGroupId, adapterId);
+ if(infos.empty())
{
- _adapters.erase(i);
+ throw AdapterNotExistException(adapterId);
}
- else
+ for(AdapterInfoSeq::iterator p = infos.begin(); p != infos.end(); ++p)
{
- infos = findByReplicaGroupId(_adapters, adapterId);
- if(infos.empty())
- {
- throw AdapterNotExistException(adapterId);
- }
- for(AdapterInfoSeq::iterator p = infos.begin(); p != infos.end(); ++p)
- {
- p->replicaGroupId.clear();
- _adapters.put(StringAdapterInfoDict::value_type(p->id, *p));
- }
+ _adaptersByGroupId.del(txn, p->replicaGroupId, p->id);
+ p->replicaGroupId.clear();
+ addAdapter(txn, *p);
}
- dbSerial = updateSerial(_connection, adaptersDbName);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
}
+ dbSerial = updateSerial(txn, adaptersDbName);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
if(_traceLevels->adapter > 0)
@@ -1254,13 +1234,13 @@ Database::getAdapterInfo(const string& id)
// Otherwise, we check the adapter endpoint table -- if there's an
// entry the adapter is managed by the registry itself.
//
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- StringAdapterInfoDict adapters(connection, adaptersDbName);
+ IceDB::ReadOnlyTxn txn(_env);
+
+ AdapterInfo info;
AdapterInfoSeq infos;
- StringAdapterInfoDict::const_iterator i = adapters.find(id);
- if(i != adapters.end())
+ if(_adapters.get(txn, id, info))
{
- infos.push_back(i->second);
+ infos.push_back(info);
}
else
{
@@ -1268,7 +1248,7 @@ Database::getAdapterInfo(const string& id)
// If it's not a regular object adapter, perhaps it's a replica
// group...
//
- infos = findByReplicaGroupId(adapters, id);
+ infos = findByReplicaGroupId(txn, _adapters, _adaptersByGroupId, id);
if(infos.empty())
{
throw AdapterNotExistException(id);
@@ -1310,13 +1290,13 @@ Database::getFilteredAdapterInfo(const string& id, const Ice::ConnectionPtr& con
// Otherwise, we check the adapter endpoint table -- if there's an
// entry the adapter is managed by the registry itself.
//
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- StringAdapterInfoDict adapters(connection, adaptersDbName);
+ IceDB::ReadOnlyTxn txn(_env);
+
+ AdapterInfo info;
AdapterInfoSeq infos;
- StringAdapterInfoDict::const_iterator i = adapters.find(id);
- if(i != adapters.end())
+ if(_adapters.get(txn, id, info))
{
- infos.push_back(i->second);
+ infos.push_back(info);
}
else
{
@@ -1324,7 +1304,7 @@ Database::getFilteredAdapterInfo(const string& id, const Ice::ConnectionPtr& con
// If it's not a regular object adapter, perhaps it's a replica
// group...
//
- infos = findByReplicaGroupId(adapters, id);
+ infos = findByReplicaGroupId(txn, _adapters, _adaptersByGroupId, id);
if(infos.empty())
{
throw AdapterNotExistException(id);
@@ -1393,18 +1373,25 @@ Database::getAllAdapters(const string& expression)
result.swap(ids);
set<string> groups;
- for(StringAdapterInfoDict::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)
+ IceDB::ReadOnlyTxn txn(_env);
+
+ string name;
+ AdapterInfo info;
+ AdapterMapROCursor cursor(_adapters, txn);
+ while(cursor.get(name, info, MDB_NEXT))
{
- if(expression.empty() || IceUtilInternal::match(p->first, expression, true))
+ if(expression.empty() || IceUtilInternal::match(name, expression, true))
{
- result.push_back(p->first);
+ result.push_back(name);
}
- string replicaGroupId = p->second.replicaGroupId;
+ string replicaGroupId = info.replicaGroupId;
if(!replicaGroupId.empty() && (expression.empty() || IceUtilInternal::match(replicaGroupId, expression, true)))
{
groups.insert(replicaGroupId);
}
}
+ cursor.close();
+
//
// COMPILERFIX: We're not using result.insert() here, this doesn't compile on Sun.
//
@@ -1432,29 +1419,22 @@ Database::addObject(const ObjectInfo& info)
}
Ice::Long dbSerial = 0;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- IdentityObjectInfoDict::const_iterator i = _objects.find(id);
- if(i != _objects.end())
- {
- throw ObjectExistsException(id);
- }
- _objects.put(IdentityObjectInfoDict::value_type(id, info));
- dbSerial = updateSerial(_connection, objectsDbName);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ if(_objects.find(txn, id))
{
- halt(_communicator, ex);
+ throw ObjectExistsException(id);
}
+ addObject(txn, info, false);
+ dbSerial = updateSerial(txn, objectsDbName);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
serial = _objectObserverTopic->objectAdded(dbSerial, info);
@@ -1484,33 +1464,25 @@ Database::addOrUpdateObject(const ObjectInfo& info, Ice::Long dbSerial)
}
bool update = false;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- IdentityObjectInfoDict::iterator i = _objects.find(id);
- if(i != _objects.end())
- {
- update = true;
- i.set(info);
- }
- else
- {
- _objects.put(IdentityObjectInfoDict::value_type(id, info));
- }
- dbSerial = updateSerial(_connection, objectsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ Ice::Identity k;
+ ObjectInfo v;
+ update = _objects.get(txn, k, v);
+ if(update)
{
- halt(_communicator, ex);
+ _objectsByType.del(txn, v.type, v.proxy->ice_getIdentity());
}
+ addObject(txn, info, false);
+ dbSerial = updateSerial(txn, objectsDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
if(update)
@@ -1549,32 +1521,25 @@ Database::removeObject(const Ice::Identity& id, Ice::Long dbSerial)
throw ex;
}
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- IdentityObjectInfoDict::iterator i = _objects.find(id);
- if(i == _objects.end())
- {
- ObjectNotRegisteredException ex;
- ex.id = id;
- throw ex;
- }
+ IceDB::ReadWriteTxn txn(_env);
- _objects.erase(i);
- dbSerial = updateSerial(_connection, objectsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ ObjectInfo info;
+ if(!_objects.get(txn, id, info))
{
- halt(_communicator, ex);
+ ObjectNotRegisteredException ex;
+ ex.id = id;
+ throw ex;
}
+ deleteObject(txn, info, false);
+ dbSerial = updateSerial(txn, objectsDbName, dbSerial);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
serial = _objectObserverTopic->objectRemoved(dbSerial, id);
@@ -1610,33 +1575,25 @@ Database::updateObject(const Ice::ObjectPrx& proxy)
ObjectInfo info;
Ice::Long dbSerial = 0;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- IdentityObjectInfoDict::iterator i = _objects.find(id);
- if(i == _objects.end())
- {
- ObjectNotRegisteredException ex;
- ex.id = id;
- throw ex;
- }
- info = i->second;
- info.proxy = proxy;
- i.set(info);
- dbSerial = updateSerial(_connection, objectsDbName);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ if(!_objects.get(txn, id, info))
{
- halt(_communicator, ex);
+ ObjectNotRegisteredException ex;
+ ex.id = id;
+ throw ex;
}
+ info.proxy = proxy;
+ addObject(txn, info, false);
+ dbSerial = updateSerial(txn, objectsDbName);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
serial = _objectObserverTopic->objectUpdated(dbSerial, info);
@@ -1653,26 +1610,24 @@ int
Database::addOrUpdateRegistryWellKnownObjects(const ObjectInfoSeq& objects)
{
Lock sync(*this);
- for(;;)
+ try
{
- try
+ IceDB::ReadWriteTxn txn(_env);
+ for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
{
- TransactionHolder txHolder(_connection);
- for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
+ Ice::Identity id = p->proxy->ice_getIdentity();
+ ObjectInfo info;
+ if(_objects.get(txn, id, info))
{
- _objects.put(IdentityObjectInfoDict::value_type(p->proxy->ice_getIdentity(), *p));
+ _objectsByType.del(txn, info.type, id);
}
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
+ addObject(txn, *p, false);
}
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
return _objectObserverTopic->wellKnownObjectsAddedOrUpdated(objects);
}
@@ -1681,26 +1636,23 @@ int
Database::removeRegistryWellKnownObjects(const ObjectInfoSeq& objects)
{
Lock sync(*this);
- for(;;)
+ try
{
- try
+ IceDB::ReadWriteTxn txn(_env);
+ for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
{
- TransactionHolder txHolder(_connection);
- for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
+ Ice::Identity id = p->proxy->ice_getIdentity();
+ ObjectInfo info;
+ if(_objects.get(txn, id, info))
{
- _objects.erase(p->proxy->ice_getIdentity());
+ deleteObject(txn, info, false);
}
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
}
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
return _objectObserverTopic->wellKnownObjectsRemoved(objects);
}
@@ -1719,16 +1671,15 @@ Database::getObjectProxy(const Ice::Identity& id)
{
}
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- IdentityObjectInfoDict::const_iterator i = objects.find(id);
- if(i == objects.end())
+ IceDB::ReadOnlyTxn txn(_env);
+ ObjectInfo info;
+ if(!_objects.get(txn, id, info))
{
ObjectNotRegisteredException ex;
ex.id = id;
throw ex;
}
- return i->second.proxy;
+ return info.proxy;
}
Ice::ObjectPrx
@@ -1780,9 +1731,8 @@ Database::getObjectsByType(const string& type, const Ice::ConnectionPtr& con, co
{
Ice::ObjectProxySeq proxies = _objectCache.getObjectsByType(type);
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- vector<ObjectInfo> infos = findByType(objects, type);
+ IceDB::ReadOnlyTxn txn(_env);
+ vector<ObjectInfo> infos = findByType(txn, _objects, _objectsByType, type);
for(unsigned int i = 0; i < infos.size(); ++i)
{
proxies.push_back(infos[i].proxy);
@@ -1814,14 +1764,13 @@ Database::getObjectInfo(const Ice::Identity& id)
{
}
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- IdentityObjectInfoDict::const_iterator i = objects.find(id);
- if(i == objects.end())
+ IceDB::ReadOnlyTxn txn(_env);
+ ObjectInfo info;
+ if(!_objects.get(txn, id, info))
{
throw ObjectNotRegisteredException(id);
}
- return i->second;
+ return info;
}
ObjectInfoSeq
@@ -1829,13 +1778,16 @@ Database::getAllObjectInfos(const string& expression)
{
ObjectInfoSeq infos = _objectCache.getAll(expression);
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- for(IdentityObjectInfoDict::const_iterator p = objects.begin(); p != objects.end(); ++p)
+ IceDB::ReadOnlyTxn txn(_env);
+
+ Ice::Identity id;
+ ObjectInfo info;
+ ObjectsMapROCursor cursor(_objects, txn);
+ while(cursor.get(id, info, MDB_NEXT))
{
- if(expression.empty() || IceUtilInternal::match(_communicator->identityToString(p->first), expression, true))
+ if(expression.empty() || IceUtilInternal::match(_communicator->identityToString(id), expression, true))
{
- infos.push_back(p->second);
+ infos.push_back(info);
}
}
return infos;
@@ -1846,9 +1798,8 @@ Database::getObjectInfosByType(const string& type)
{
ObjectInfoSeq infos = _objectCache.getAllByType(type);
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict objects(connection, objectsDbName);
- ObjectInfoSeq dbInfos = findByType(objects, type);
+ IceDB::ReadOnlyTxn txn(_env);
+ ObjectInfoSeq dbInfos = findByType(txn, _objects, _objectsByType, type);
for(unsigned int i = 0; i < dbInfos.size(); ++i)
{
infos.push_back(dbInfos[i]);
@@ -1862,31 +1813,26 @@ Database::addInternalObject(const ObjectInfo& info, bool replace)
Lock sync(*this);
const Ice::Identity id = info.proxy->ice_getIdentity();
- for(;;)
+ try
{
- try
+ IceDB::ReadWriteTxn txn(_env);
+
+ ObjectInfo oldInfo;
+ if(_internalObjects.get(txn, id, oldInfo))
{
- TransactionHolder txHolder(_connection);
if(!replace)
{
- IdentityObjectInfoDict::const_iterator i = _internalObjects.find(id);
- if(i != _internalObjects.end())
- {
- throw ObjectExistsException(id);
- }
+ throw ObjectExistsException(id);
}
- _internalObjects.put(IdentityObjectInfoDict::value_type(id, info));
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
+ _internalObjectsByType.del(txn, oldInfo.type, id);
}
+ addObject(txn, info, true);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
}
@@ -1895,30 +1841,24 @@ Database::removeInternalObject(const Ice::Identity& id)
{
Lock sync(*this);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txHolder(_connection);
- IdentityObjectInfoDict::iterator i = _internalObjects.find(id);
- if(i == _internalObjects.end())
- {
- ObjectNotRegisteredException ex;
- ex.id = id;
- throw ex;
- }
- _internalObjects.erase(i);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ IceDB::ReadWriteTxn txn(_env);
+
+ ObjectInfo info;
+ if(!_internalObjects.get(txn, id, info))
{
- halt(_communicator, ex);
+ ObjectNotRegisteredException ex;
+ ex.id = id;
+ throw ex;
}
+ deleteObject(txn, info, true);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
}
}
@@ -1927,9 +1867,8 @@ Database::getInternalObjectsByType(const string& type)
{
Ice::ObjectProxySeq proxies;
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
- IdentityObjectInfoDict internalObjects(connection, internalObjectsDbName);
- vector<ObjectInfo> infos = findByType(internalObjects, type);
+ IceDB::ReadOnlyTxn txn(_env);
+ vector<ObjectInfo> infos = findByType(txn, _internalObjects, _internalObjectsByType, type);
for(unsigned int i = 0; i < infos.size(); ++i)
{
proxies.push_back(infos[i].proxy);
@@ -1938,7 +1877,7 @@ Database::getInternalObjectsByType(const string& type)
}
void
-Database::checkForAddition(const ApplicationHelper& app, const ConnectionPtr& connection)
+Database::checkForAddition(const ApplicationHelper& app, const IceDB::ReadWriteTxn& txn)
{
set<string> serverIds;
set<string> adapterIds;
@@ -1949,18 +1888,16 @@ Database::checkForAddition(const ApplicationHelper& app, const ConnectionPtr& co
for_each(serverIds.begin(), serverIds.end(), objFunc(*this, &Database::checkServerForAddition));
if(!adapterIds.empty())
{
- StringAdapterInfoDict adapters(connection, adaptersDbName);
for(set<string>::const_iterator p = adapterIds.begin(); p != adapterIds.end(); ++p)
{
- checkAdapterForAddition(*p, adapters);
+ checkAdapterForAddition(*p, txn);
}
}
if(!objectIds.empty())
{
- IdentityObjectInfoDict objects(connection, objectsDbName);
for(set<Ice::Identity>::const_iterator p = objectIds.begin(); p != objectIds.end(); ++p)
{
- checkObjectForAddition(*p, objects);
+ checkObjectForAddition(*p, txn);
}
}
@@ -1973,7 +1910,7 @@ Database::checkForAddition(const ApplicationHelper& app, const ConnectionPtr& co
void
Database::checkForUpdate(const ApplicationHelper& origApp,
const ApplicationHelper& newApp,
- const ConnectionPtr& connection)
+ const IceDB::ReadWriteTxn& txn)
{
set<string> oldSvrs, newSvrs;
set<string> oldAdpts, newAdpts;
@@ -1990,10 +1927,9 @@ Database::checkForUpdate(const ApplicationHelper& origApp,
set_difference(newAdpts.begin(), newAdpts.end(), oldAdpts.begin(), oldAdpts.end(), back_inserter(addedAdpts));
if(!addedAdpts.empty())
{
- StringAdapterInfoDict adapters(connection, adaptersDbName);
for(Ice::StringSeq::const_iterator p = addedAdpts.begin(); p != addedAdpts.end(); ++p)
{
- checkAdapterForAddition(*p, adapters);
+ checkAdapterForAddition(*p, txn);
}
}
@@ -2001,10 +1937,9 @@ Database::checkForUpdate(const ApplicationHelper& origApp,
set_difference(newObjs.begin(), newObjs.end(), oldObjs.begin(), oldObjs.end(), back_inserter(addedObjs));
if(!addedObjs.empty())
{
- IdentityObjectInfoDict objects(connection, objectsDbName);
for(vector<Ice::Identity>::const_iterator p = addedObjs.begin(); p != addedObjs.end(); ++p)
{
- checkObjectForAddition(*p, objects);
+ checkObjectForAddition(*p, txn);
}
}
@@ -2054,7 +1989,7 @@ Database::checkServerForAddition(const string& id)
}
void
-Database::checkAdapterForAddition(const string& id, const StringAdapterInfoDict& adapters)
+Database::checkAdapterForAddition(const string& id, const IceDB::ReadWriteTxn& txn)
{
bool found = false;
if(_adapterCache.has(id))
@@ -2063,14 +1998,13 @@ Database::checkAdapterForAddition(const string& id, const StringAdapterInfoDict&
}
else
{
- StringAdapterInfoDict::const_iterator i = adapters.find(id);
- if(i != adapters.end())
+ if(_adapters.find(txn, id))
{
found = true;
}
else
{
- if(!findByReplicaGroupId(adapters, id).empty())
+ if(!findByReplicaGroupId(txn, _adapters,_adaptersByGroupId, id).empty())
{
found = true;
}
@@ -2086,7 +2020,8 @@ Database::checkAdapterForAddition(const string& id, const StringAdapterInfoDict&
}
void
-Database::checkObjectForAddition(const Ice::Identity& objectId, const IdentityObjectInfoDict& objects)
+Database::checkObjectForAddition(const Ice::Identity& objectId,
+ const IceDB::ReadWriteTxn& txn)
{
bool found = false;
if(_objectCache.has(objectId) || _allocatableObjectCache.has(objectId))
@@ -2095,8 +2030,7 @@ Database::checkObjectForAddition(const Ice::Identity& objectId, const IdentityOb
}
else
{
- IdentityObjectInfoDict::const_iterator i = objects.find(objectId);
- if(i != objects.end())
+ if(_objects.find(txn, objectId))
{
found = true;
}
@@ -2342,57 +2276,19 @@ Database::reload(const ApplicationHelper& oldApp,
}
Ice::Long
-Database::saveApplication(const ApplicationInfo& info, const ConnectionPtr& connection, Ice::Long dbSerial)
+Database::saveApplication(const ApplicationInfo& info, const IceDB::ReadWriteTxn& txn, Ice::Long dbSerial)
{
assert(dbSerial != 0 || _master);
- for(;;)
- {
- try
- {
- StringApplicationInfoDict applications(connection, applicationsDbName);
- TransactionHolder txHolder(connection);
- applications.put(StringApplicationInfoDict::value_type(info.descriptor.name, info));
- dbSerial = updateSerial(connection, applicationsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
- }
- }
- return dbSerial;
+ _applications.put(txn, info.descriptor.name, info);
+ return updateSerial(txn, applicationsDbName, dbSerial);
}
Ice::Long
-Database::removeApplication(const string& name, const ConnectionPtr& connection, Ice::Long dbSerial)
+Database::removeApplication(const string& name, const IceDB::ReadWriteTxn& txn, Ice::Long dbSerial)
{
assert(dbSerial != 0 || _master);
- for(;;)
- {
- try
- {
- StringApplicationInfoDict applications(connection, applicationsDbName);
- TransactionHolder txHolder(connection);
- applications.erase(name);
- dbSerial = updateSerial(connection, applicationsDbName, dbSerial);
- txHolder.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_communicator, ex);
- }
- }
- return dbSerial;
+ _applications.del(txn, name);
+ return updateSerial(txn, applicationsDbName, dbSerial);
}
void
@@ -2598,7 +2494,6 @@ Database::finishApplicationUpdate(const ApplicationUpdateInfo& update,
Ice::Long dbSerial)
{
const ApplicationDescriptor& newDesc = helper.getDefinition();
- ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
ServerEntrySeq entries;
int serial = 0;
@@ -2610,7 +2505,10 @@ Database::finishApplicationUpdate(const ApplicationUpdateInfo& update,
}
Lock sync(*this);
- checkForUpdate(previous, helper, connection);
+
+ IceDB::ReadWriteTxn txn(_env);
+
+ checkForUpdate(previous, helper, txn);
reload(previous, helper, entries, oldApp.uuid, oldApp.revision + 1, noRestart);
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
@@ -2620,7 +2518,9 @@ Database::finishApplicationUpdate(const ApplicationUpdateInfo& update,
info.updateUser = update.updateUser;
info.revision = update.revision;
info.descriptor = newDesc;
- dbSerial = saveApplication(info, connection, dbSerial);
+ dbSerial = saveApplication(info, txn, dbSerial);
+
+ txn.commit();
serial = _applicationObserverTopic->applicationUpdated(dbSerial, update);
}
@@ -2629,6 +2529,10 @@ Database::finishApplicationUpdate(const ApplicationUpdateInfo& update,
finishUpdating(update.descriptor.name);
throw;
}
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
+ }
_applicationObserverTopic->waitForSyncedSubscribers(serial); // Wait for replicas to be updated.
@@ -2670,7 +2574,18 @@ Database::finishApplicationUpdate(const ApplicationUpdateInfo& update,
ApplicationInfo info = oldApp;
info.revision = update.revision + 1;
- dbSerial = saveApplication(info, connection);
+
+ try
+ {
+ IceDB::ReadWriteTxn txn(_env);
+ dbSerial = saveApplication(info, txn);
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_communicator, ex);
+ }
+
reload(previous, helper, entries, info.uuid, info.revision, noRestart);
newUpdate.updateTime = IceUtil::Time::now().toMilliSeconds();
@@ -2729,3 +2644,114 @@ Database::finishUpdating(const string& name)
_updating.erase(p);
notifyAll();
}
+
+Ice::Long
+Database::getSerial(const IceDB::Txn& txn, const string& dbName)
+{
+ Ice::Long serial;
+ if(!_serials.get(txn, dbName, serial))
+ {
+ return 1;
+ }
+ return serial;
+}
+
+Ice::Long
+Database::updateSerial(const IceDB::ReadWriteTxn& txn, const string& dbName, Ice::Long serial)
+{
+ if(serial == -1) // Master doesn't support serials.
+ {
+ return -1;
+ }
+
+ //
+ // If a serial number is provided, just update the serial number from the database,
+ // otherwise if the serial is 0, we increment the serial from the database.
+ //
+ Ice::Long dbSerial;
+ if(!_serials.get(txn, dbName, dbSerial))
+ {
+ _serials.put(txn, dbName, serial == 0 ? 1 : serial);
+ return 1;
+ }
+ else
+ {
+ dbSerial = (serial == 0 ? dbSerial + 1 : serial);
+ _serials.put(txn, dbName, dbSerial);
+ return dbSerial;
+ }
+}
+
+void
+Database::addAdapter(const IceDB::ReadWriteTxn& txn, const AdapterInfo& info)
+{
+ try
+ {
+ _adapters.put(txn, info.id, info);
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ throw Ice::InvalidAdapterException("adapter name is too long: `" + info.id + "'");
+ }
+ try
+ {
+ _adaptersByGroupId.put(txn, info.replicaGroupId, info.id);
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ throw Ice::InvalidAdapterException("replica group id is too long: `" + info.replicaGroupId + "'");
+ }
+}
+
+void
+Database::deleteAdapter(const IceDB::ReadWriteTxn& txn, const AdapterInfo& info)
+{
+
+ _adapters.del(txn, info.id);
+ _adaptersByGroupId.del(txn, info.replicaGroupId, info.id);
+}
+
+void
+Database::addObject(const IceDB::ReadWriteTxn& txn, const ObjectInfo& info, bool internal)
+{
+ if(internal)
+ {
+ _internalObjects.put(txn, info.proxy->ice_getIdentity(), info);
+ _internalObjectsByType.put(txn, info.type, info.proxy->ice_getIdentity());
+ }
+ else
+ {
+ try
+ {
+ _objects.put(txn, info.proxy->ice_getIdentity(), info);
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ throw DeploymentException("object identity is too long: `" +
+ _communicator->identityToString(info.proxy->ice_getIdentity()) + "'");
+ }
+ try
+ {
+ _objectsByType.put(txn, info.type, info.proxy->ice_getIdentity());
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ throw DeploymentException("object type is too long: `" + info.type + "'");
+ }
+ }
+}
+
+void
+Database::deleteObject(const IceDB::ReadWriteTxn& txn, const ObjectInfo& info, bool internal)
+{
+ if(internal)
+ {
+ _internalObjects.del(txn, info.proxy->ice_getIdentity());
+ _internalObjectsByType.del(txn, info.type, info.proxy->ice_getIdentity());
+ }
+ else
+ {
+ _objects.del(txn, info.proxy->ice_getIdentity());
+ _objectsByType.del(txn, info.type, info.proxy->ice_getIdentity());
+ }
+}
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index c6105901940..fd1cf7d8b5c 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -12,8 +12,8 @@
#include <IceUtil/Mutex.h>
#include <IceUtil/Shared.h>
+#include <IceUtil/FileUtil.h>
#include <Ice/CommunicatorF.h>
-#include <Freeze/Freeze.h>
#include <IceGrid/Admin.h>
#include <IceGrid/Internal.h>
#include <IceGrid/ServerCache.h>
@@ -25,9 +25,7 @@
#include <IceGrid/Topics.h>
#include <IceGrid/PluginFacadeI.h>
-#include <IceGrid/StringApplicationInfoDict.h>
-#include <IceGrid/StringAdapterInfoDict.h>
-#include <IceGrid/IdentityObjectInfoDict.h>
+#include <IceDB/IceDB.h>
namespace IceGrid
{
@@ -48,6 +46,17 @@ typedef IceUtil::Handle<ServerEntry> ServerEntryPtr;
class ApplicationHelper;
+typedef IceDB::Dbi<std::string, IceGrid::ApplicationInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ StringApplicationInfoMap;
+
+typedef IceDB::Dbi<Ice::Identity, IceGrid::ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr> IdentityObjectInfoMap;
+typedef IceDB::Dbi<std::string, Ice::Identity, IceDB::IceContext, Ice::OutputStreamPtr> StringIdentityMap;
+
+typedef IceDB::Dbi<std::string, IceGrid::AdapterInfo, IceDB::IceContext, Ice::OutputStreamPtr> StringAdapterInfoMap;
+typedef IceDB::Dbi<std::string, std::string, IceDB::IceContext, Ice::OutputStreamPtr> StringStringMap;
+
+typedef IceDB::Dbi<std::string, Ice::Long, IceDB::IceContext, Ice::OutputStreamPtr> StringLongMap;
+
class Database : public IceUtil::Shared, public IceUtil::Monitor<IceUtil::Mutex>
{
public:
@@ -58,9 +67,9 @@ public:
#endif
- Database(const Ice::ObjectAdapterPtr&, const IceStorm::TopicManagerPrx&, const std::string&,
- const TraceLevelsPtr&, const RegistryInfo&, const Freeze::ConnectionPtr&, const std::string&, bool);
-
+ Database(const Ice::ObjectAdapterPtr&, const IceStorm::TopicManagerPrx&, const std::string&, const TraceLevelsPtr&,
+ const RegistryInfo&, bool);
+
std::string getInstanceName() const;
bool isReadOnly() const { return _readonly; }
const TraceLevelsPtr& getTraceLevels() const { return _traceLevels; }
@@ -78,9 +87,9 @@ public:
void syncAdapters(const AdapterInfoSeq&, Ice::Long);
void syncObjects(const ObjectInfoSeq&, Ice::Long);
- ApplicationInfoSeq getApplications(Ice::Long&) const;
- AdapterInfoSeq getAdapters(Ice::Long&) const;
- ObjectInfoSeq getObjects(Ice::Long&) const;
+ ApplicationInfoSeq getApplications(Ice::Long&);
+ AdapterInfoSeq getAdapters(Ice::Long&);
+ ObjectInfoSeq getObjects(Ice::Long&);
StringLongDict getSerials() const;
@@ -98,7 +107,7 @@ public:
ReplicaCache& getReplicaCache();
ReplicaEntryPtr getReplica(const std::string&) const;
-
+
ServerCache& getServerCache();
ServerEntryPtr getServer(const std::string&) const;
@@ -106,16 +115,16 @@ public:
AllocatableObjectEntryPtr getAllocatableObject(const Ice::Identity&) const;
void setAdapterDirectProxy(const std::string&, const std::string&, const Ice::ObjectPrx&, Ice::Long = 0);
- Ice::ObjectPrx getAdapterDirectProxy(const std::string&, const Ice::EncodingVersion&, const Ice::ConnectionPtr&,
+ Ice::ObjectPrx getAdapterDirectProxy(const std::string&, const Ice::EncodingVersion&, const Ice::ConnectionPtr&,
const Ice::Context&);
void removeAdapter(const std::string&);
AdapterPrx getAdapterProxy(const std::string&, const std::string&, bool);
- void getLocatorAdapterInfo(const std::string&, const Ice::ConnectionPtr&, const Ice::Context&,
- LocatorAdapterInfoSeq&, int&, bool&, bool&,
+ void getLocatorAdapterInfo(const std::string&, const Ice::ConnectionPtr&, const Ice::Context&,
+ LocatorAdapterInfoSeq&, int&, bool&, bool&,
const std::set<std::string>& = std::set<std::string>());
- bool addAdapterSyncCallback(const std::string&, const SynchronizationCallbackPtr&,
+ bool addAdapterSyncCallback(const std::string&, const SynchronizationCallbackPtr&,
const std::set<std::string>& = std::set<std::string>());
std::vector<std::pair<std::string, AdapterPrx> > getAdapters(const std::string&, int&, bool&);
@@ -140,7 +149,7 @@ public:
Ice::ObjectPrx getObjectByTypeOnLeastLoadedNode(const std::string&, LoadSample,
const Ice::ConnectionPtr& = Ice::ConnectionPtr(),
const Ice::Context& = Ice::Context());
- Ice::ObjectProxySeq getObjectsByType(const std::string&,
+ Ice::ObjectProxySeq getObjectsByType(const std::string&,
const Ice::ConnectionPtr& = Ice::ConnectionPtr(),
const Ice::Context& = Ice::Context());
ObjectInfo getObjectInfo(const Ice::Identity&);
@@ -153,13 +162,13 @@ public:
private:
- void checkForAddition(const ApplicationHelper&, const Freeze::ConnectionPtr&);
- void checkForUpdate(const ApplicationHelper&, const ApplicationHelper&, const Freeze::ConnectionPtr&);
+ void checkForAddition(const ApplicationHelper&, const IceDB::ReadWriteTxn&);
+ void checkForUpdate(const ApplicationHelper&, const ApplicationHelper&, const IceDB::ReadWriteTxn&);
void checkForRemove(const ApplicationHelper&);
void checkServerForAddition(const std::string&);
- void checkAdapterForAddition(const std::string&, const StringAdapterInfoDict&);
- void checkObjectForAddition(const Ice::Identity&, const IdentityObjectInfoDict&);
+ void checkAdapterForAddition(const std::string&, const IceDB::ReadWriteTxn&);
+ void checkObjectForAddition(const Ice::Identity&, const IceDB::ReadWriteTxn&);
void checkReplicaGroupExists(const std::string&);
void checkReplicaGroupForRemove(const std::string&);
@@ -169,8 +178,8 @@ private:
void checkUpdate(const ApplicationHelper&, const ApplicationHelper&, const std::string&, int, bool);
- Ice::Long saveApplication(const ApplicationInfo&, const Freeze::ConnectionPtr&, Ice::Long = 0);
- Ice::Long removeApplication(const std::string&, const Freeze::ConnectionPtr&, Ice::Long = 0);
+ Ice::Long saveApplication(const ApplicationInfo&, const IceDB::ReadWriteTxn&, Ice::Long = 0);
+ Ice::Long removeApplication(const std::string&, const IceDB::ReadWriteTxn&, Ice::Long = 0);
void finishApplicationUpdate(const ApplicationUpdateInfo&, const ApplicationInfo&, const ApplicationHelper&,
const ApplicationHelper&, AdminSessionI*, bool, Ice::Long = 0);
@@ -181,6 +190,15 @@ private:
void startUpdating(const std::string&, const std::string&, int);
void finishUpdating(const std::string&);
+ Ice::Long getSerial(const IceDB::Txn&, const std::string&);
+ Ice::Long updateSerial(const IceDB::ReadWriteTxn&, const std::string&, Ice::Long = 0);
+
+ void addAdapter(const IceDB::ReadWriteTxn&, const AdapterInfo&);
+ void deleteAdapter(const IceDB::ReadWriteTxn&, const AdapterInfo&);
+
+ void addObject(const IceDB::ReadWriteTxn&, const ObjectInfo&, bool);
+ void deleteObject(const IceDB::ReadWriteTxn&, const ObjectInfo&, bool);
+
friend struct AddComponent;
static const std::string _applicationDbName;
@@ -188,7 +206,7 @@ private:
static const std::string _internalObjectDbName;
static const std::string _adapterDbName;
static const std::string _replicaGroupDbName;
-
+
const Ice::CommunicatorPtr _communicator;
const Ice::ObjectAdapterPtr _internalAdapter;
const IceStorm::TopicManagerPrx _topicManager;
@@ -210,16 +228,24 @@ private:
AdapterObserverTopicPtr _adapterObserverTopic;
ObjectObserverTopicPtr _objectObserverTopic;
- Freeze::ConnectionPtr _connection;
- const std::string _envName;
-
- StringApplicationInfoDict _applications;
- StringAdapterInfoDict _adapters;
- IdentityObjectInfoDict _objects;
- IdentityObjectInfoDict _internalObjects;
-
+ IceUtilInternal::FileLock _dbLock;
+ IceDB::Env _env;
+
+ StringApplicationInfoMap _applications;
+
+ StringAdapterInfoMap _adapters;
+ StringStringMap _adaptersByGroupId;
+
+ IdentityObjectInfoMap _objects;
+ StringIdentityMap _objectsByType;
+
+ IdentityObjectInfoMap _internalObjects;
+ StringIdentityMap _internalObjectsByType;
+
+ StringLongMap _serials;
+
RegistryPluginFacadeIPtr _pluginFacade;
-
+
AdminSessionI* _lock;
std::string _lockUserId;
diff --git a/cpp/src/IceGrid/IceGridDB.cpp b/cpp/src/IceGrid/IceGridDB.cpp
new file mode 100644
index 00000000000..bbdb2b0666a
--- /dev/null
+++ b/cpp/src/IceGrid/IceGridDB.cpp
@@ -0,0 +1,530 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceUtil/Options.h>
+#include <Ice/Application.h>
+#include <IceDB/IceDB.h>
+#include <IceGrid/Admin.h>
+#include <IceGrid/DBTypes.h>
+#include <IcePatch2Lib/Util.h>
+#include <IceUtil/DisableWarnings.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceGrid;
+
+namespace
+{
+
+bool skipFilter = false;
+
+class ServerDescriptorI : public IceGrid::ServerDescriptor
+{
+public:
+
+ ServerDescriptorI(const string& serverVersion) :
+ _serverVersion(serverVersion)
+ {
+ }
+
+protected:
+
+ virtual void ice_postUnmarshal()
+ {
+ iceVersion = _serverVersion;
+ }
+
+private:
+
+ string _serverVersion;
+};
+
+class IceBoxDescriptorI : public IceGrid::IceBoxDescriptor
+{
+public:
+
+ IceBoxDescriptorI(const string& serverVersion) :
+ _serverVersion(serverVersion)
+ {
+ }
+
+protected:
+
+ virtual void ice_postUnmarshal()
+ {
+ iceVersion = _serverVersion;
+ }
+
+private:
+
+ string _serverVersion;
+};
+
+class ObjectFactoryI : public Ice::ObjectFactory
+{
+public:
+
+ ObjectFactoryI(const string& serverVersion) :
+ _serverVersion(serverVersion)
+ {
+ }
+
+ virtual ObjectPtr create(const string& type)
+ {
+ if(type == "::IceGrid::ServerDescriptor")
+ {
+ return new ServerDescriptorI(_serverVersion);
+ }
+ else if(type == "::IceGrid::IceBoxDescriptor")
+ {
+ return new IceBoxDescriptorI(_serverVersion);
+ }
+ return 0;
+ }
+
+ virtual void destroy()
+ {
+ }
+
+private:
+
+ string _serverVersion;
+};
+
+}
+
+namespace Ice
+{
+template<>
+struct StreamReader< ::IceGrid::ReplicaGroupDescriptor, Ice::InputStream>
+{
+ static void read(Ice::InputStream* __is, ::IceGrid::ReplicaGroupDescriptor& v)
+ {
+ __is->read(v.id);
+ __is->read(v.loadBalancing);
+ __is->read(v.proxyOptions);
+ __is->read(v.objects);
+ __is->read(v.description);
+ if(!skipFilter)
+ {
+ __is->read(v.filter);
+ }
+ }
+};
+}
+
+class Client : public Application
+{
+public:
+
+ void usage();
+ virtual int run(int, char*[]);
+};
+
+#ifdef _WIN32
+
+int
+wmain(int argc, wchar_t* argv[])
+
+#else
+
+int
+main(int argc, char* argv[])
+
+#endif
+{
+ Client app;
+ return app.main(argc, argv);
+}
+
+void
+Client::usage()
+{
+ cerr << "Usage: " << appName() << " <options>\n";
+ cerr <<
+ "Options:\n"
+ "-h, --help Show this message.\n"
+ "-v, --version Display version.\n"
+ "--import FILE Import database from FILE.\n"
+ "--export FILE Export database to FILE.\n"
+ "--dbhome DIR The database directory.\n"
+ "--server-version VER Ice version for IceGrid servers (import only).\n"
+ "-d, --debug Print debug messages."
+ ;
+}
+
+int
+Client::run(int argc, char* argv[])
+{
+ IceUtilInternal::Options opts;
+ opts.addOpt("h", "help");
+ opts.addOpt("v", "version");
+ opts.addOpt("d", "debug");
+ opts.addOpt("", "import", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "export", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "dbhome", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "server-version", IceUtilInternal::Options::NeedArg);
+
+ vector<string> args;
+ try
+ {
+ args = opts.parse(argc, const_cast<const char**>(argv));
+ }
+ catch(const IceUtilInternal::BadOptException& e)
+ {
+ cerr << e.reason << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+ if(!args.empty())
+ {
+ cerr << argv[0] << ": too many arguments" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ if(opts.isSet("help"))
+ {
+ usage();
+ return EXIT_SUCCESS;
+ }
+
+ if(opts.isSet("version"))
+ {
+ cout << ICE_STRING_VERSION << endl;
+ return EXIT_SUCCESS;
+ }
+
+ if((!opts.isSet("import") && !opts.isSet("export")) || (opts.isSet("import") && opts.isSet("export")))
+ {
+ cerr << "Either --import or --export must be set" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ if(!opts.isSet("dbhome"))
+ {
+ cerr << "Database home must be specified" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ bool debug = opts.isSet("debug");
+ bool import = opts.isSet("import");
+ string dbFile = opts.optArg(import ? "import" : "export");
+ string dbPath = opts.optArg("dbhome");
+ string serverVersion = opts.optArg("server-version");
+
+ try
+ {
+ IceGrid::AllData data;
+
+ IceDB::IceContext dbContext;
+ dbContext.communicator = communicator();
+ dbContext.encoding = { 1, 1 };
+
+ if(import)
+ {
+ cout << "Importing database to directory `" << dbPath << "' from file `" << dbFile << "'" << endl;
+
+ if(!IceUtilInternal::directoryExists(dbPath))
+ {
+ cerr << "Output directory does not exist: " << dbPath << endl;
+ return EXIT_FAILURE;
+ }
+
+ StringSeq files = IcePatch2Internal::readDirectory(dbPath);
+ if(!files.empty())
+ {
+ cerr << "Output directory is not empty: " << dbPath << endl;
+ return EXIT_FAILURE;
+ }
+
+ ifstream fs(dbFile, ios::binary);
+ if(fs.fail())
+ {
+ cerr << "Could not open input file: " << strerror(errno) << endl;
+ return EXIT_FAILURE;
+ }
+ fs.unsetf(ios::skipws);
+
+ fs.seekg(0, ios::end);
+ streampos fileSize = fs.tellg();
+ fs.seekg(0, ios::beg);
+
+ vector<Ice::Byte> buf;
+ buf.reserve(static_cast<size_t>(fileSize));
+ buf.insert(buf.begin(), istream_iterator<Ice::Byte>(fs), istream_iterator<Ice::Byte>());
+
+ fs.close();
+
+ if(!serverVersion.empty())
+ {
+ ObjectFactoryPtr factory = new ObjectFactoryI(serverVersion);
+ communicator()->addObjectFactory(factory, "::IceGrid::ServerDescriptor");
+ communicator()->addObjectFactory(factory, "::IceGrid::IceBoxDescriptor");
+ }
+
+ Ice::InputStreamPtr stream = Ice::wrapInputStream(communicator(), buf, dbContext.encoding);
+
+ string type;
+ int version;
+
+ stream->read(type);
+ if(type != "IceGrid")
+ {
+ cerr << "Incorrect input file type: " << type << endl;
+ return EXIT_FAILURE;
+ }
+ stream->read(version);
+ if(version / 100 == 305)
+ {
+ if(debug)
+ {
+ cout << "Reading Ice 3.5.x data" << endl;
+ }
+ skipFilter = true;
+ }
+ stream->read(data);
+
+ {
+ IceDB::Env env(dbPath, 5);
+ IceDB::ReadWriteTxn txn(env);
+
+ if(debug)
+ {
+ cout << "Writing Applications Map:" << endl;
+ }
+
+ IceDB::Dbi<string, ApplicationInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ apps(txn, "applications", dbContext, MDB_CREATE);
+
+ for(ApplicationInfoSeq::const_iterator p = data.applications.begin(); p != data.applications.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " NAME = " << p->descriptor.name << endl;
+ }
+ apps.put(txn, p->descriptor.name, *p);
+ }
+
+ if(debug)
+ {
+ cout << "Writing Adapters Map:" << endl;
+ }
+
+ IceDB::Dbi<string, AdapterInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ adpts(txn, "adapters", dbContext, MDB_CREATE);
+
+ for(AdapterInfoSeq::const_iterator p = data.adapters.begin(); p != data.adapters.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " NAME = " << p->id << endl;
+ }
+ adpts.put(txn, p->id, *p);
+ }
+
+ if(debug)
+ {
+ cout << "Writing Objects Map:" << endl;
+ }
+
+ IceDB::Dbi<Identity, ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ objs(txn, "objects", dbContext, MDB_CREATE);
+
+ for(ObjectInfoSeq::const_iterator p = data.objects.begin(); p != data.objects.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " NAME = " << communicator()->identityToString(p->proxy->ice_getIdentity()) << endl;
+ }
+ objs.put(txn, p->proxy->ice_getIdentity(), *p);
+ }
+
+ if(debug)
+ {
+ cout << "Writing Internal Objects Map:" << endl;
+ }
+
+ IceDB::Dbi<Identity, ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ internalObjs(txn, "internal-objects", dbContext, MDB_CREATE);
+
+ for(ObjectInfoSeq::const_iterator p = data.internalObjects.begin(); p != data.internalObjects.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " NAME = " << communicator()->identityToString(p->proxy->ice_getIdentity()) << endl;
+ }
+ internalObjs.put(txn, p->proxy->ice_getIdentity(), *p);
+ }
+
+ if(debug)
+ {
+ cout << "Writing Serials Map:" << endl;
+ }
+
+ IceDB::Dbi<string, Long, IceDB::IceContext, Ice::OutputStreamPtr>
+ srls(txn, "serials", dbContext, MDB_CREATE);
+
+ for(StringLongDict::const_iterator p = data.serials.begin(); p != data.serials.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " NAME = " << p->first << endl;
+ }
+ srls.put(txn, p->first, p->second);
+ }
+
+ txn.commit();
+ env.close();
+ }
+ }
+ else
+ {
+ cout << "Exporting database from directory `" << dbPath << "' to file `" << dbFile << "'" << endl;
+
+ {
+ IceDB::Env env(dbPath, 5);
+ IceDB::ReadOnlyTxn txn(env);
+
+ if(debug)
+ {
+ cout << "Reading Application Map:" << endl;
+ }
+
+ IceDB::Dbi<string, IceGrid::ApplicationInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ applications(txn, "applications", dbContext, 0);
+
+ string name;
+ ApplicationInfo application;
+ IceDB::ReadOnlyCursor<string, IceGrid::ApplicationInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ appCursor(applications, txn);
+ while(appCursor.get(name, application, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " APPLICATION = " << name << endl;
+ }
+ data.applications.push_back(application);
+ }
+ appCursor.close();
+
+ if(debug)
+ {
+ cout << "Reading Adapter Map:" << endl;
+ }
+
+ IceDB::Dbi<string, IceGrid::AdapterInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ adapters(txn, "adapters", dbContext, 0);
+
+ AdapterInfo adapter;
+ IceDB::ReadOnlyCursor<string, IceGrid::AdapterInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ adapterCursor(adapters, txn);
+ while(adapterCursor.get(name, adapter, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " ADAPTER = " << name << endl;
+ }
+ data.adapters.push_back(adapter);
+ }
+ adapterCursor.close();
+
+ if(debug)
+ {
+ cout << "Reading Object Map:" << endl;
+ }
+
+ IceDB::Dbi<Identity, IceGrid::ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ objects(txn, "objects", dbContext, 0);
+
+ Identity id;
+ ObjectInfo object;
+ IceDB::ReadOnlyCursor<Identity, IceGrid::ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ objCursor(objects, txn);
+ while(objCursor.get(id, object, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " IDENTITY = " << communicator()->identityToString(id) << endl;
+ }
+ data.objects.push_back(object);
+ }
+ objCursor.close();
+
+ if(debug)
+ {
+ cout << "Reading Internal Object Map:" << endl;
+ }
+
+ IceDB::Dbi<Identity, IceGrid::ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ internalObjects(txn, "internal-objects", dbContext, 0);
+
+ IceDB::ReadOnlyCursor<Identity, IceGrid::ObjectInfo, IceDB::IceContext, Ice::OutputStreamPtr>
+ iobjCursor(internalObjects, txn);
+ while(iobjCursor.get(id, object, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " IDENTITY = " << communicator()->identityToString(id) << endl;
+ }
+ data.internalObjects.push_back(object);
+ }
+ iobjCursor.close();
+
+ if(debug)
+ {
+ cout << "Reading Serials Map:" << endl;
+ }
+
+ IceDB::Dbi<string, Long, IceDB::IceContext, Ice::OutputStreamPtr>
+ serials(txn, "serials", dbContext, 0);
+
+ Long serial;
+ IceDB::ReadOnlyCursor<string, Long, IceDB::IceContext, Ice::OutputStreamPtr>
+ serialCursor(serials, txn);
+ while(serialCursor.get(name, serial, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " NAME = " << name << endl;
+ }
+ data.serials.insert(std::make_pair(name, serial));
+ }
+ serialCursor.close();
+
+ txn.abort();
+ env.close();
+ }
+
+ Ice::OutputStreamPtr stream = Ice::createOutputStream(communicator(), dbContext.encoding);
+ stream->write("IceGrid");
+ stream->write(ICE_INT_VERSION);
+ stream->write(data);
+ pair<const Ice::Byte*, const Ice::Byte*> buf = stream->finished();
+
+ ofstream fs(dbFile, ios::binary);
+ if(fs.fail())
+ {
+ cerr << "Could not open output file: " << strerror(errno) << endl;
+ return EXIT_FAILURE;
+ }
+ fs.write(reinterpret_cast<const char*>(buf.first), buf.second - buf.first);
+ fs.close();
+ }
+ }
+ catch(const IceUtil::Exception& ex)
+ {
+ cerr << (import ? "Import" : "Export") << " failed:\n" << ex << endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/cpp/src/IceStorm/IceStormMigrate.rc b/cpp/src/IceGrid/IceGridDB.rc
index e8ba76a7fe2..f54626a4632 100644
--- a/cpp/src/IceStorm/IceStormMigrate.rc
+++ b/cpp/src/IceGrid/IceGridDB.rc
@@ -18,11 +18,11 @@ BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
- VALUE "FileDescription", "Migration Utility for IceStorm Database\0"
+ VALUE "FileDescription", "IceGridDB\0"
VALUE "FileVersion", "3.6.1\0"
- VALUE "InternalName", "icestormmigrate\0"
+ VALUE "InternalName", "icegriddb\0"
VALUE "LegalCopyright", "\251 2003-2015 ZeroC, Inc.\0"
- VALUE "OriginalFilename", "icestormmigrate.exe\0"
+ VALUE "OriginalFilename", "icegriddb.exe\0"
VALUE "ProductName", "Ice\0"
VALUE "ProductVersion", "3.6.1\0"
END
diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp
index 1fd8142a089..4461b49745c 100644
--- a/cpp/src/IceGrid/IceGridNode.cpp
+++ b/cpp/src/IceGrid/IceGridNode.cpp
@@ -41,14 +41,14 @@ namespace
class ProcessI : public Process
{
public:
-
+
ProcessI(const ActivatorPtr&, const ProcessPtr&);
virtual void shutdown(const Current&);
virtual void writeMessage(const std::string&, Int, const Current&);
-
+
private:
-
+
ActivatorPtr _activator;
ProcessPtr _origProcess;
};
@@ -119,11 +119,11 @@ setNoIndexingAttribute(const string& pa)
}
#endif
-}
+}
-CollocatedRegistry::CollocatedRegistry(const CommunicatorPtr& com,
- const ActivatorPtr& activator,
+CollocatedRegistry::CollocatedRegistry(const CommunicatorPtr& com,
+ const ActivatorPtr& activator,
bool nowarn,
bool readonly,
const string& initFromReplica,
@@ -139,7 +139,7 @@ CollocatedRegistry::shutdown()
_activator->shutdown();
}
-ProcessI::ProcessI(const ActivatorPtr& activator, const ProcessPtr& origProcess) :
+ProcessI::ProcessI(const ActivatorPtr& activator, const ProcessPtr& origProcess) :
_activator(activator),
_origProcess(origProcess)
{
@@ -239,7 +239,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
}
initFromReplica = argv[++i];
- }
+ }
else if(strcmp(argv[i], "--deploy") == 0)
{
if(i + 1 >= argc)
@@ -293,7 +293,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
out << "setting `Ice.ThreadPool.Server.Size' is not useful, ";
out << "you should set individual adapter thread pools instead.";
}
-
+
setupThreadPool(properties, "IceGrid.Node.ThreadPool", 1, 100);
//
@@ -314,7 +314,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
}
communicator()->setDefaultLocator(_registry->getLocator());
-
+
//
// Set the default locator property to point to the collocated
// locator (this property is passed by the activator to each
@@ -336,7 +336,6 @@ NodeService::startImpl(int argc, char* argv[], int& status)
// Initialize the database environment (first setup the directory structure if needed).
//
string dataPath = properties->getProperty("IceGrid.Node.Data");
- string dbPath;
if(dataPath.empty())
{
error("property `IceGrid.Node.Data' is not set");
@@ -349,7 +348,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
FileException ex(__FILE__, __LINE__);
ex.path = dataPath;
ex.error = IceInternal::getSystemErrno();
-
+
ServiceError err(this);
err << "property `IceGrid.Node.Data' is set to an invalid path:\n" << ex;
return false;
@@ -360,7 +359,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
//
if(dataPath[dataPath.length() - 1] != '/')
{
- dataPath += "/";
+ dataPath += "/";
}
IcePatch2Internal::createDirectory(dataPath + "servers");
@@ -401,12 +400,6 @@ NodeService::startImpl(int argc, char* argv[], int& status)
}
//
- // Setup the Freeze database environment home directory. The name of the database
- // environment for the IceGrid node is the name of the node.
- //
- properties->setProperty("Freeze.DbEnv." + name + ".DbHome", dbPath);
-
- //
// Create the node object adapter.
//
_adapter = communicator()->createObjectAdapter("IceGrid.Node");
@@ -483,7 +476,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
_adapter->add(_node, nodeProxy->ice_getIdentity());
_adapter->addDefaultServant(new NodeServerAdminRouter(_node), _node->getServerAdminCategory());
-
+
//
// Start the platform info thread if needed.
//
@@ -491,7 +484,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
//
// Ensures that the locator is reachable.
- //
+ //
if(!nowarn)
{
try
@@ -520,7 +513,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
// Replace Admin facet
ProcessPtr origProcess = ProcessPtr::dynamicCast(communicator()->removeAdminFacet("Process"));
communicator()->addAdminFacet(new ProcessI(_activator, origProcess), "Process");
-
+
Identity adminId;
adminId.name = "NodeAdmin-" + name;
adminId.category = instanceName;
@@ -568,15 +561,15 @@ NodeService::startImpl(int argc, char* argv[], int& status)
Ice::Identity regId;
regId.category = instanceName;
regId.name = "Registry";
-
+
RegistryPrx registry = RegistryPrx::checkedCast(communicator()->getDefaultLocator()->findObjectById(regId));
if(!registry)
{
throw "invalid registry";
}
-
+
registry = registry->ice_preferSecure(true); // Use SSL if available.
-
+
IceGrid::AdminSessionPrx session;
if(communicator()->getProperties()->getPropertyAsInt("IceGridAdmin.AuthenticateUsingSSL"))
{
@@ -592,14 +585,14 @@ NodeService::startImpl(int argc, char* argv[], int& status)
getline(cin, id);
id = IceUtilInternal::trim(id);
}
-
+
if(password.empty())
{
cout << "password: " << flush;
getline(cin, password);
password = IceUtilInternal::trim(password);
}
-
+
session = registry->createAdminSession(id, password);
}
assert(session);
@@ -625,7 +618,7 @@ NodeService::startImpl(int argc, char* argv[], int& status)
catch(const AccessDeniedException& ex)
{
ServiceWarning warn(this);
- warn << "failed to deploy application `" << desc << "':\n"
+ warn << "failed to deploy application `" << desc << "':\n"
<< "registry database is locked by `" << ex.lockUserId << "'";
}
catch(const std::exception& ex)
@@ -763,7 +756,7 @@ NodeService::stop()
}
CommunicatorPtr
-NodeService::initializeCommunicator(int& argc, char* argv[],
+NodeService::initializeCommunicator(int& argc, char* argv[],
const InitializationData& initializationData)
{
InitializationData initData = initializationData;
diff --git a/cpp/src/IceGrid/Makefile b/cpp/src/IceGrid/Makefile
index ed6f7fcaa01..0e78b8497ff 100644
--- a/cpp/src/IceGrid/Makefile
+++ b/cpp/src/IceGrid/Makefile
@@ -10,12 +10,13 @@
top_srcdir = ../..
ADMIN = $(bindir)/icegridadmin
+DB = $(bindir)/icegriddb
NODE_SERVER = $(bindir)/icegridnode
REGISTRY_SERVER = $(bindir)/icegridregistry
-TARGETS = $(NODE_SERVER) $(REGISTRY_SERVER) $(ADMIN)
+TARGETS = $(NODE_SERVER) $(REGISTRY_SERVER) $(ADMIN) $(DB)
-SLICE_OBJS = Internal.o \
+CSLICE_OBJS = Internal.o \
IceLocatorDiscovery.o
ADMIN_OBJS = Client.o \
@@ -27,7 +28,7 @@ ADMIN_OBJS = Client.o \
Parser.o \
Scanner.o \
Util.o \
- $(SLICE_OBJS)
+ $(CSLICE_OBJS)
COMMON_OBJS = AdminRouter.o \
DescriptorBuilder.o \
@@ -36,7 +37,7 @@ COMMON_OBJS = AdminRouter.o \
PlatformInfo.o \
SessionManager.o \
TraceLevels.o \
- $(SLICE_OBJS)
+ $(CSLICE_OBJS)
NODE_OBJS = Activator.o \
NodeAdminRouter.o \
@@ -54,7 +55,6 @@ REGISTRY_OBJS = AdminCallbackRouter.o \
Database.o \
DescriptorHelper.o \
FileUserAccountMapperI.o \
- IdentityObjectInfoDict.o \
InternalRegistryI.o \
LocatorI.o \
LocatorRegistryI.o \
@@ -69,12 +69,9 @@ REGISTRY_OBJS = AdminCallbackRouter.o \
ReplicaCache.o \
ReplicaSessionI.o \
ReplicaSessionManager.o \
- SerialsDict.o \
ServerCache.o \
SessionI.o \
SessionServantManager.o \
- StringAdapterInfoDict.o \
- StringApplicationInfoDict.o \
Topics.o \
Util.o \
WellKnownObjectsManager.o
@@ -89,11 +86,20 @@ REGISTRY_SVR_OBJS = \
$(REGISTRY_OBJS) \
IceGridRegistry.o
+DSLICE_OBJS = DBTypes.o
+
+DB_OBJS = IceGridDB.o \
+ $(DSLICE_OBJS)
+
OBJS = $(ADMIN_OBJS) \
$(COMMON_OBJS) \
$(NODE_OBJS) \
$(NODE_SVR_OBJS) \
- $(REGISTRY_SVR_OBJS)
+ $(REGISTRY_SVR_OBJS) \
+ $(DB_OBJS)
+
+SLICE_OBJS = $(CSLICE_OBJS) \
+ $(DSLICE_OBJS)
SDIR = $(slicedir)/IceGrid
@@ -111,15 +117,19 @@ $(ADMIN): $(ADMIN_OBJS) $(LIBTARGETS)
$(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(ADMIN_OBJS) -lGlacier2 $(EXPAT_RPATH_LINK) -lIceXML -lIceGrid -lIcePatch2 -lIceBox \
$(LIBS) $(READLINE_LIBS) $(OPENSSL_RPATH_LINK)
+$(DB): $(DB_OBJS) $(LIBTARGETS)
+ rm -f $@
+ $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(DB_OBJS) -lIceGrid -lGlacier2 -lIcePatch2 -lIceDB $(LIBS)
+
$(REGISTRY_SERVER): $(REGISTRY_SVR_OBJS) $(LIBTARGETS)
rm -f $@
$(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(REGISTRY_SVR_OBJS) -lIceGrid -lIceStorm -lIceStormService -lGlacier2 -lIcePatch2 \
- $(RPATH_LINK) -lFreeze -lIceBox $(EXPAT_RPATH_LINK) -lIceXML -lIceSSL $(OPENSSL_RPATH_LINK) $(LIBS)
+ $(RPATH_LINK) -lIceDB -lIceBox $(EXPAT_RPATH_LINK) -lIceXML -lIceSSL $(OPENSSL_RPATH_LINK) $(LIBS)
$(NODE_SERVER): $(NODE_SVR_OBJS) $(LIBTARGETS)
rm -f $@
$(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(NODE_SVR_OBJS) -lIceGrid -lIceStorm -lIceStormService -lIceBox -lGlacier2 \
- $(DB_RPATH_LINK) -lFreeze -lIcePatch2 $(EXPAT_RPATH_LINK) -lIceXML -lIceSSL $(OPENSSL_RPATH_LINK) $(LIBS)
+ -lIceDB -lIcePatch2 $(EXPAT_RPATH_LINK) -lIceXML -lIceSSL $(OPENSSL_RPATH_LINK) $(LIBS)
../IceLocatorDiscovery/%.h %.cpp: $(slicedir)/IceLocatorDiscovery/%.ice $(SLICE2CPP) $(SLICEPARSERLIB)
rm -f $(*F).h $(*F).cpp
@@ -128,40 +138,9 @@ $(NODE_SERVER): $(NODE_SVR_OBJS) $(LIBTARGETS)
@mkdir -p .depend
@$(SLICE2CPP) $(SLICE2CPPFLAGS) --depend $(slicedir)/IceLocatorDiscovery/$(*F).ice > .depend/$(*F).ice.d
-# The slice2freeze rules are structured like this to avoid issues with
-# parallel make.
-../IceGrid/StringApplicationInfoDict.h: StringApplicationInfoDict.cpp
-StringApplicationInfoDict.cpp: $(SDIR)/Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f StringApplicationInfoDict.h StringApplicationInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::StringApplicationInfoDict,string,IceGrid::ApplicationInfo \
- StringApplicationInfoDict $(SDIR)/Admin.ice
-
-../IceGrid/IdentityObjectInfoDict.h: IdentityObjectInfoDict.cpp
-IdentityObjectInfoDict.cpp: $(slicedir)/Ice/Identity.ice $(SDIR)/Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::IdentityObjectInfoDict,Ice::Identity,IceGrid::ObjectInfo \
- --dict-index IceGrid::IdentityObjectInfoDict,type \
- IdentityObjectInfoDict $(slicedir)/Ice/Identity.ice $(SDIR)/Admin.ice
-
-../IceGrid/StringAdapterInfoDict.h: StringAdapterInfoDict.cpp
-StringAdapterInfoDict.cpp: $(SDIR)/Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f StringAdapterInfoDict.h StringAdapterInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::StringAdapterInfoDict,string,IceGrid::AdapterInfo \
- --dict-index IceGrid::StringAdapterInfoDict,replicaGroupId StringAdapterInfoDict $(SDIR)/Admin.ice
-
-../IceGrid/SerialsDict.h: SerialsDict.cpp
-SerialsDict.cpp: $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f SerialsDict.h SerialsDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::SerialsDict,string,long SerialsDict
-
-clean::
- -rm -f StringApplicationInfoDict.h StringApplicationInfoDict.cpp
- -rm -f IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp
- -rm -f StringAdapterInfoDict.h StringAdapterInfoDict.cpp
- -rm -f SerialsDict.h SerialsDict.cpp
-
install:: all
$(call installprogram,$(ADMIN),$(DESTDIR)$(install_bindir))
+ $(call installprogram,$(DB),$(DESTDIR)$(install_bindir))
$(call installdata,$(top_srcdir)/../man/man1/icegridadmin.1,$(DESTDIR)$(install_mandir))
$(call installprogram,$(NODE_SERVER),$(DESTDIR)$(install_bindir))
$(call installdata,$(top_srcdir)/../man/man1/icegridnode.1,$(DESTDIR)$(install_mandir))
diff --git a/cpp/src/IceGrid/Makefile.mak b/cpp/src/IceGrid/Makefile.mak
index 980fb219e4c..00382abfc34 100644
--- a/cpp/src/IceGrid/Makefile.mak
+++ b/cpp/src/IceGrid/Makefile.mak
@@ -10,28 +10,23 @@
top_srcdir = ..\..
ADMIN = $(top_srcdir)\bin\icegridadmin.exe
+DB = $(top_srcdir)\bin\icegriddb.exe
NODE_SERVER_D = $(top_srcdir)\bin\icegridnoded.exe
NODE_SERVER_R = $(top_srcdir)\bin\icegridnode.exe
NODE_SERVER = $(top_srcdir)\bin\icegridnode$(LIBSUFFIX).exe
-
REGISTRY_SERVER_D = $(top_srcdir)\bin\icegridregistryd.exe
REGISTRY_SERVER_R = $(top_srcdir)\bin\icegridregistry.exe
REGISTRY_SERVER = $(top_srcdir)\bin\icegridregistry$(LIBSUFFIX).exe
-TARGETS = $(ADMIN) $(NODE_SERVER) $(REGISTRY_SERVER)
+TARGETS = $(ADMIN) $(NODE_SERVER) $(REGISTRY_SERVER) $(DB)
-SLICE_OBJS = .\Internal.obj \
+CSLICE_OBJS = .\Internal.obj \
.\IceLocatorDiscovery.obj
-all:: StringApplicationInfoDict.h StringApplicationInfoDict.cpp \
- IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp \
- StringAdapterInfoDict.h StringAdapterInfoDict.cpp \
- SerialsDict.h SerialsDict.cpp
-
BISON_FLEX_OBJS = .\Grammar.obj \
.\Scanner.obj
@@ -42,7 +37,7 @@ ADMIN_OBJS = .\Client.obj \
.\FileParserI.obj \
.\Parser.obj \
.\Util.obj \
- $(SLICE_OBJS) \
+ $(CSLICE_OBJS) \
$(BISON_FLEX_OBJS)
COMMON_OBJS = .\AdminRouter.obj \
@@ -52,7 +47,7 @@ COMMON_OBJS = .\AdminRouter.obj \
.\PlatformInfo.obj \
.\SessionManager.obj \
.\TraceLevels.obj \
- $(SLICE_OBJS)
+ $(CSLICE_OBJS)
NODE_OBJS = .\Activator.obj \
.\NodeAdminRouter.obj \
@@ -70,7 +65,6 @@ REGISTRY_OBJS = .\AdapterCache.obj \
.\Database.obj \
.\DescriptorHelper.obj \
.\FileUserAccountMapperI.obj \
- .\IdentityObjectInfoDict.obj \
.\InternalRegistryI.obj \
.\LocatorI.obj \
.\LocatorRegistryI.obj \
@@ -85,12 +79,9 @@ REGISTRY_OBJS = .\AdapterCache.obj \
.\ReplicaCache.obj \
.\ReplicaSessionI.obj \
.\ReplicaSessionManager.obj \
- .\SerialsDict.obj \
.\ServerCache.obj \
.\SessionI.obj \
.\SessionServantManager.obj \
- .\StringAdapterInfoDict.obj \
- .\StringApplicationInfoDict.obj \
.\Topics.obj \
.\Util.obj \
.\WellKnownObjectsManager.obj
@@ -105,31 +96,41 @@ REGISTRY_SVR_OBJS = \
$(REGISTRY_OBJS) \
.\IceGridRegistry.obj
+DSLICE_OBJS = .\DBTypes.obj
+
+DB_OBJS = .\IceGridDB.obj \
+ $(DSLICE_OBJS)
+
OBJS = $(ADMIN_OBJS) \
+ $(DB_OBJS) \
$(NODE_SVR_OBJS) \
$(REGISTRY_SVR_OBJS)
+SLICE_OBJS = $(CSLICE_OBJS) \
+ $(DSLICE_OBJS)
+
HDIR = $(headerdir)\IceGrid
SDIR = $(slicedir)\IceGrid
-SLICE2FREEZECMD = $(SLICE2FREEZE) -I.. --ice --include-dir IceGrid $(ICECPPFLAGS)
-
!include $(top_srcdir)\config\Make.rules.mak
LINKWITH = $(LIBS)
ALINKWITH = $(LIBS)
+DLINKWITH = $(LIBS)
NLINKWITH = $(LIBS) advapi32.lib pdh.lib ws2_32.lib
SLICE2CPPFLAGS = --checksum --ice --include-dir IceGrid $(SLICE2CPPFLAGS)
-CPPFLAGS = -I. -I.. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN -Zm200
+CPPFLAGS = -I. -I.. -I$(LMDB_HOME)\include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN -Zm200
!if "$(GENERATE_PDB)" == "yes"
APDBFLAGS = /pdb:$(ADMIN:.exe=.pdb)
+DPDBFLAGS = /pdb:$(DB:.exe=.pdb)
RPDBFLAGS = /pdb:$(REGISTRY_SERVER:.exe=.pdb)
NPDBFLAGS = /pdb:$(NODE_SERVER:.exe=.pdb)
!endif
ARES_FILE = IceGridAdmin.res
+DRES_FILE = IceGridDB.res
RRES_FILE = IceGridRegistry.res
NRES_FILE = IceGridNode.res
@@ -140,6 +141,13 @@ $(ADMIN): $(ADMIN_OBJS) IceGridAdmin.res
@if defined SIGN_CERTIFICATE echo ^ ^ ^ Signing $@ && \
signtool sign /f "$(SIGN_CERTIFICATE)" /p $(SIGN_PASSWORD) /t $(SIGN_TIMESTAMPSERVER) $@
+$(DB): $(DB_OBJS) IceGridDB.res
+ $(LINK) $(LD_EXEFLAGS) $(DPDBFLAGS) $(DB_OBJS) $(SETARGV) $(PREOUT)$@ $(PRELIBS)$(DLINKWITH) $(DRES_FILE)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) &&\
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+ @if defined SIGN_CERTIFICATE echo ^ ^ ^ Signing $@ && \
+ signtool sign /f "$(SIGN_CERTIFICATE)" /p $(SIGN_PASSWORD) /t $(SIGN_TIMESTAMPSERVER) $@
+
$(REGISTRY_SERVER): $(REGISTRY_SVR_OBJS) IceGridRegistry.res
$(LINK) $(LD_EXEFLAGS) $(RPDBFLAGS) $(REGISTRY_SVR_OBJS) $(SETARGV) $(PREOUT)$@ \
$(PRELIBS)$(NLINKWITH) $(RRES_FILE)
@@ -163,40 +171,17 @@ IceLocatorDiscovery.h IceLocatorDiscovery.cpp: $(slicedir)\IceLocatorDiscovery\I
@echo Generating dependencies for $<
@"$(SLICE2CPP)" $(SLICE2CPPFLAGS) --depend $< | cscript /NoLogo $(top_srcdir)\..\config\makedepend-slice.vbs $(*F).ice
-
-StringApplicationInfoDict.h StringApplicationInfoDict.cpp: $(SDIR)\Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q StringApplicationInfoDict.h StringApplicationInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::StringApplicationInfoDict,string,IceGrid::ApplicationInfo \
- StringApplicationInfoDict $(SDIR)\Admin.ice
-
-IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp: $(slicedir)\Ice\Identity.ice $(SDIR)\Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::IdentityObjectInfoDict,Ice::Identity,IceGrid::ObjectInfo \
- --dict-index IceGrid::IdentityObjectInfoDict,type \
- IdentityObjectInfoDict $(slicedir)\Ice\Identity.ice $(SDIR)\Admin.ice
-
-StringAdapterInfoDict.h StringAdapterInfoDict.cpp: $(SDIR)\Admin.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q StringAdapterInfoDict.h StringAdapterInfoDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::StringAdapterInfoDict,string,IceGrid::AdapterInfo \
- --dict-index IceGrid::StringAdapterInfoDict,replicaGroupId StringAdapterInfoDict $(SDIR)\Admin.ice
-
-SerialsDict.h SerialsDict.cpp: $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q SerialsDict.h SerialsDict.cpp
- $(SLICE2FREEZECMD) --dict IceGrid::SerialsDict,string,long SerialsDict
-
clean::
-del /q Internal.cpp Internal.h
- -del /q StringApplicationInfoDict.h StringApplicationInfoDict.cpp
- -del /q StringAdapterInfoDict.h StringAdapterInfoDict.cpp
- -del /q IdentityObjectInfoDict.h IdentityObjectInfoDict.cpp
- -del /q SerialsDict.h SerialsDict.cpp
-del /q $(ADMIN:.exe=.*)
+ -del /q $(DB:.exe=.*)
-del /q $(NODE_SERVER_D:.exe=.*) $(NODE_SERVER_R:.exe=.*)
-del /q $(REGISTRY_SERVER_D:.exe=.*) $(REGISTRY_SERVER_R:.exe=.*)
-del /q IceGridAdmin.res IceGridNode.res IceGridRegistry.res
install:: all
copy $(ADMIN) "$(install_bindir)"
+ copy $(DB) "$(install_bindir)"
copy $(NODE_SERVER) "$(install_bindir)"
copy $(REGISTRY_SERVER) "$(install_bindir)"
@@ -205,6 +190,7 @@ install:: all
install:: all
copy $(ADMIN:.exe=.pdb) "$(install_bindir)"
+ copy $(DB:.exe=.pdb) "$(install_bindir)"
copy $(NODE_SERVER:.exe=.pdb) "$(install_bindir)"
copy $(REGISTRY_SERVER:.exe=.pdb) "$(install_bindir)"
diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp
index e28468b36af..22f98a01a05 100644
--- a/cpp/src/IceGrid/NodeCache.cpp
+++ b/cpp/src/IceGrid/NodeCache.cpp
@@ -109,10 +109,12 @@ struct ToInternalServerDescriptor : std::unary_function<CommunicatorDescriptorPt
if(p->dbHome.empty())
{
_desc->dbEnvs.push_back(new InternalDbEnvDescriptor(p->name, p->properties));
+ props.push_back(createProperty(p->name + ".LMDB.Path", dbsPath + p->name));
props.push_back(createProperty("Freeze.DbEnv." + p->name + ".DbHome", dbsPath + p->name));
}
else
{
+ props.push_back(createProperty(p->name + ".LMDB.Path", p->dbHome));
props.push_back(createProperty("Freeze.DbEnv." + p->name + ".DbHome", p->dbHome));
}
}
@@ -663,7 +665,7 @@ NodeEntry::destroyServer(const ServerEntryPtr& entry, const ServerInfo& info, in
if(noRestart)
{
- node->begin_destroyServerWithoutRestart(info.descriptor->id, info.uuid, info.revision,
+ node->begin_destroyServerWithoutRestart(info.descriptor->id, info.uuid, info.revision,
_cache.getReplicaName(),
newCallback_Node_destroyServerWithoutRestart(
new DestroyCB(_cache.getTraceLevels(), entry, _name),
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp
index 2f1281c9286..5f7c3296180 100644
--- a/cpp/src/IceGrid/NodeI.cpp
+++ b/cpp/src/IceGrid/NodeI.cpp
@@ -32,7 +32,7 @@ class LogPatcherFeedback : public IcePatch2::PatcherFeedback
{
public:
- LogPatcherFeedback(const TraceLevelsPtr& traceLevels, const string& dest) :
+ LogPatcherFeedback(const TraceLevelsPtr& traceLevels, const string& dest) :
_traceLevels(traceLevels),
_startedPatch(false),
_lastProgress(0),
@@ -40,7 +40,7 @@ public:
{
}
- void
+ void
setPatchingPath(const string& path)
{
_path = path;
@@ -149,12 +149,12 @@ public:
{
roundedSize = 1;
}
- out << _dest << ": downloading " << (_path.empty() ? string("") : (_path + " ")) << roundedSize
+ out << _dest << ": downloading " << (_path.empty() ? string("") : (_path + " ")) << roundedSize
<< "KB ";
_startedPatch = true;
}
}
-
+
return true;
}
@@ -166,7 +166,7 @@ public:
virtual bool
patchEnd()
- {
+ {
return true;
}
@@ -193,7 +193,7 @@ class NodeUp : public NodeI::Update
{
public:
- NodeUp(const NodeIPtr& node, const NodeObserverPrx& observer, NodeDynamicInfo info) :
+ NodeUp(const NodeIPtr& node, const NodeObserverPrx& observer, NodeDynamicInfo info) :
NodeI::Update(node, observer), _info(info)
{
}
@@ -211,9 +211,9 @@ public:
}
return true;
}
-
+
private:
-
+
NodeDynamicInfo _info;
};
@@ -221,7 +221,7 @@ class UpdateServer : public NodeI::Update
{
public:
- UpdateServer(const NodeIPtr& node, const NodeObserverPrx& observer, ServerDynamicInfo info) :
+ UpdateServer(const NodeIPtr& node, const NodeObserverPrx& observer, ServerDynamicInfo info) :
NodeI::Update(node, observer), _info(info)
{
}
@@ -231,7 +231,7 @@ public:
{
try
{
- _observer->begin_updateServer(_node->getName(),
+ _observer->begin_updateServer(_node->getName(),
_info,
newCallback(static_cast<NodeI::Update*>(this), &NodeI::Update::completed));
}
@@ -241,9 +241,9 @@ public:
}
return true;
}
-
+
private:
-
+
ServerDynamicInfo _info;
};
@@ -251,7 +251,7 @@ class UpdateAdapter : public NodeI::Update
{
public:
- UpdateAdapter(const NodeIPtr& node, const NodeObserverPrx& observer, AdapterDynamicInfo info) :
+ UpdateAdapter(const NodeIPtr& node, const NodeObserverPrx& observer, AdapterDynamicInfo info) :
NodeI::Update(node, observer), _info(info)
{
}
@@ -261,7 +261,7 @@ public:
{
try
{
- _observer->begin_updateAdapter(_node->getName(),
+ _observer->begin_updateAdapter(_node->getName(),
_info,
newCallback(static_cast<NodeI::Update*>(this), &NodeI::Update::completed));
}
@@ -271,9 +271,9 @@ public:
}
return true;
}
-
+
private:
-
+
AdapterDynamicInfo _info;
};
@@ -295,7 +295,7 @@ NodeI::Update::finished(bool success)
NodeI::NodeI(const Ice::ObjectAdapterPtr& adapter,
NodeSessionManager& sessions,
- const ActivatorPtr& activator,
+ const ActivatorPtr& activator,
const IceUtil::TimerPtr& timer,
const TraceLevelsPtr& traceLevels,
const NodePrx& proxy,
@@ -395,19 +395,19 @@ NodeI::loadServerWithoutRestart_async(const AMD_Node_loadServerWithoutRestartPtr
{
}
- virtual void
+ virtual void
ice_response(const ServerPrx& server, const AdapterPrxDict& adapters, Ice::Int actTimeout, Ice::Int deacTimeout)
{
_cb->ice_response(server, adapters, actTimeout, deacTimeout);
};
- virtual void
+ virtual void
ice_exception(const ::std::exception& ex)
{
_cb->ice_exception(ex);
}
- virtual void
+ virtual void
ice_exception()
{
_cb->ice_exception();
@@ -448,19 +448,19 @@ NodeI::destroyServerWithoutRestart_async(const AMD_Node_destroyServerWithoutRest
{
}
- virtual void
+ virtual void
ice_response()
{
_cb->ice_response();
};
- virtual void
+ virtual void
ice_exception(const ::std::exception& ex)
{
_cb->ice_exception(ex);
}
- virtual void
+ virtual void
ice_exception()
{
_cb->ice_exception();
@@ -476,10 +476,10 @@ NodeI::destroyServerWithoutRestart_async(const AMD_Node_destroyServerWithoutRest
void
NodeI::patch_async(const AMD_Node_patchPtr& amdCB,
const PatcherFeedbackPrx& feedback,
- const string& application,
+ const string& application,
const string& server,
const InternalDistributionDescriptorPtr& appDistrib,
- bool shutdown,
+ bool shutdown,
const Ice::Current&)
{
amdCB->ice_response();
@@ -528,8 +528,8 @@ NodeI::patch_async(const AMD_Node_patchPtr& amdCB,
else
{
//
- // If the server to patch depends on the application,
- // we need to shutdown all the application servers
+ // If the server to patch depends on the application,
+ // we need to shutdown all the application servers
// that depend on the application.
//
servers = getApplicationServers(application);
@@ -583,7 +583,7 @@ NodeI::patch_async(const AMD_Node_patchPtr& amdCB,
servers.erase(s++);
}
}
-
+
if(!running.empty())
{
if(running.size() == 1)
@@ -601,7 +601,7 @@ NodeI::patch_async(const AMD_Node_patchPtr& amdCB,
(*s)->waitForPatch();
}
- //
+ //
// Patch the application.
//
FileServerPrx icepatch;
@@ -664,7 +664,7 @@ NodeI::patch_async(const AMD_Node_patchPtr& amdCB,
_patchInProgress.erase(application);
notifyAll();
}
-
+
try
{
if(failure.empty())
@@ -754,7 +754,7 @@ NodeI::shutdown()
IceUtil::Mutex::Lock sync(_serversLock);
for(map<string, set<ServerIPtr> >::const_iterator p = _serversByApplication.begin();
p != _serversByApplication.end(); ++p)
- {
+ {
for(set<ServerIPtr>::const_iterator q = p->second.begin(); q != p->second.end(); ++q)
{
(*q)->shutdown();
@@ -802,7 +802,7 @@ NodeI::getUserAccountMapper() const
PlatformInfo&
NodeI::getPlatformInfo() const
{
- return _platform;
+ return _platform;
}
FileCachePtr
@@ -902,7 +902,7 @@ NodeI::checkConsistency(const NodeSessionPrx& session)
}
sort(servers.begin(), servers.end());
}
-
+
for_each(commands.begin(), commands.end(), IceUtil::voidMemFun(&ServerCommand::execute));
}
@@ -917,14 +917,14 @@ NodeI::addObserver(const NodeSessionPrx& session, const NodeObserverPrx& observe
ServerDynamicInfoSeq serverInfos;
AdapterDynamicInfoSeq adapterInfos;
- for(map<string, ServerDynamicInfo>::const_iterator p = _serversDynamicInfo.begin();
+ for(map<string, ServerDynamicInfo>::const_iterator p = _serversDynamicInfo.begin();
p != _serversDynamicInfo.end(); ++p)
{
assert(p->second.state != Destroyed && (p->second.state != Inactive || !p->second.enabled));
serverInfos.push_back(p->second);
}
- for(map<string, AdapterDynamicInfo>::const_iterator q = _adaptersDynamicInfo.begin();
+ for(map<string, AdapterDynamicInfo>::const_iterator q = _adaptersDynamicInfo.begin();
q != _adaptersDynamicInfo.end(); ++q)
{
assert(q->second.proxy);
@@ -1005,12 +1005,12 @@ NodeI::observerUpdateAdapter(const AdapterDynamicInfo& info)
}
}
-void
+void
NodeI::queueUpdate(const NodeObserverPrx& proxy, const UpdatePtr& update)
{
//Lock sync(*this); Called within the synchronization
map<NodeObserverPrx, deque<UpdatePtr> >::iterator p = _observerUpdates.find(proxy);
- if(p == _observerUpdates.end())
+ if(p == _observerUpdates.end())
{
if(update->send())
{
@@ -1023,7 +1023,7 @@ NodeI::queueUpdate(const NodeObserverPrx& proxy, const UpdatePtr& update)
}
}
-void
+void
NodeI::dequeueUpdate(const NodeObserverPrx& proxy, const UpdatePtr& update, bool all)
{
IceUtil::Mutex::Lock sync(_observerMutex);
@@ -1070,7 +1070,7 @@ NodeI::removeServer(const ServerIPtr& server, const std::string& application)
if(p->second.empty())
{
_serversByApplication.erase(p);
-
+
string appDir = _dataDir + "/distrib/" + application;
if(IceUtilInternal::directoryExists(appDir))
{
@@ -1126,7 +1126,7 @@ NodeI::checkConsistencyNoSync(const Ice::StringSeq& servers)
vector<string> remove;
set_difference(contents.begin(), contents.end(), servers.begin(), servers.end(), back_inserter(remove));
-
+
//
// Remove the extra servers if possible.
//
@@ -1161,7 +1161,7 @@ NodeI::checkConsistencyNoSync(const Ice::StringSeq& servers)
assert(false);
}
}
-
+
try
{
if(canRemoveServerDirectory(*p))
@@ -1193,7 +1193,7 @@ NodeI::checkConsistencyNoSync(const Ice::StringSeq& servers)
//
return commands;
}
-
+
if(!remove.empty())
{
Ice::Warning out(_traceLevels->logger);
@@ -1225,7 +1225,7 @@ NodeI::canRemoveServerDirectory(const string& name)
{
return false;
}
-
+
c = readDirectory(_serversDir + "/" + name + "/config");
for(Ice::StringSeq::const_iterator p = c.begin() ; p != c.end(); ++p)
{
@@ -1234,7 +1234,7 @@ NodeI::canRemoveServerDirectory(const string& name)
return false;
}
}
-
+
c = readDirectory(_serversDir + "/" + name + "/dbs");
for(Ice::StringSeq::const_iterator p = c.begin() ; p != c.end(); ++p)
{
@@ -1292,7 +1292,7 @@ NodeI::patch(const FileServerPrx& icepatch, const string& dest, const vector<str
//
// Update the files owner/group
- //
+ //
}
set<ServerIPtr>
@@ -1348,9 +1348,9 @@ NodeI::loadServer(const AMD_Node_loadServerPtr& amdCB,
{
Lock sync(*this);
++_serial;
-
+
Ice::Identity id = createServerIdentity(descriptor->id);
-
+
//
// Check if we already have a servant for this server. If that's
// the case, the server is already loaded and we just need to
@@ -1383,7 +1383,7 @@ NodeI::loadServer(const AMD_Node_loadServerPtr& amdCB,
//
throw Ice::ObjectNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
}
-
+
try
{
command = server->load(amdCB, descriptor, replicaName, noRestart);
@@ -1430,7 +1430,7 @@ NodeI::destroyServer(const AMD_Node_destroyServerPtr& amdCB,
{
Lock sync(*this);
++_serial;
-
+
ServerIPtr server;
try
{
@@ -1453,7 +1453,7 @@ NodeI::destroyServer(const AMD_Node_destroyServerPtr& amdCB,
{
server = new ServerI(this, 0, _serversDir, serverId, _waitTime);
}
-
+
//
// Destroy the server object if it's loaded.
//
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index d8a406931f4..1450436306a 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -341,9 +341,7 @@ RegistryI::startImpl()
return false;
}
}
- _communicator->getProperties()->setProperty("Freeze.DbEnv.Registry.DbHome", dbPath);
- const string envName = "Registry";
- Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, envName);
+ _communicator->getProperties()->setProperty("Registry.LMDB.Path", dbPath);
//
// Ensure that nothing is running on this port. This is also
@@ -388,11 +386,10 @@ RegistryI::startImpl()
_registryAdapter,
"IceGrid.Registry",
registryTopicManagerId,
- envName);
+ "");
const IceStorm::TopicManagerPrx topicManager = _iceStorm->getTopicManager();
- _database = new Database(_registryAdapter, topicManager, _instanceName, _traceLevels, getInfo(), connection,
- "Registry", _readonly);
+ _database = new Database(_registryAdapter, topicManager, _instanceName, _traceLevels, getInfo(), _readonly);
_wellKnownObjects = new WellKnownObjectsManager(_database);
if(!_initFromReplica.empty())
diff --git a/cpp/src/IceGrid/ReplicaSessionI.cpp b/cpp/src/IceGrid/ReplicaSessionI.cpp
index e9f1a17c0ce..cb4c655d4c6 100644
--- a/cpp/src/IceGrid/ReplicaSessionI.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionI.cpp
@@ -28,7 +28,7 @@ operator==(const ObjectInfo& info, const Ice::Identity& id)
}
-ReplicaSessionI::ReplicaSessionI(const DatabasePtr& database,
+ReplicaSessionI::ReplicaSessionI(const DatabasePtr& database,
const WellKnownObjectsManagerPtr& wellKnownObjects,
const InternalReplicaInfoPtr& info,
const InternalRegistryPrx& proxy,
@@ -95,7 +95,7 @@ ReplicaSessionI::getTimeout(const Ice::Current&) const
}
void
-ReplicaSessionI::setDatabaseObserver(const DatabaseObserverPrx& observer,
+ReplicaSessionI::setDatabaseObserver(const DatabaseObserverPrx& observer,
const IceUtil::Optional<StringLongDict>& slaveSerials,
const Ice::Current&)
{
@@ -140,7 +140,7 @@ ReplicaSessionI::setDatabaseObserver(const DatabaseObserverPrx& observer,
os << " master and slave database with an administrative client and either:\n";
os << " - restart the slave with --initdb-from-replica=Master\n";
os << " - restart the master with --initdb-from-replica=" << _info->name;
-
+
Ice::Error out(_traceLevels->logger);
out << os.str();
throw DeploymentException(os.str());
@@ -160,7 +160,7 @@ ReplicaSessionI::setDatabaseObserver(const DatabaseObserverPrx& observer,
if(_destroy)
{
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
- }
+ }
_observer = observer;
serialApplicationObserver = applicationObserver->subscribe(_observer, _info->name);
@@ -181,7 +181,7 @@ ReplicaSessionI::setEndpoints(const StringObjectProxyDict& endpoints, const Ice:
if(_destroy)
{
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
- }
+ }
_replicaEndpoints = endpoints;
}
_wellKnownObjects->updateReplicatedWellKnownObjects();
@@ -212,7 +212,7 @@ ReplicaSessionI::registerWellKnownObjects(const ObjectInfoSeq& objects, const Ic
void
ReplicaSessionI::setAdapterDirectProxy(const string& adapterId,
- const string& replicaGroupId,
+ const string& replicaGroupId,
const Ice::ObjectPrx& proxy,
const Ice::Current&)
{
@@ -256,13 +256,13 @@ ReplicaSessionI::shutdown()
destroyImpl(true);
}
-const InternalRegistryPrx&
+const InternalRegistryPrx&
ReplicaSessionI::getInternalRegistry() const
{
return _internalRegistry;
}
-
-const InternalReplicaInfoPtr&
+
+const InternalReplicaInfoPtr&
ReplicaSessionI::getInfo() const
{
return _info;
@@ -300,7 +300,7 @@ ReplicaSessionI::destroyImpl(bool shutdown)
if(_destroy)
{
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
- }
+ }
_destroy = true;
}
diff --git a/cpp/src/IceGrid/ServerI.h b/cpp/src/IceGrid/ServerI.h
index 8d5b8f1bbdf..b9ac1190a4e 100644
--- a/cpp/src/IceGrid/ServerI.h
+++ b/cpp/src/IceGrid/ServerI.h
@@ -12,7 +12,6 @@
#include <IceUtil/Mutex.h>
#include <IceUtil/Timer.h>
-#include <Freeze/EvictorF.h>
#include <IceGrid/Activator.h>
#include <IceGrid/Internal.h>
#include <set>
diff --git a/cpp/src/IceGrid/WellKnownObjectsManager.cpp b/cpp/src/IceGrid/WellKnownObjectsManager.cpp
index 595b3fe5de0..518792ffd66 100644
--- a/cpp/src/IceGrid/WellKnownObjectsManager.cpp
+++ b/cpp/src/IceGrid/WellKnownObjectsManager.cpp
@@ -7,6 +7,7 @@
//
// **********************************************************************
+#include <Ice/Endpoint.h>
#include <Glacier2/PermissionsVerifier.h>
#include <IceGrid/WellKnownObjectsManager.h>
#include <IceGrid/Database.h>
diff --git a/cpp/src/IceStorm/.depend.mak b/cpp/src/IceStorm/.depend.mak
index 731b5d71418..b7a6d9a2252 100755
--- a/cpp/src/IceStorm/.depend.mak
+++ b/cpp/src/IceStorm/.depend.mak
@@ -70,42 +70,6 @@ SubscriberRecord.h: \
"$(slicedir)/Ice/Metrics.ice" \
"$(slicedir)/Ice/BuiltinSequences.ice"
-V31Format.h: \
- V31Format.ice \
- ../IceStorm/LinkRecord.ice \
- "$(slicedir)/Ice/Identity.ice" \
- ../IceStorm/IceStormInternal.ice \
- "$(slicedir)/IceStorm/IceStorm.ice" \
- "$(slicedir)/Ice/SliceChecksumDict.ice" \
- "$(slicedir)/IceStorm/Metrics.ice" \
- "$(slicedir)/Ice/Metrics.ice" \
- "$(slicedir)/Ice/BuiltinSequences.ice" \
- ../IceStorm/Election.ice \
- ../IceStorm/SubscriberRecord.ice \
- ../IceStorm/LLURecord.ice \
- "$(slicedir)/Ice/Current.ice" \
- "$(slicedir)/Ice/ObjectAdapterF.ice" \
- "$(slicedir)/Ice/ConnectionF.ice" \
- "$(slicedir)/Ice/Version.ice"
-
-V32Format.h: \
- V32Format.ice \
- ../IceStorm/LinkRecord.ice \
- "$(slicedir)/Ice/Identity.ice" \
- ../IceStorm/IceStormInternal.ice \
- "$(slicedir)/IceStorm/IceStorm.ice" \
- "$(slicedir)/Ice/SliceChecksumDict.ice" \
- "$(slicedir)/IceStorm/Metrics.ice" \
- "$(slicedir)/Ice/Metrics.ice" \
- "$(slicedir)/Ice/BuiltinSequences.ice" \
- ../IceStorm/Election.ice \
- ../IceStorm/SubscriberRecord.ice \
- ../IceStorm/LLURecord.ice \
- "$(slicedir)/Ice/Current.ice" \
- "$(slicedir)/Ice/ObjectAdapterF.ice" \
- "$(slicedir)/Ice/ConnectionF.ice" \
- "$(slicedir)/Ice/Version.ice"
-
Instance.obj: \
Instance.cpp \
"Instance.h" \
@@ -189,12 +153,11 @@ Instance.obj: \
"$(includedir)\IceStorm\Config.h" \
"LLURecord.h" \
"Instrumentation.h" \
- "TraceLevels.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "Observers.h" \
+ "Util.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
"$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"$(includedir)\Ice\Initialize.h" \
"$(includedir)\IceUtil\Timer.h" \
"$(includedir)\IceUtil\Thread.h" \
@@ -237,6 +200,9 @@ Instance.obj: \
"$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "TraceLevels.h" \
+ "Observers.h" \
"$(includedir)\IceUtil\IceUtil.h" \
"$(includedir)\IceUtil\AbstractMutex.h" \
"$(includedir)\IceUtil\Cache.h" \
@@ -361,136 +327,6 @@ InstrumentationI.obj: \
"$(includedir)\Ice\LoggerUtil.h" \
"$(includedir)\Ice\Logger.h" \
-LLUMap.obj: \
- LLUMap.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "LLUMap.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "LLURecord.h" \
-
NodeI.obj: \
NodeI.cpp \
"NodeI.h" \
@@ -629,6 +465,8 @@ NodeI.obj: \
"Replica.h" \
"Instance.h" \
"Instrumentation.h" \
+ "Util.h" \
+ "..\..\src\IceDB\IceDB.h" \
"Observers.h" \
"TraceLevels.h" \
@@ -770,6 +608,8 @@ Observers.obj: \
"Replica.h" \
"Instance.h" \
"Instrumentation.h" \
+ "Util.h" \
+ "..\..\src\IceDB\IceDB.h" \
"TraceLevels.h" \
Service.obj: \
@@ -859,8 +699,8 @@ Service.obj: \
"SubscriberRecord.h" \
"LLURecord.h" \
"Instrumentation.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
+ "TopicManagerI.h" \
+ "Replica.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
"$(includedir)\Ice\Initialize.h" \
@@ -906,25 +746,11 @@ Service.obj: \
"$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "TopicManagerI.h" \
- "Replica.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"TransientTopicManagerI.h" \
"Instance.h" \
+ "Util.h" \
+ "..\..\src\IceDB\IceDB.h" \
"Service.h" \
"$(includedir)\IceBox\IceBox.h" \
"$(includedir)\IceBox\Config.h" \
@@ -1030,172 +856,24 @@ Subscriber.obj: \
"$(includedir)\IceUtil\RecMutex.h" \
"Instance.h" \
"$(includedir)\Ice\PropertiesF.h" \
- "TraceLevels.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "NodeI.h" \
- "$(includedir)\IceUtil\IceUtil.h" \
- "$(includedir)\IceUtil\AbstractMutex.h" \
- "$(includedir)\IceUtil\Cache.h" \
- "$(includedir)\IceUtil\CountDownLatch.h" \
- "$(includedir)\IceUtil\CtrlCHandler.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\UUID.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "Replica.h" \
"Util.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
-
-SubscriberMap.obj: \
- SubscriberMap.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "SubscriberMap.h" \
- "$(includedir)\Freeze\Map.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
"$(includedir)\Ice\Plugin.h" \
"$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
"$(includedir)\Ice\Initialize.h" \
"$(includedir)\IceUtil\Timer.h" \
"$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
"$(includedir)\Ice\InstrumentationF.h" \
"$(includedir)\Ice\Dispatcher.h" \
"$(includedir)\Ice\BatchRequestInterceptor.h" \
"$(includedir)\Ice\LocalException.h" \
"$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
"$(includedir)\Ice\IncomingAsync.h" \
"$(includedir)\Ice\Properties.h" \
"$(includedir)\Ice\Logger.h" \
"$(includedir)\Ice\LoggerUtil.h" \
"$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
"$(includedir)\Ice\Communicator.h" \
"$(includedir)\Ice\RouterF.h" \
"$(includedir)\Ice\LocatorF.h" \
@@ -1222,19 +900,19 @@ SubscriberMap.obj: \
"$(includedir)\Ice\Router.h" \
"$(includedir)\Ice\DispatchInterceptor.h" \
"$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
"$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "SubscriberRecord.h" \
- "$(includedir)\IceStorm\IceStorm.h" \
- "$(includedir)\IceStorm\Metrics.h" \
- "$(includedir)\IceStorm\Config.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "TraceLevels.h" \
+ "NodeI.h" \
+ "$(includedir)\IceUtil\IceUtil.h" \
+ "$(includedir)\IceUtil\AbstractMutex.h" \
+ "$(includedir)\IceUtil\Cache.h" \
+ "$(includedir)\IceUtil\CountDownLatch.h" \
+ "$(includedir)\IceUtil\CtrlCHandler.h" \
+ "$(includedir)\IceUtil\UUID.h" \
+ "Replica.h" \
TopicI.obj: \
TopicI.cpp \
@@ -1319,8 +997,9 @@ TopicI.obj: \
"SubscriberRecord.h" \
"LLURecord.h" \
"Instrumentation.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
+ "Instance.h" \
+ "$(includedir)\Ice\PropertiesF.h" \
+ "Util.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
"$(includedir)\Ice\Plugin.h" \
@@ -1328,7 +1007,6 @@ TopicI.obj: \
"$(includedir)\Ice\Initialize.h" \
"$(includedir)\IceUtil\Timer.h" \
"$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\PropertiesF.h" \
"$(includedir)\Ice\InstrumentationF.h" \
"$(includedir)\Ice\Dispatcher.h" \
"$(includedir)\Ice\BatchRequestInterceptor.h" \
@@ -1368,21 +1046,7 @@ TopicI.obj: \
"$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "Instance.h" \
+ "..\..\src\IceDB\IceDB.h" \
"Subscriber.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"TraceLevels.h" \
@@ -1395,9 +1059,6 @@ TopicI.obj: \
"$(includedir)\IceUtil\UUID.h" \
"Replica.h" \
"Observers.h" \
- "SubscriberMap.h" \
- "LLUMap.h" \
- "Util.h" \
TopicManagerI.obj: \
TopicManagerI.cpp \
@@ -1529,27 +1190,13 @@ TopicManagerI.obj: \
"SubscriberRecord.h" \
"LLURecord.h" \
"Instrumentation.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
"$(includedir)\IceUtil\RecMutex.h" \
"TopicI.h" \
"IceStormInternal.h" \
"TraceLevels.h" \
"Instance.h" \
+ "Util.h" \
+ "..\..\src\IceDB\IceDB.h" \
"NodeI.h" \
"$(includedir)\IceUtil\IceUtil.h" \
"$(includedir)\IceUtil\AbstractMutex.h" \
@@ -1559,9 +1206,6 @@ TopicManagerI.obj: \
"$(includedir)\IceUtil\UUID.h" \
"Observers.h" \
"Subscriber.h" \
- "SubscriberMap.h" \
- "LLUMap.h" \
- "Util.h" \
TraceLevels.obj: \
TraceLevels.cpp \
@@ -1724,14 +1368,11 @@ TransientTopicI.obj: \
"Instance.h" \
"$(includedir)\Ice\PropertiesF.h" \
"Instrumentation.h" \
- "Subscriber.h" \
- "$(includedir)\IceUtil\RecMutex.h" \
- "TraceLevels.h" \
- "$(includedir)\Ice\LoggerF.h" \
"Util.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
"$(includedir)\Ice\Plugin.h" \
+ "$(includedir)\Ice\LoggerF.h" \
"$(includedir)\Ice\Initialize.h" \
"$(includedir)\IceUtil\Timer.h" \
"$(includedir)\IceUtil\Thread.h" \
@@ -1774,22 +1415,10 @@ TransientTopicI.obj: \
"$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "Subscriber.h" \
+ "$(includedir)\IceUtil\RecMutex.h" \
+ "TraceLevels.h" \
TransientTopicManagerI.obj: \
TransientTopicManagerI.cpp \
@@ -1879,8 +1508,7 @@ TransientTopicManagerI.obj: \
"$(includedir)\Ice\LoggerF.h" \
"Instance.h" \
"Instrumentation.h" \
- "Subscriber.h" \
- "$(includedir)\IceUtil\RecMutex.h" \
+ "Util.h" \
"$(includedir)\Ice\Ice.h" \
"$(includedir)\Ice\DeprecatedStringConverter.h" \
"$(includedir)\Ice\Plugin.h" \
@@ -1926,6 +1554,9 @@ TransientTopicManagerI.obj: \
"$(includedir)\Ice\SliceChecksums.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
+ "..\..\src\IceDB\IceDB.h" \
+ "Subscriber.h" \
+ "$(includedir)\IceUtil\RecMutex.h" \
Util.obj: \
Util.cpp \
@@ -2049,300 +1680,15 @@ Util.obj: \
"$(includedir)\Ice\SliceChecksumDict.h" \
"$(includedir)\Ice\Service.h" \
"$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "LLURecord.h" \
- "LLUMap.h" \
-
-V31FormatDB.obj: \
- V31FormatDB.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "V31FormatDB.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "V31Format.h" \
- "LinkRecord.h" \
- "IceStormInternal.h" \
- "$(includedir)\IceStorm\IceStorm.h" \
- "$(includedir)\IceStorm\Metrics.h" \
- "$(includedir)\IceStorm\Config.h" \
- "Election.h" \
+ "..\..\src\IceDB\IceDB.h" \
"SubscriberRecord.h" \
- "LLURecord.h" \
-
-V32FormatDB.obj: \
- V32FormatDB.cpp \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\IceUtil\StringUtil.h" \
- "V32FormatDB.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "V32Format.h" \
- "LinkRecord.h" \
- "IceStormInternal.h" \
"$(includedir)\IceStorm\IceStorm.h" \
"$(includedir)\IceStorm\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
+ "Instance.h" \
"Election.h" \
- "SubscriberRecord.h" \
"LLURecord.h" \
+ "Instrumentation.h" \
Election.obj: \
Election.cpp \
@@ -2826,186 +2172,6 @@ SubscriberRecord.obj: \
"$(includedir)\IceUtil\Thread.h" \
"$(includedir)\Ice\OutgoingAsyncF.h" \
-V31Format.obj: \
- V31Format.cpp \
- "V31Format.h" \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "LinkRecord.h" \
- "IceStormInternal.h" \
- "$(includedir)\IceStorm\IceStorm.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\IceStorm\Metrics.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\IceStorm\Config.h" \
- "Election.h" \
- "SubscriberRecord.h" \
- "LLURecord.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\Outgoing.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
-
-V32Format.obj: \
- V32Format.cpp \
- "V32Format.h" \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "LinkRecord.h" \
- "IceStormInternal.h" \
- "$(includedir)\IceStorm\IceStorm.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\IceStorm\Metrics.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\IceStorm\Config.h" \
- "Election.h" \
- "SubscriberRecord.h" \
- "LLURecord.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\Outgoing.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
-
Admin.obj: \
Admin.cpp \
"$(includedir)\IceUtil\Options.h" \
@@ -3518,155 +2684,3 @@ Scanner.obj: \
"$(includedir)\IceStorm\Metrics.h" \
"$(includedir)\IceStorm\Config.h" \
"Grammar.h" \
-
-Migrate.obj: \
- Migrate.cpp \
- "$(includedir)\Freeze\Freeze.h" \
- "$(includedir)\IceUtil\PushDisableWarnings.h" \
- "$(includedir)\Freeze\Initialize.h" \
- "$(includedir)\Ice\Ice.h" \
- "$(includedir)\Ice\Config.h" \
- "$(includedir)\IceUtil\Config.h" \
- "$(includedir)\Ice\DeprecatedStringConverter.h" \
- "$(includedir)\Ice\CommunicatorF.h" \
- "$(includedir)\Ice\ProxyF.h" \
- "$(includedir)\IceUtil\Shared.h" \
- "$(includedir)\IceUtil\Atomic.h" \
- "$(includedir)\Ice\ProxyHandle.h" \
- "$(includedir)\IceUtil\Handle.h" \
- "$(includedir)\IceUtil\Exception.h" \
- "$(includedir)\Ice\ObjectF.h" \
- "$(includedir)\Ice\Handle.h" \
- "$(includedir)\Ice\Exception.h" \
- "$(includedir)\Ice\Format.h" \
- "$(includedir)\Ice\StreamF.h" \
- "$(includedir)\Ice\LocalObject.h" \
- "$(includedir)\Ice\LocalObjectF.h" \
- "$(includedir)\Ice\StreamHelpers.h" \
- "$(includedir)\IceUtil\ScopedArray.h" \
- "$(includedir)\IceUtil\Iterator.h" \
- "$(includedir)\IceUtil\Optional.h" \
- "$(includedir)\IceUtil\UndefSysMacros.h" \
- "$(includedir)\IceUtil\PopDisableWarnings.h" \
- "$(includedir)\IceUtil\StringConverter.h" \
- "$(includedir)\Ice\Plugin.h" \
- "$(includedir)\Ice\LoggerF.h" \
- "$(includedir)\Ice\BuiltinSequences.h" \
- "$(includedir)\Ice\Initialize.h" \
- "$(includedir)\IceUtil\Timer.h" \
- "$(includedir)\IceUtil\Thread.h" \
- "$(includedir)\IceUtil\Mutex.h" \
- "$(includedir)\IceUtil\Lock.h" \
- "$(includedir)\IceUtil\ThreadException.h" \
- "$(includedir)\IceUtil\Time.h" \
- "$(includedir)\IceUtil\MutexProtocol.h" \
- "$(includedir)\IceUtil\Monitor.h" \
- "$(includedir)\IceUtil\Cond.h" \
- "$(includedir)\Ice\PropertiesF.h" \
- "$(includedir)\Ice\Proxy.h" \
- "$(includedir)\Ice\ProxyFactoryF.h" \
- "$(includedir)\Ice\ConnectionIF.h" \
- "$(includedir)\Ice\RequestHandlerF.h" \
- "$(includedir)\Ice\EndpointF.h" \
- "$(includedir)\Ice\EndpointTypes.h" \
- "$(includedir)\Ice\ObjectAdapterF.h" \
- "$(includedir)\Ice\ReferenceF.h" \
- "$(includedir)\Ice\BatchRequestQueueF.h" \
- "$(includedir)\Ice\AsyncResult.h" \
- "$(includedir)\IceUtil\UniquePtr.h" \
- "$(includedir)\Ice\ConnectionF.h" \
- "$(includedir)\Ice\InstanceF.h" \
- "$(includedir)\Ice\AsyncResultF.h" \
- "$(includedir)\Ice\ObserverHelper.h" \
- "$(includedir)\Ice\Instrumentation.h" \
- "$(includedir)\Ice\Current.h" \
- "$(includedir)\Ice\Identity.h" \
- "$(includedir)\Ice\Version.h" \
- "$(includedir)\Ice\BasicStream.h" \
- "$(includedir)\Ice\Object.h" \
- "$(includedir)\Ice\IncomingAsyncF.h" \
- "$(includedir)\Ice\ObjectFactoryF.h" \
- "$(includedir)\Ice\ObjectFactoryManagerF.h" \
- "$(includedir)\Ice\Buffer.h" \
- "$(includedir)\Ice\Protocol.h" \
- "$(includedir)\Ice\SlicedDataF.h" \
- "$(includedir)\Ice\UserExceptionFactory.h" \
- "$(includedir)\Ice\FactoryTable.h" \
- "$(includedir)\Ice\InstrumentationF.h" \
- "$(includedir)\Ice\Dispatcher.h" \
- "$(includedir)\Ice\BatchRequestInterceptor.h" \
- "$(includedir)\Ice\LocalException.h" \
- "$(includedir)\Ice\PropertiesAdmin.h" \
- "$(includedir)\Ice\GCObject.h" \
- "$(includedir)\IceUtil\MutexPtrLock.h" \
- "$(includedir)\Ice\Incoming.h" \
- "$(includedir)\Ice\ServantLocatorF.h" \
- "$(includedir)\Ice\ServantManagerF.h" \
- "$(includedir)\Ice\ResponseHandlerF.h" \
- "$(includedir)\Ice\IncomingAsync.h" \
- "$(includedir)\Ice\Properties.h" \
- "$(includedir)\Ice\Logger.h" \
- "$(includedir)\Ice\LoggerUtil.h" \
- "$(includedir)\Ice\RemoteLogger.h" \
- "$(includedir)\Ice\FactoryTableInit.h" \
- "$(includedir)\Ice\DefaultObjectFactory.h" \
- "$(includedir)\Ice\ObjectFactory.h" \
- "$(includedir)\Ice\Communicator.h" \
- "$(includedir)\Ice\RouterF.h" \
- "$(includedir)\Ice\LocatorF.h" \
- "$(includedir)\Ice\PluginF.h" \
- "$(includedir)\Ice\ImplicitContextF.h" \
- "$(includedir)\Ice\FacetMap.h" \
- "$(includedir)\Ice\CommunicatorAsync.h" \
- "$(includedir)\Ice\ObjectAdapter.h" \
- "$(includedir)\Ice\Endpoint.h" \
- "$(includedir)\Ice\ServantLocator.h" \
- "$(includedir)\Ice\SlicedData.h" \
- "$(includedir)\Ice\OutgoingAsync.h" \
- "$(includedir)\Ice\OutgoingAsyncF.h" \
- "$(includedir)\Ice\Process.h" \
- "$(includedir)\Ice\Application.h" \
- "$(includedir)\Ice\Connection.h" \
- "$(includedir)\Ice\ConnectionAsync.h" \
- "$(includedir)\Ice\Functional.h" \
- "$(includedir)\IceUtil\Functional.h" \
- "$(includedir)\Ice\Stream.h" \
- "$(includedir)\Ice\ImplicitContext.h" \
- "$(includedir)\Ice\Locator.h" \
- "$(includedir)\Ice\ProcessF.h" \
- "$(includedir)\Ice\Router.h" \
- "$(includedir)\Ice\DispatchInterceptor.h" \
- "$(includedir)\Ice\NativePropertiesAdmin.h" \
- "$(includedir)\Ice\Metrics.h" \
- "$(includedir)\Ice\SliceChecksums.h" \
- "$(includedir)\Ice\SliceChecksumDict.h" \
- "$(includedir)\Ice\Service.h" \
- "$(includedir)\Ice\RegisterPlugins.h" \
- "$(includedir)\Freeze\EvictorF.h" \
- "$(includedir)\Freeze\ConnectionF.h" \
- "$(includedir)\Freeze\Index.h" \
- "$(includedir)\Freeze\DB.h" \
- "$(includedir)\Freeze\Transaction.h" \
- "$(includedir)\Freeze\BackgroundSaveEvictor.h" \
- "$(includedir)\Freeze\Evictor.h" \
- "$(includedir)\Freeze\Exception.h" \
- "$(includedir)\Freeze\TransactionalEvictor.h" \
- "$(includedir)\Freeze\Map.h" \
- "$(includedir)\Freeze\Connection.h" \
- "$(includedir)\Freeze\TransactionHolder.h" \
- "$(includedir)\Freeze\Catalog.h" \
- "$(includedir)\Freeze\CatalogData.h" \
- "IceStormInternal.h" \
- "$(includedir)\IceStorm\IceStorm.h" \
- "$(includedir)\IceStorm\Metrics.h" \
- "$(includedir)\IceStorm\Config.h" \
- "Election.h" \
- "SubscriberRecord.h" \
- "LLURecord.h" \
- "SubscriberMap.h" \
- "LLUMap.h" \
- "V32FormatDB.h" \
- "V32Format.h" \
- "LinkRecord.h" \
- "V31FormatDB.h" \
- "V31Format.h" \
diff --git a/cpp/src/IceStorm/.gitignore b/cpp/src/IceStorm/.gitignore
index 809f31e4118..6ede462d77f 100644
--- a/cpp/src/IceStorm/.gitignore
+++ b/cpp/src/IceStorm/.gitignore
@@ -7,23 +7,13 @@ IceStormInternal.cpp
LLURecord.cpp
SubscriberRecord.cpp
LinkRecord.cpp
-V32Format.cpp
-V31Format.cpp
Instrumentation.h
Election.h
IceStormInternal.h
LLURecord.h
SubscriberRecord.h
LinkRecord.h
-V32Format.h
-V31Format.h
-SubscriberMap.h
-SubscriberMap.cpp
-V32FormatDB.h
-V32FormatDB.cpp
-V31FormatDB.h
-V31FormatDB.cpp
-LLUMap.h
-LLUMap.cpp
LinkRecord.h
LinkRecord.cpp
+DBTypes.h
+DBTypes.cpp
diff --git a/cpp/src/IceStorm/V32Format.ice b/cpp/src/IceStorm/DBTypes.ice
index 377889325f5..4cf063c6eb4 100644
--- a/cpp/src/IceStorm/V32Format.ice
+++ b/cpp/src/IceStorm/DBTypes.ice
@@ -11,13 +11,22 @@
[["cpp:header-ext:h"]]
-#include <IceStorm/LinkRecord.ice>
+#include <IceStorm/SubscriberRecord.ice>
+#include <IceStorm/LLURecord.ice>
-module IceStorm
+module IceStormElection
{
+dictionary<string, LogUpdate> StringLogUpdateDict;
+};
-/** sequence of link records. */
-sequence<LinkRecord> LinkRecordSeq;
+module IceStorm
+{
+dictionary<SubscriberRecordKey, SubscriberRecord> SubscriberRecordDict;
-}; // End module IceStorm
+struct AllData
+{
+ IceStormElection::StringLogUpdateDict llus;
+ IceStorm::SubscriberRecordDict subscribers;
+};
+};
diff --git a/cpp/src/IceStorm/IceStormDB.cpp b/cpp/src/IceStorm/IceStormDB.cpp
new file mode 100644
index 00000000000..2ccd84e5309
--- /dev/null
+++ b/cpp/src/IceStorm/IceStormDB.cpp
@@ -0,0 +1,300 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceUtil/Options.h>
+#include <Ice/Application.h>
+#include <IceDB/IceDB.h>
+#include <IceStorm/DBTypes.h>
+#include <IcePatch2Lib/Util.h>
+#include <IceUtil/DisableWarnings.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceStorm;
+using namespace IceStormElection;
+
+class Client : public Application
+{
+public:
+
+ void usage();
+ virtual int run(int, char*[]);
+};
+
+#ifdef _WIN32
+
+int
+wmain(int argc, wchar_t* argv[])
+
+#else
+
+int
+main(int argc, char* argv[])
+
+#endif
+{
+ Client app;
+ return app.main(argc, argv);
+}
+
+void
+Client::usage()
+{
+ cerr << "Usage: " << appName() << " <options>\n";
+ cerr <<
+ "Options:\n"
+ "-h, --help Show this message.\n"
+ "-v, --version Display version.\n"
+ "--import FILE Import database from FILE.\n"
+ "--export FILE Export database to FILE.\n"
+ "--dbhome DIR The database directory.\n"
+ "-d, --debug Print debug messages."
+ ;
+}
+
+int
+Client::run(int argc, char* argv[])
+{
+ IceUtilInternal::Options opts;
+ opts.addOpt("h", "help");
+ opts.addOpt("v", "version");
+ opts.addOpt("d", "debug");
+ opts.addOpt("", "import", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "export", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "dbhome", IceUtilInternal::Options::NeedArg);
+
+ vector<string> args;
+ try
+ {
+ args = opts.parse(argc, const_cast<const char**>(argv));
+ }
+ catch(const IceUtilInternal::BadOptException& e)
+ {
+ cerr << e.reason << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+ if(!args.empty())
+ {
+ cerr << argv[0] << ": too many arguments" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ if(opts.isSet("help"))
+ {
+ usage();
+ return EXIT_SUCCESS;
+ }
+
+ if(opts.isSet("version"))
+ {
+ cout << ICE_STRING_VERSION << endl;
+ return EXIT_SUCCESS;
+ }
+
+ if((!opts.isSet("import") && !opts.isSet("export")) || (opts.isSet("import") && opts.isSet("export")))
+ {
+ cerr << "Either --import or --export must be set" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ if(!opts.isSet("dbhome"))
+ {
+ cerr << "Database path must be specified" << endl;
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ bool debug = opts.isSet("debug");
+ bool import = opts.isSet("import");
+ string dbFile = opts.optArg(import ? "import" : "export");
+ string dbPath = opts.optArg("dbhome");
+
+ try
+ {
+ IceStorm::AllData data;
+
+ IceDB::IceContext dbContext;
+ dbContext.communicator = communicator();
+ dbContext.encoding = { 1, 1 };
+
+ if(import)
+ {
+ cout << "Importing database to directory " << dbPath << " from file " << dbFile << endl;
+
+ if(!IceUtilInternal::directoryExists(dbPath))
+ {
+ cerr << "Output directory does not exist: " << dbPath << endl;
+ return EXIT_FAILURE;
+ }
+
+ StringSeq files = IcePatch2Internal::readDirectory(dbPath);
+ if(!files.empty())
+ {
+ cerr << "Output directory is not empty: " << dbPath << endl;
+ return EXIT_FAILURE;
+ }
+
+ ifstream fs(dbFile, ios::binary);
+ if(fs.fail())
+ {
+ cerr << "Could not open input file: " << strerror(errno) << endl;
+ return EXIT_FAILURE;
+ }
+ fs.unsetf(ios::skipws);
+
+ fs.seekg(0, ios::end);
+ streampos fileSize = fs.tellg();
+ fs.seekg(0, ios::beg);
+
+ vector<Ice::Byte> buf;
+ buf.reserve(static_cast<size_t>(fileSize));
+ buf.insert(buf.begin(), istream_iterator<Ice::Byte>(fs), istream_iterator<Ice::Byte>());
+
+ fs.close();
+
+ string type;
+ int version;
+
+ Ice::InputStreamPtr stream = Ice::wrapInputStream(communicator(), buf, dbContext.encoding);
+ stream->read(type);
+ if(type != "IceStorm")
+ {
+ cerr << "Incorrect input file type: " << type << endl;
+ return EXIT_FAILURE;
+ }
+ stream->read(version);
+ stream->read(data);
+
+ {
+ IceDB::Env env(dbPath, 2);
+ IceDB::ReadWriteTxn txn(env);
+
+ if(debug)
+ {
+ cout << "Writing LLU Map:" << endl;
+ }
+
+ IceDB::Dbi<string, LogUpdate, IceDB::IceContext, Ice::OutputStreamPtr>
+ lluMap(txn, "llu", dbContext, MDB_CREATE);
+
+ for(StringLogUpdateDict::const_iterator p = data.llus.begin(); p != data.llus.end(); ++p)
+ {
+ if(debug)
+ {
+ cout << " KEY = " << p->first << endl;
+ }
+ lluMap.put(txn, p->first, p->second);
+ }
+
+ if(debug)
+ {
+ cout << "Writing Subscriber Map:" << endl;
+ }
+
+ IceDB::Dbi<SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStreamPtr>
+ subscriberMap(txn, "subscribers", dbContext, MDB_CREATE);
+
+ for(SubscriberRecordDict::const_iterator q = data.subscribers.begin(); q != data.subscribers.end(); ++q)
+ {
+ if(debug)
+ {
+ cout << " KEY = TOPIC(" << communicator()->identityToString(q->first.topic)
+ << ") ID(" << communicator()->identityToString(q->first.id) << ")" <<endl;
+ }
+ subscriberMap.put(txn, q->first, q->second);
+ }
+
+ txn.commit();
+ env.close();
+ }
+ }
+ else
+ {
+ cout << "Exporting database from directory " << dbPath << " to file " << dbFile << endl;
+
+ {
+ IceDB::Env env(dbPath, 2);
+ IceDB::ReadOnlyTxn txn(env);
+
+ if(debug)
+ {
+ cout << "Reading LLU Map:" << endl;
+ }
+
+ IceDB::Dbi<string, LogUpdate, IceDB::IceContext, Ice::OutputStreamPtr>
+ lluMap(txn, "llu", dbContext, 0);
+
+ string s;
+ LogUpdate llu;
+ IceDB::ReadOnlyCursor<string, LogUpdate, IceDB::IceContext, Ice::OutputStreamPtr>
+ lluCursor(lluMap, txn);
+ while(lluCursor.get(s, llu, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " KEY = " << s << endl;
+ }
+ data.llus.insert(std::make_pair(s, llu));
+ }
+ lluCursor.close();
+
+ if(debug)
+ {
+ cout << "Reading Subscriber Map:" << endl;
+ }
+
+ IceDB::Dbi<SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStreamPtr>
+ subscriberMap(txn, "subscribers", dbContext, 0);
+
+ SubscriberRecordKey key;
+ SubscriberRecord record;
+ IceDB::ReadOnlyCursor<SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStreamPtr>
+ subCursor(subscriberMap, txn);
+ while(subCursor.get(key, record, MDB_NEXT))
+ {
+ if(debug)
+ {
+ cout << " KEY = TOPIC(" << communicator()->identityToString(key.topic)
+ << ") ID(" << communicator()->identityToString(key.id) << ")" <<endl;
+ }
+ data.subscribers.insert(std::make_pair(key, record));
+ }
+ subCursor.close();
+
+ txn.abort();
+ env.close();
+ }
+
+ Ice::OutputStreamPtr stream = Ice::createOutputStream(communicator(), dbContext.encoding);
+ stream->write("IceStorm");
+ stream->write(ICE_INT_VERSION);
+ stream->write(data);
+ pair<const Ice::Byte*, const Ice::Byte*> buf = stream->finished();
+
+ ofstream fs(dbFile, ios::binary);
+ if(fs.fail())
+ {
+ cerr << "Could not open output file: " << strerror(errno) << endl;
+ return EXIT_FAILURE;
+ }
+ fs.write(reinterpret_cast<const char*>(buf.first), buf.second - buf.first);
+ fs.close();
+ }
+ }
+ catch(const IceUtil::Exception& ex)
+ {
+ cerr << (import ? "Import" : "Export") << " failed:\n" << ex << endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/cpp/src/IceStorm/IceStormDB.rc b/cpp/src/IceStorm/IceStormDB.rc
new file mode 100644
index 00000000000..bb902f1f62b
--- /dev/null
+++ b/cpp/src/IceStorm/IceStormDB.rc
@@ -0,0 +1,34 @@
+#include "winver.h"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 3,6,1,0
+ PRODUCTVERSION 3,6,1,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "CompanyName", "ZeroC, Inc.\0"
+ VALUE "FileDescription", "IceStormDB\0"
+ VALUE "FileVersion", "3.6.1\0"
+ VALUE "InternalName", "icestormdb\0"
+ VALUE "LegalCopyright", "\251 2003-2015 ZeroC, Inc.\0"
+ VALUE "OriginalFilename", "icestormdb.exe\0"
+ VALUE "ProductName", "Ice\0"
+ VALUE "ProductVersion", "3.6.1\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
diff --git a/cpp/src/IceStorm/Instance.cpp b/cpp/src/IceStorm/Instance.cpp
index 35c74c96ba3..5be83c5bb99 100644
--- a/cpp/src/IceStorm/Instance.cpp
+++ b/cpp/src/IceStorm/Instance.cpp
@@ -21,6 +21,12 @@
using namespace std;
using namespace IceStorm;
using namespace IceStormElection;
+using namespace IceStormInternal;
+
+namespace IceStormInternal
+{
+extern IceDB::IceContext dbContext;
+}
void
TopicReaper::add(const string& name)
@@ -38,6 +44,48 @@ TopicReaper::consumeReapedTopics()
return reaped;
}
+PersistentInstance::PersistentInstance(
+ const string& instanceName,
+ const string& name,
+ const Ice::CommunicatorPtr& communicator,
+ const Ice::ObjectAdapterPtr& publishAdapter,
+ const Ice::ObjectAdapterPtr& topicAdapter,
+ const Ice::ObjectAdapterPtr& nodeAdapter,
+ const NodePrx& nodeProxy) :
+ Instance(instanceName, name, communicator, publishAdapter, topicAdapter, nodeAdapter, nodeProxy),
+ _dbLock(communicator->getProperties()->getPropertyWithDefault(name + ".LMDB.Path", name) + "/icedb.lock"),
+ _dbEnv(communicator->getProperties()->getPropertyWithDefault(name + ".LMDB.Path", name), 2)
+{
+ try
+ {
+ dbContext.communicator = communicator;
+ dbContext.encoding = { 1, 1 };
+
+ IceDB::ReadWriteTxn txn(_dbEnv);
+
+ _lluMap = LLUMap(txn, "llu", dbContext, MDB_CREATE);
+ _subscriberMap = SubscriberMap(txn, "subscribers", dbContext, MDB_CREATE, compareSubscriberRecordKey);
+
+ txn.commit();
+ }
+ catch(...)
+ {
+ shutdown();
+ destroy();
+
+ throw;
+ }
+}
+
+void
+PersistentInstance::destroy()
+{
+ _dbEnv.close();
+ dbContext.communicator = 0;
+
+ Instance::destroy();
+}
+
Instance::Instance(
const string& instanceName,
const string& name,
diff --git a/cpp/src/IceStorm/Instance.h b/cpp/src/IceStorm/Instance.h
index 02e78a26c00..49e7edaa089 100644
--- a/cpp/src/IceStorm/Instance.h
+++ b/cpp/src/IceStorm/Instance.h
@@ -17,6 +17,7 @@
#include <IceUtil/Time.h>
#include <IceStorm/Election.h>
#include <IceStorm/Instrumentation.h>
+#include <IceStorm/Util.h>
namespace IceUtil
{
@@ -89,7 +90,7 @@ public:
int sendTimeout() const;
void shutdown();
- void destroy();
+ virtual void destroy();
private:
@@ -112,9 +113,37 @@ private:
IceUtil::TimerPtr _batchFlusher;
IceUtil::TimerPtr _timer;
IceStorm::Instrumentation::TopicManagerObserverPtr _observer;
+
+
};
typedef IceUtil::Handle<Instance> InstancePtr;
+typedef IceDB::ReadWriteCursor<SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStreamPtr>
+ SubscriberMapRWCursor;
+
+class PersistentInstance : public Instance
+{
+public:
+
+ PersistentInstance(const std::string&, const std::string&, const Ice::CommunicatorPtr&,
+ const Ice::ObjectAdapterPtr&, const Ice::ObjectAdapterPtr&, const Ice::ObjectAdapterPtr& = 0,
+ const IceStormElection::NodePrx& = 0);
+
+ const IceDB::Env& dbEnv() const { return _dbEnv; }
+ LLUMap lluMap() const { return _lluMap; }
+ SubscriberMap subscriberMap() const { return _subscriberMap; }
+
+ virtual void destroy();
+
+private:
+
+ IceUtilInternal::FileLock _dbLock;
+ IceDB::Env _dbEnv;
+ LLUMap _lluMap;
+ SubscriberMap _subscriberMap;
+};
+typedef IceUtil::Handle<PersistentInstance> PersistentInstancePtr;
+
} // End namespace IceStorm
#endif
diff --git a/cpp/src/IceStorm/Makefile b/cpp/src/IceStorm/Makefile
index 2e83e626554..b520301a05d 100644
--- a/cpp/src/IceStorm/Makefile
+++ b/cpp/src/IceStorm/Makefile
@@ -14,35 +14,29 @@ SONAME = $(call mksoname,IceStormService,$(SOVERSION))
LIBNAME = $(call mklibname,IceStormService)
ADMIN = $(bindir)/icestormadmin
-MIGRATE = $(bindir)/icestormmigrate
+DB = $(bindir)/icestormdb
LIBTARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)$(cpp11libdirsuffix)/$(LIBNAME))
-TARGETS = $(LIBTARGETS) $(ADMIN) $(MIGRATE)
+TARGETS = $(LIBTARGETS) $(ADMIN) $(DB)
-SLICE_OBJS = Election.o \
+LSLICE_OBJS = Election.o \
IceStormInternal.o \
Instrumentation.o \
LinkRecord.o \
LLURecord.o \
- SubscriberRecord.o \
- V31Format.o \
- V32Format.o
+ SubscriberRecord.o
LIB_OBJS = Instance.o \
InstrumentationI.o \
- LLUMap.o \
NodeI.o \
Observers.o \
Service.o \
Subscriber.o \
- SubscriberMap.o \
TopicI.o \
TopicManagerI.o \
TraceLevels.o \
TransientTopicI.o \
TransientTopicManagerI.o \
Util.o \
- V31FormatDB.o \
- V32FormatDB.o \
$(SLICE_OBJS)
AOBJS = Admin.o \
@@ -51,27 +45,26 @@ AOBJS = Admin.o \
Scanner.o \
$(SLICE_OBJS)
-MOBJS = LLUMap.o \
- Migrate.o \
- SubscriberMap.o \
- V31FormatDB.o \
- V32FormatDB.o \
- $(SLICE_OBJS)
+DBSLICE_OBJS = DBTypes.o
+
+DBOBJS = IceStormDB.o \
+ $(DBSLICE_OBJS)
+
+SLICE_OBJS = $(LSLICE_OBJS) \
+ $(DBSLICE_OBJS)
OBJS = $(LIB_OBJS) \
$(AOBJS) \
- $(MOBJS)
+ $(DBOBJS)
RPATH_DIR = $(LOADER_PATH)/../$(libsubdir)
-SLICE2FREEZECMD = $(SLICE2FREEZE) -I../.. --ice --include-dir IceStorm $(ICECPPFLAGS)
-
include $(top_srcdir)/config/Make.rules
CPPFLAGS := $(CPPFLAGS) -I.. $(READLINE_FLAGS)
ICECPPFLAGS := $(ICECPPFLAGS) -I..
SLICE2CPPFLAGS := --ice --include-dir IceStorm $(SLICE2CPPFLAGS)
-LINKWITH := $(BZIP2_RPATH_LINK) -lIceStorm -lIceGrid -lGlacier2 -lFreeze -lIceBox -lIce -lIceUtil
+LINKWITH := $(BZIP2_RPATH_LINK) -lIceStorm -lIceGrid -lGlacier2 -lIceBox -lIce -lIceUtil -lIceDB
$(libdir)/$(LIBFILENAME): $(LIB_OBJS)
@mkdir -p $(dir $@)
@@ -91,51 +84,18 @@ $(ADMIN): $(AOBJS) $(LIBTARGETS)
rm -f $@
$(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(AOBJS) -lIceStorm $(READLINE_LIBS) $(LIBS)
-$(MIGRATE): $(MOBJS)
+$(DB): $(DBOBJS) $(LIBTARGETS)
rm -f $@
- $(CXX) $(LDFLAGS) $(DB_RPATH_LINK) $(LDEXEFLAGS) -o $@ $(MOBJS) -lIceStorm -lFreeze $(LIBS)
-
-# The slice2freeze rules are structured like this to avoid issues with
-# parallel make.
-../IceStorm/LLUMap.h: LLUMap.cpp
-LLUMap.cpp: ../IceStorm/LLURecord.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f LLUMap.h LLUMap.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::LLUMap,string,IceStormElection::LogUpdate \
- LLUMap ../IceStorm/LLURecord.ice
-
-../IceStorm/SubscriberMap.h: SubscriberMap.cpp
-SubscriberMap.cpp: ../IceStorm/SubscriberRecord.ice $(slicedir)/Ice/Identity.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f SubscriberMap.h SubscriberMap.cpp
- $(SLICE2FREEZECMD) \
- --dict IceStorm::SubscriberMap,IceStorm::SubscriberRecordKey,IceStorm::SubscriberRecord,sort \
- SubscriberMap ../IceStorm/SubscriberRecord.ice
-
-# Needed for migration.
-../IceStorm/V32FormatDB.h: V32FormatDB.cpp
-V32FormatDB.cpp: ../IceStorm/V32Format.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f V32FormatDB.h V32FormatDB.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::V32Format,Ice::Identity,IceStorm::LinkRecordSeq \
- V32FormatDB ../IceStorm/V32Format.ice
-
-../IceStorm/V31FormatDB.h: V31FormatDB.cpp
-V31FormatDB.cpp: ../IceStorm/V31Format.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- rm -f V31FormatDB.h V31FormatDB.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::V31Format,string,IceStorm::LinkRecordDict \
- V31FormatDB ../IceStorm/V31Format.ice
+ $(CXX) $(LDFLAGS) $(LDEXEFLAGS) -o $@ $(DBOBJS) -lIceStorm -lIceDB -lIcePatch2 $(LIBS)
# Needed for make -jn to work.
../IceStorm/Grammar.y: Grammar.h
clean::
-rm -f LinkRecord.h LinkRecord.cpp
- -rm -f LLUMap.h LLUMap.cpp
- -rm -f SubscriberMap.h SubscriberMap.cpp
- -rm -f V31FormatDB.h V31FormatDB.cpp
- -rm -f V32FormatDB.h V32FormatDB.cpp
install:: all
$(call installlib,$(DESTDIR)$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
$(call installprogram,$(ADMIN),$(DESTDIR)$(install_bindir))
+ $(call installprogram,$(DB),$(DESTDIR)$(install_bindir))
$(call installdata,$(top_srcdir)/../man/man1/icestormadmin.1,$(DESTDIR)$(install_mandir))
- $(call installprogram,$(MIGRATE),$(DESTDIR)$(install_bindir))
- $(call installdata,$(top_srcdir)/../man/man1/icestormmigrate.1,$(DESTDIR)$(install_mandir))
diff --git a/cpp/src/IceStorm/Makefile.mak b/cpp/src/IceStorm/Makefile.mak
index d0df6172157..e29567556a3 100644
--- a/cpp/src/IceStorm/Makefile.mak
+++ b/cpp/src/IceStorm/Makefile.mak
@@ -13,79 +13,72 @@ LIBNAME = $(top_srcdir)\lib\icestormservice$(LIBSUFFIX).lib
DLLNAME = $(top_srcdir)\bin\icestormservice$(SOVERSION)$(LIBSUFFIX)$(COMPSUFFIX).dll
ADMIN = $(top_srcdir)\bin\icestormadmin.exe
-MIGRATE = $(top_srcdir)\bin\icestormmigrate.exe
+DB = $(top_srcdir)\bin\icestormdb.exe
-TARGETS = $(LIBNAME) $(DLLNAME) $(ADMIN) $(MIGRATE)
+TARGETS = $(LIBNAME) $(DLLNAME) $(ADMIN) $(DB)
-SLICE_OBJS = .\Election.obj \
+LSLICE_OBJS = .\Election.obj \
.\IceStormInternal.obj \
.\Instrumentation.obj \
.\LinkRecord.obj \
.\LLURecord.obj \
- .\SubscriberRecord.obj \
- .\V31Format.obj \
- .\V32Format.obj
+ .\SubscriberRecord.obj
BISON_FLEX_OBJS = .\Grammar.obj \
.\Scanner.obj
LIB_OBJS = .\Instance.obj \
.\InstrumentationI.obj \
- .\LLUMap.obj \
.\NodeI.obj \
.\Observers.obj \
.\Service.obj \
.\Subscriber.obj \
- .\SubscriberMap.obj \
.\TopicI.obj \
.\TopicManagerI.obj \
.\TraceLevels.obj \
.\TransientTopicI.obj \
.\TransientTopicManagerI.obj \
.\Util.obj \
- .\V31FormatDB.obj \
- .\V32FormatDB.obj \
- $(SLICE_OBJS)
+ $(LSLICE_OBJS)
AOBJS = .\Admin.obj \
.\Parser.obj \
- $(SLICE_OBJS) \
+ $(LSLICE_OBJS) \
$(BISON_FLEX_OBJS)
-MOBJS = .\LLUMap.obj \
- .\Migrate.obj \
- .\SubscriberMap.obj \
- .\V31FormatDB.obj \
- .\V32FormatDB.obj \
- $(SLICE_OBJS)
+DSLICE_OBJS = .\DBTypes.obj
+
+DOBJS = .\IceStormDB.obj \
+ $(DSLICE_OBJS)
OBJS = $(LIB_OBJS) \
$(AOBJS) \
- $(MOBJS)
+ $(DOBJS)
+
+SLICE_OBJS = $(LSLICE_OBJS) \
+ $(DSLICE_OBJS)
HDIR = $(headerdir)\IceStorm
SDIR = $(slicedir)\IceStorm
-SLICE2FREEZECMD = $(SLICE2FREEZE) -I.. --ice --include-dir IceStorm $(ICECPPFLAGS)
-
!include $(top_srcdir)\config\Make.rules.mak
-CPPFLAGS = -I.. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
+CPPFLAGS = -I.. -I$(LMDB_HOME)\include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
ICECPPFLAGS = $(ICECPPFLAGS) -I..
SLICE2CPPFLAGS = --ice --include-dir IceStorm $(SLICE2CPPFLAGS)
LINKWITH = $(LIBS)
ALINKWITH = $(LIBS)
-MLINKWITH = $(LIBS)
+DLINKWITH = $(LIBS)
!if "$(GENERATE_PDB)" == "yes"
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
APDBFLAGS = /pdb:$(ADMIN:.exe=.pdb)
-MPDBFLAGS = /pdb:$(MIGRATE:.exe=.pdb)
+DPDBFLAGS = /pdb:$(DB:.exe=.pdb)
!endif
RES_FILE = IceStormService.res
ARES_FILE = IceStormAdmin.res
-MRES_FILE = IceStormMigrate.res
+DRES_FILE = IceStormDB.res
$(LIBNAME): $(DLLNAME)
@@ -105,8 +98,8 @@ $(ADMIN): $(AOBJS) $(ARES_FILE)
@if defined SIGN_CERTIFICATE echo ^ ^ ^ Signing $@ && \
signtool sign /f "$(SIGN_CERTIFICATE)" /p $(SIGN_PASSWORD) /t $(SIGN_TIMESTAMPSERVER) $@
-$(MIGRATE): $(MOBJS) $(MRES_FILE)
- $(LINK) $(LD_EXEFLAGS) $(MPDBFLAGS) $(MOBJS) $(SETARGV) $(PREOUT)$@ $(PRELIBS)$(MLINKWITH) $(MRES_FILE)
+$(DB): $(DOBJS) $(DRES_FILE)
+ $(LINK) $(LD_EXEFLAGS) $(DPDBFLAGS) $(DOBJS) $(SETARGV) $(PREOUT)$@ $(PRELIBS)$(DLINKWITH) $(DRES_FILE)
@if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
$(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
@if defined SIGN_CERTIFICATE echo ^ ^ ^ Signing $@ && \
@@ -117,54 +110,28 @@ $(MIGRATE): $(MOBJS) $(MRES_FILE)
del /q $(*F).h $(*F).cpp
"$(SLICE2CPP)" $(SLICE2CPPFLAGS) $(*F).ice
-LLUMap.h LLUMap.cpp: ..\IceStorm\LLURecord.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q LLUMap.h LLUMap.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::LLUMap,string,IceStormElection::LogUpdate LLUMap ..\IceStorm\LLURecord.ice
-
-SubscriberMap.h SubscriberMap.cpp: ..\IceStorm\SubscriberRecord.ice $(slicedir)\Ice\Identity.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q SubscriberMap.h SubscriberMap.cpp
- $(SLICE2FREEZECMD) \
- --dict IceStorm::SubscriberMap,IceStorm::SubscriberRecordKey,IceStorm::SubscriberRecord,sort \
- SubscriberMap ..\IceStorm\SubscriberRecord.ice
-
-# Needed for migration.
-V32FormatDB.h V32FormatDB.cpp: V32Format.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q V32FormatDB.h V32FormatDB.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::V32Format,Ice::Identity,IceStorm::LinkRecordSeq \
- V32FormatDB V32Format.ice
-
-V31FormatDB.h V31FormatDB.cpp: V31Format.ice $(SLICE2FREEZE) $(SLICEPARSERLIB)
- del /q V31FormatDB.h V31FormatDB.cpp
- $(SLICE2FREEZECMD) --dict IceStorm::V31Format,string,IceStorm::LinkRecordDict \
- V31FormatDB V31Format.ice
-
clean::
-del /q Election.cpp Election.h
-del /q IceStormInternal.cpp IceStormInternal.h
-del /q Instrumentation.cpp Instrumentation.h
-del /q LinkRecord.cpp LinkRecord.h
- -del /q LLUMap.h LLUMap.cpp
-del /q LLURecord.cpp LLURecord.h
- -del /q SubscriberMap.h SubscriberMap.cpp
-del /q SubscriberRecord.cpp SubscriberRecord.h
- -del /q V31Format.cpp V31Format.h
- -del /q V32Format.cpp V32Format.h
- -del /q V32FormatDB.cpp V31FormatDB.cpp V32FormatDB.h V31FormatDB.h
-del /q $(ADMIN:.exe=.*)
- -del /q $(MIGRATE:.exe=.*)
- -del /q IceStormAdmin.res IceStormMigrate.res IceStormService.res
+ -del /q $(DB:.exe=.*)
+ -del /q IceStormAdmin.res IceStormService.res
install:: all
copy $(LIBNAME) "$(install_libdir)"
copy $(DLLNAME) "$(install_bindir)"
copy $(ADMIN) "$(install_bindir)"
- copy $(MIGRATE) "$(install_bindir)"
+ copy $(DB) "$(install_bindir)"
!if "$(GENERATE_PDB)" == "yes"
install:: all
copy $(ADMIN:.exe=.pdb) "$(install_bindir)"
- copy $(MIGRATE:.exe=.pdb) "$(install_bindir)"
+ copy $(DB:.exe=.pdb) "$(install_bindir)"
copy $(DLLNAME:.dll=.pdb) "$(install_bindir)"
!endif
diff --git a/cpp/src/IceStorm/Migrate.cpp b/cpp/src/IceStorm/Migrate.cpp
deleted file mode 100644
index 5ff99c17716..00000000000
--- a/cpp/src/IceStorm/Migrate.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#include <Freeze/Freeze.h>
-
-#include <IceStorm/IceStormInternal.h>
-
-#include <IceStorm/SubscriberMap.h>
-#include <IceStorm/LLUMap.h>
-#include <IceStorm/V32FormatDB.h>
-#include <IceStorm/V31FormatDB.h>
-
-using namespace std;
-using namespace Ice;
-using namespace IceStorm;
-
-class Client : public Application
-{
-public:
-
- void usage();
- virtual int run(int, char*[]);
-
-private:
-
- void v32migrate(const Freeze::ConnectionPtr&, SubscriberMap&);
- void v31migrate(const Freeze::ConnectionPtr&, SubscriberMap&);
-};
-
-#ifdef _WIN32
-
-int
-wmain(int argc, wchar_t* argv[])
-
-#else
-
-int
-main(int argc, char* argv[])
-
-#endif
-{
- Client app;
- int rc = app.main(argc, argv);
- return rc;
-}
-
-void
-Client::usage()
-{
- cerr << "Usage: " << appName() << " old-env new-env\n";
- cerr << "\n";
- cerr << "This utility upgrades a 3.1 or 3.2 IceStorm database environment\n";
- cerr << "to a 3.3 or superior IceStorm database environment.\n";
-}
-
-string
-identityToTopicName(const Ice::Identity& id)
-{
- //
- // Work out the topic name. If the category is empty then we're in
- // backwards compatibility mode and the name is just
- // identity.name. Otherwise identity.name is topic.<topicname>.
- //
- if(id.category.empty())
- {
- return id.name;
- }
-
- assert(id.name.length() > 6 && id.name.compare(0, 6, "topic.") == 0);
- return id.name.substr(6);
-}
-
-void
-Client::v32migrate(const Freeze::ConnectionPtr& oldCon, SubscriberMap& subscriberMap)
-{
- // We should not create the old database.
- V32Format topicMap(oldCon, "topics", false);
- Freeze::TransactionHolder oldTxn(oldCon);
-
- for(V32Format::const_iterator p = topicMap.begin(); p != topicMap.end(); ++p)
- {
- // First the placeholder record for the topic.
- SubscriberRecordKey key;
- key.topic = p->first;
- SubscriberRecord rec;
- rec.link = false;
- rec.cost = 0;
- subscriberMap.put(SubscriberMap::value_type(key, rec));
-
- string topicName = identityToTopicName(key.topic);
-
- // Next each link.
- for(LinkRecordSeq::const_iterator q = p->second.begin(); q != p->second.end(); ++q)
- {
- Ice::Identity id = q->theTopic->ice_getIdentity();
- key.id = id;
-
- rec.id = id;
- rec.obj = q->obj;
- rec.theTopic = q->theTopic;
- rec.topicName = topicName;
- rec.link = true;
- rec.cost = q->cost;
-
- subscriberMap.put(SubscriberMap::value_type(key, rec));
- }
- }
-
- oldTxn.rollback();
-}
-
-void
-Client::v31migrate(const Freeze::ConnectionPtr& oldCon, SubscriberMap& subscriberMap)
-{
-
- // We should not create the old database.
- V31Format topicMap(oldCon, "topics", false);
- Freeze::TransactionHolder oldTxn(oldCon);
-
- for(V31Format::const_iterator p = topicMap.begin(); p != topicMap.end(); ++p)
- {
- // First the placeholder record for the topic.
- SubscriberRecordKey key;
- key.topic.name = p->first;
- SubscriberRecord rec;
- rec.link = false;
- rec.cost = 0;
- subscriberMap.put(SubscriberMap::value_type(key, rec));
-
- string topicName = identityToTopicName(key.topic);
-
- // Next each link.
- for(LinkRecordDict::const_iterator q = p->second.begin(); q != p->second.end(); ++q)
- {
- Ice::Identity id = q->second.theTopic->ice_getIdentity();
- key.id = id;
-
- rec.id = id;
- rec.obj = q->second.obj;
- rec.theTopic = q->second.theTopic;
- rec.topicName = topicName;
- rec.link = true;
- rec.cost = q->second.cost;
-
- subscriberMap.put(SubscriberMap::value_type(key, rec));
- }
- }
-
- oldTxn.rollback();
-}
-
-int
-Client::run(int argc, char* argv[])
-{
- if(argc != 3)
- {
- usage();
- return EXIT_FAILURE;
- }
-
- string oldEnvName = argv[1];
- string newEnvName = argv[2];
-
- if(oldEnvName == newEnvName)
- {
- cerr << argv[0] << ": The database environment names must be different" << endl;
- return EXIT_FAILURE;
- }
-
- bool migrate31 = false;
-
- Freeze::ConnectionPtr oldCon = Freeze::createConnection(communicator(), oldEnvName);
- Freeze::Catalog catalog(oldCon, Freeze::catalogName());
- if(catalog.size() != 1 || catalog.begin()->first != "topics")
- {
- cerr << argv[0] << ": The old database environment does not contain an IceStorm database." << endl;
- return EXIT_FAILURE;
- }
- Freeze::CatalogData data = catalog.begin()->second;
- if(!data.evictor && data.key == "string" && data.value == "::IceStorm::LinkRecordDict")
- {
- migrate31 = true;
- }
- else if(!data.evictor && data.key == "::Ice::Identity" && data.value == "::IceStorm::LinkRecordSeq")
- {
- migrate31 = false;
- }
- else
- {
- cerr << argv[0] << ": The old environment contains an unrecognized IceStorm database version." << endl;
- return EXIT_FAILURE;
- }
-
- // Creating the new database is fine.
- Freeze::ConnectionPtr newCon = Freeze::createConnection(communicator(), newEnvName);
- SubscriberMap subscriberMap(newCon, "subscribers");
- LLUMap lluMap(newCon, "llu");
- Freeze::TransactionHolder newTxn(newCon);
-
- if(migrate31)
- {
- v31migrate(oldCon, subscriberMap);
- }
- else
- {
- v32migrate(oldCon, subscriberMap);
- }
-
- // We need to write a record in the LLU map so that if this
- // database is used for a migration this database will be picked
- // as the latest. We use generation 1 since the default is 0.
- IceStormElection::LogUpdate llu;
- llu.generation = 1;
- llu.iteration = 0;
- lluMap.put(LLUMap::value_type("_manager", llu));
-
- newTxn.commit();
-
- return 0;
-}
diff --git a/cpp/src/IceStorm/Service.cpp b/cpp/src/IceStorm/Service.cpp
index 9cfc1bb4139..6c10fbe55ba 100644
--- a/cpp/src/IceStorm/Service.cpp
+++ b/cpp/src/IceStorm/Service.cpp
@@ -15,6 +15,7 @@
#include <IceStorm/TopicManagerI.h>
#include <IceStorm/TransientTopicManagerI.h>
#include <IceStorm/Instance.h>
+#include <IceStorm/Util.h>
#include <IceStorm/Service.h>
@@ -61,6 +62,7 @@ public:
private:
+ void createDbEnv(const Ice::CommunicatorPtr&);
void validateProperties(const string&, const PropertiesPtr&, const LoggerPtr&);
TopicManagerImplPtr _manager;
@@ -183,14 +185,16 @@ ServiceI::start(
if(id == -1) // No replication.
{
- _instance = new Instance(instanceName, name, communicator, publishAdapter, topicAdapter);
-
try
{
- _manager = new TopicManagerImpl(_instance);
+ PersistentInstancePtr instance =
+ new PersistentInstance(instanceName, name, communicator, publishAdapter, topicAdapter);
+ _instance = instance;
+
+ _manager = new TopicManagerImpl(instance);
_managerProxy = TopicManagerPrx::uncheckedCast(topicAdapter->add(_manager->getServant(), topicManagerId));
}
- catch(const Ice::Exception& ex)
+ catch(const IceUtil::Exception& ex)
{
_instance = 0;
@@ -336,8 +340,11 @@ ServiceI::start(
Ice::ObjectAdapterPtr nodeAdapter = communicator->createObjectAdapter(name + ".Node");
- _instance = new Instance(instanceName, name, communicator, publishAdapter, topicAdapter,
- nodeAdapter, nodes[id]);
+ PersistentInstancePtr instance =
+ new PersistentInstance(instanceName, name, communicator, publishAdapter, topicAdapter,
+ nodeAdapter, nodes[id]);
+ _instance = instance;
+
_instance->observers()->setMajority(static_cast<unsigned int>(nodes.size())/2);
// Trace replication information.
@@ -366,7 +373,7 @@ ServiceI::start(
_managerProxy = TopicManagerPrx::uncheckedCast(topicAdapter->createIndirectProxy(topicManagerId));
}
- _manager = new TopicManagerImpl(_instance);
+ _manager = new TopicManagerImpl(instance);
topicAdapter->add(_manager->getServant(), topicManagerId);
ostringstream os; // The node object identity.
@@ -382,7 +389,7 @@ ServiceI::start(
node->start();
}
- catch(const Ice::Exception& ex)
+ catch(const IceUtil::Exception& ex)
{
_instance = 0;
@@ -420,7 +427,7 @@ ServiceI::start(const CommunicatorPtr& communicator,
// This is for IceGrid only and as such we use a transient
// implementation of IceStorm.
string instanceName = communicator->getProperties()->getPropertyWithDefault(name + ".InstanceName", "IceStorm");
- _instance = new Instance(instanceName, name, communicator, publishAdapter, topicAdapter);
+ _instance = new Instance(instanceName, name, communicator, publishAdapter, topicAdapter, 0);
try
{
@@ -536,7 +543,8 @@ ServiceI::validateProperties(const string& name, const PropertiesPtr& properties
"SQL.Port",
"SQL.DatabaseName",
"SQL.UserName",
- "SQL.Password"
+ "SQL.Password",
+ "LMDB.Path"
};
vector<string> unknownProps;
diff --git a/cpp/src/IceStorm/TopicI.cpp b/cpp/src/IceStorm/TopicI.cpp
index 422e3456383..2bd4f7420a0 100644
--- a/cpp/src/IceStorm/TopicI.cpp
+++ b/cpp/src/IceStorm/TopicI.cpp
@@ -13,8 +13,6 @@
#include <IceStorm/TraceLevels.h>
#include <IceStorm/NodeI.h>
#include <IceStorm/Observers.h>
-#include <IceStorm/SubscriberMap.h>
-#include <IceStorm/LLUMap.h>
#include <IceStorm/Util.h>
#include <Ice/LoggerUtil.h>
#include <algorithm>
@@ -24,15 +22,11 @@ using namespace IceStorm;
using namespace IceStormElection;
using namespace IceStormInternal;
-using namespace Freeze;
-
namespace
{
-const string subscriberDbName = "subscribers";
-
void
-halt(const Ice::CommunicatorPtr& com, const DatabaseException& ex)
+halt(const Ice::CommunicatorPtr& com, const IceDB::LMDBException& ex)
{
{
Ice::Error error(com->getLogger());
@@ -50,7 +44,7 @@ class PublisherI : public Ice::BlobjectArray
{
public:
- PublisherI(const TopicImplPtr& topic, const InstancePtr& instance) :
+ PublisherI(const TopicImplPtr& topic, const PersistentInstancePtr& instance) :
_topic(topic), _instance(instance)
{
}
@@ -80,7 +74,7 @@ public:
private:
const TopicImplPtr _topic;
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
};
//
@@ -91,7 +85,7 @@ class TopicLinkI : public TopicLink
{
public:
- TopicLinkI(const TopicImplPtr& impl, const InstancePtr& instance) :
+ TopicLinkI(const TopicImplPtr& impl, const PersistentInstancePtr& instance) :
_impl(impl), _instance(instance)
{
}
@@ -106,14 +100,14 @@ public:
private:
const TopicImplPtr _impl;
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
};
class TopicI : public TopicInternal
{
public:
- TopicI(const TopicImplPtr& impl, const InstancePtr& instance) :
+ TopicI(const TopicImplPtr& impl, const PersistentInstancePtr& instance) :
_impl(impl), _instance(instance)
{
}
@@ -343,26 +337,22 @@ private:
}
const TopicImplPtr _impl;
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
};
}
-namespace IceStorm
-{
-extern string identityToTopicName(const Ice::Identity& id);
-}
-
TopicImpl::TopicImpl(
- const InstancePtr& instance,
+ const PersistentInstancePtr& instance,
const string& name,
const Ice::Identity& id,
const SubscriberRecordSeq& subscribers) :
_instance(instance),
- _connection(Freeze::createConnection(instance->communicator(), instance->serviceName())),
_name(name),
_id(id),
- _destroyed(false)
+ _destroyed(false),
+ _lluMap(_instance->lluMap()),
+ _subscriberMap(_instance->subscriberMap())
{
try
{
@@ -496,7 +486,7 @@ TopicImpl::getNonReplicatedPublisher() const
namespace
{
void
-trace(Ice::Trace& out, const InstancePtr& instance, const vector<SubscriberPtr>& s)
+trace(Ice::Trace& out, const PersistentInstancePtr& instance, const vector<SubscriberPtr>& s)
{
out << '[';
for(vector<SubscriberPtr>::const_iterator p = s.begin(); p != s.end(); ++p)
@@ -568,34 +558,30 @@ TopicImpl::subscribeAndGetPublisher(const QoS& qos, const Ice::ObjectPrx& obj)
LogUpdate llu;
SubscriberPtr subscriber = Subscriber::create(_instance, record);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberRecordKey key;
- key.topic = _id;
- key.id = subscriber->id();
+ SubscriberRecordKey key;
+ key.topic = _id;
+ key.id = subscriber->id();
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.put(SubscriberMap::value_type(key, record));
+ _subscriberMap.put(txn, key, record);
- llu = getLLU(_connection);
- llu.iteration++;
- putLLU(_connection, llu);
+ llu = getIncrementedLLU(txn, _lluMap);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ txn.commit();
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ ostringstream os;
+ os << "subscriber identity is too long: ";
+ os << _instance->communicator()->identityToString(subscriber->id());
+ throw InvalidSubscriber(os.str());
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_subscribers.push_back(subscriber);
@@ -680,7 +666,7 @@ TopicImpl::link(const TopicPrx& topic, Ice::Int cost)
vector<SubscriberPtr>::iterator p = find(_subscribers.begin(), _subscribers.end(), record.id);
if(p != _subscribers.end())
{
- string name = identityToTopicName(id);
+ string name = IceStormInternal::identityToTopicName(id);
LinkExists ex;
ex.name = name;
throw ex;
@@ -690,34 +676,23 @@ TopicImpl::link(const TopicPrx& topic, Ice::Int cost)
SubscriberPtr subscriber = Subscriber::create(_instance, record);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberRecordKey key;
- key.topic = _id;
- key.id = id;
+ SubscriberRecordKey key;
+ key.topic = _id;
+ key.id = id;
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.put(SubscriberMap::value_type(key, record));
+ _subscriberMap.put(txn, key, record);
- llu = getLLU(_connection);
- llu.iteration++;
- putLLU(_connection, llu);
+ llu = getIncrementedLLU(txn, _lluMap);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_subscribers.push_back(subscriber);
@@ -739,7 +714,7 @@ TopicImpl::unlink(const TopicPrx& topic)
vector<SubscriberPtr>::const_iterator p = find(_subscribers.begin(), _subscribers.end(), id);
if(p == _subscribers.end())
{
- string name = identityToTopicName(id);
+ string name = IceStormInternal::identityToTopicName(id);
TraceLevelsPtr traceLevels = _instance->traceLevels();
if(traceLevels->topic > 0)
{
@@ -814,7 +789,7 @@ TopicImpl::getLinkInfoSeq() const
if(record.link && !(*p)->errored())
{
LinkInfo info;
- info.name = identityToTopicName(record.theTopic->ice_getIdentity());
+ info.name = IceStormInternal::identityToTopicName(record.theTopic->ice_getIdentity());
info.cost = record.cost;
info.theTopic = record.theTopic;
seq.push_back(info);
@@ -974,7 +949,7 @@ class TopicInternalReapCB : public IceUtil::Shared
{
public:
- TopicInternalReapCB(const InstancePtr& instance, Ice::Long generation) :
+ TopicInternalReapCB(const PersistentInstancePtr& instance, Ice::Long generation) :
_instance(instance), _generation(generation)
{
}
@@ -992,7 +967,7 @@ public:
private:
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
const Ice::Long _generation;
};
@@ -1112,33 +1087,24 @@ TopicImpl::observerAddSubscriber(const LogUpdate& llu, const SubscriberRecord& r
}
SubscriberPtr subscriber = Subscriber::create(_instance, record);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberRecordKey key;
- key.topic = _id;
- key.id = subscriber->id();
+ SubscriberRecordKey key;
+ key.topic = _id;
+ key.id = subscriber->id();
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.put(SubscriberMap::value_type(key, record));
+ _subscriberMap.put(txn, key, record);
- // Update the LLU.
- putLLU(_connection, llu);
+ // Update the LLU.
+ _lluMap.put(txn, lluDbKey, llu);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_subscribers.push_back(subscriber);
@@ -1179,33 +1145,26 @@ TopicImpl::observerRemoveSubscriber(const LogUpdate& llu, const Ice::IdentitySeq
}
// Next remove from the database.
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
-
- for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
- {
- SubscriberRecordKey key;
- key.topic = _id;
- key.id = *id;
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.erase(key);
- }
- putLLU(_connection, llu);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
{
- halt(_instance->communicator(), ex);
+ SubscriberRecordKey key;
+ key.topic = _id;
+ key.id = *id;
+
+ _subscriberMap.del(txn, key);
}
+
+ _lluMap.put(txn, lluDbKey, llu);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
}
@@ -1272,46 +1231,43 @@ TopicImpl::destroyInternal(const LogUpdate& origLLU, bool master)
// Clear out the database records related to this topic.
LogUpdate llu;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- // Erase all subscriber records and the topic record.
- SubscriberMap subscriberMap(_connection, subscriberDbName);
+ // Erase all subscriber records and the topic record.
+ SubscriberRecordKey key;
+ key.topic = _id;
- IceStorm::SubscriberRecordKey key;
- key.topic = _id;
- SubscriberMap::iterator p = subscriberMap.find(key);
- while(p != subscriberMap.end() && p->first.topic == key.topic)
- {
- subscriberMap.erase(p++);
- }
+ SubscriberMapRWCursor cursor(_subscriberMap, txn);
+ if(cursor.find(key))
+ {
+ _subscriberMap.del(txn, key);
- // Update the LLU.
- if(master)
- {
- llu = getLLU(_connection);
- llu.iteration++;
- }
- else
+ SubscriberRecordKey k;
+ SubscriberRecord v;
+ while(cursor.get(k, v, MDB_NEXT) && k.topic == key.topic)
{
- llu = origLLU;
+ _subscriberMap.del(txn, k);
}
- putLLU(_connection, llu);
-
- txn.commit();
- break;
}
- catch(const DeadlockException&)
+
+ // Update the LLU.
+ if(master)
{
- continue;
+ llu = getIncrementedLLU(txn, _lluMap);
}
- catch(const DatabaseException& ex)
+ else
{
- halt(_instance->communicator(), ex);
+ llu = origLLU;
+ _lluMap.put(txn, lluDbKey, llu);
}
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_instance->topicAdapter()->remove(_id);
@@ -1352,37 +1308,26 @@ TopicImpl::removeSubscribers(const Ice::IdentitySeq& ids)
// Next update the database and send the notification to any
// slaves.
LogUpdate llu;
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
- {
- SubscriberRecordKey key;
- key.topic = _id;
- key.id = *id;
+ for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
+ {
+ SubscriberRecordKey key;
+ key.topic = _id;
+ key.id = *id;
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.erase(key);
- }
+ _subscriberMap.del(txn, key);
+ }
- llu = getLLU(_connection);
- llu.iteration++;
- putLLU(_connection, llu);
+ llu = getIncrementedLLU(txn, _lluMap);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_instance->observers()->removeSubscriber(llu, _name, ids);
diff --git a/cpp/src/IceStorm/TopicI.h b/cpp/src/IceStorm/TopicI.h
index 355818b4cbc..a8c0bbdcbfd 100644
--- a/cpp/src/IceStorm/TopicI.h
+++ b/cpp/src/IceStorm/TopicI.h
@@ -13,16 +13,16 @@
#include <IceStorm/IceStormInternal.h>
#include <IceStorm/Election.h>
#include <IceStorm/Instrumentation.h>
+#include <IceStorm/Util.h>
#include <Ice/ObserverHelper.h>
-#include <Freeze/Freeze.h>
#include <list>
namespace IceStorm
{
// Forward declarations
-class Instance;
-typedef IceUtil::Handle<Instance> InstancePtr;
+class PersistentInstance;
+typedef IceUtil::Handle<PersistentInstance> PersistentInstancePtr;
class Subscriber;
typedef IceUtil::Handle<Subscriber> SubscriberPtr;
@@ -31,7 +31,7 @@ class TopicImpl : public IceUtil::Shared
{
public:
- TopicImpl(const InstancePtr&, const std::string&, const Ice::Identity&, const SubscriberRecordSeq&);
+ TopicImpl(const PersistentInstancePtr&, const std::string&, const Ice::Identity&, const SubscriberRecordSeq&);
~TopicImpl();
std::string getName() const;
@@ -77,11 +77,9 @@ private:
// Immutable members.
//
const Ice::ObjectPrx _publisherReplicaProxy;
- const InstancePtr _instance;
- const Freeze::ConnectionPtr _connection;
+ const PersistentInstancePtr _instance;
const std::string _name; // The topic name
const Ice::Identity _id; // The topic identity
- const std::string _envName;
IceInternal::ObserverHelperT<IceStorm::Instrumentation::TopicObserver> _observer;
@@ -103,6 +101,9 @@ private:
std::vector<SubscriberPtr> _subscribers;
bool _destroyed; // Has this Topic been destroyed?
+
+ LLUMap _lluMap;
+ SubscriberMap _subscriberMap;
};
typedef IceUtil::Handle<TopicImpl> TopicImplPtr;
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index 0de2ab58aa9..c05ee2b8193 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -14,8 +14,6 @@
#include <IceStorm/NodeI.h>
#include <IceStorm/Observers.h>
#include <IceStorm/Subscriber.h>
-#include <IceStorm/SubscriberMap.h>
-#include <IceStorm/LLUMap.h>
#include <IceStorm/Util.h>
#include <Ice/SliceChecksums.h>
@@ -26,15 +24,11 @@ using namespace IceStorm;
using namespace IceStormElection;
using namespace IceStormInternal;
-using namespace Freeze;
-
namespace
{
-const string subscriberDbName = "subscribers";
-
void
-halt(const Ice::CommunicatorPtr& com, const DatabaseException& ex)
+halt(const Ice::CommunicatorPtr& com, const IceDB::LMDBException& ex)
{
{
Ice::Error error(com->getLogger());
@@ -48,7 +42,7 @@ class TopicManagerI : public TopicManagerInternal
{
public:
- TopicManagerI(const InstancePtr& instance, const TopicManagerImplPtr& impl) :
+ TopicManagerI(const PersistentInstancePtr& instance, const TopicManagerImplPtr& impl) :
_instance(instance), _impl(impl)
{
}
@@ -130,7 +124,7 @@ private:
}
}
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
const TopicManagerImplPtr _impl;
};
@@ -138,7 +132,7 @@ class ReplicaObserverI : public ReplicaObserver
{
public:
- ReplicaObserverI(const InstancePtr& instance, const TopicManagerImplPtr& impl) :
+ ReplicaObserverI(const PersistentInstancePtr& instance, const TopicManagerImplPtr& impl) :
_instance(instance),
_impl(impl)
{
@@ -228,7 +222,7 @@ public:
private:
- const InstancePtr _instance;
+ const PersistentInstancePtr _instance;
const TopicManagerImplPtr _impl;
};
@@ -258,42 +252,10 @@ private:
}
-namespace IceStorm
-{
-
-string
-identityToTopicName(const Ice::Identity& id)
-{
- //
- // Work out the topic name. If the category is empty then we're in
- // backwards compatibility mode and the name is just
- // identity.name. Otherwise identity.name is topic.<topicname>.
- //
- if(id.category.empty())
- {
- return id.name;
- }
-
- assert(id.name.length() > 6 && id.name.compare(0, 6, "topic.") == 0);
- return id.name.substr(6);
-}
-
-Ice::Identity
-nameToIdentity(const InstancePtr& instance, const string& name)
-{
- // Identity is instanceName>/topic.<topicname>
- Ice::Identity id;
- id.category = instance->instanceName();
- id.name = "topic." + name;
-
- return id;
-}
-
-}
-
-TopicManagerImpl::TopicManagerImpl(const InstancePtr& instance) :
+TopicManagerImpl::TopicManagerImpl(const PersistentInstancePtr& instance) :
_instance(instance),
- _connection(Freeze::createConnection(instance->communicator(), instance->serviceName()))
+ _lluMap(instance->lluMap()),
+ _subscriberMap(instance->subscriberMap())
{
try
{
@@ -309,7 +271,6 @@ TopicManagerImpl::TopicManagerImpl(const InstancePtr& instance) :
// here.
_managerImpl = new TopicManagerI(instance, this);
- Ice::PropertiesPtr properties = _instance->communicator()->getProperties();
// If there is no node adapter we don't need to start the
// observer, nor sync since we're not replicating.
if(_instance->nodeAdapter())
@@ -320,35 +281,43 @@ TopicManagerImpl::TopicManagerImpl(const InstancePtr& instance) :
_sync = _instance->nodeAdapter()->addWithUUID(_syncImpl);
}
-
-
- // Ensure that the llu counter is present in the log.
- LogUpdate empty = {0, 0};
- putLLU(_connection, empty);
-
- // Recreate each of the topics.
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- SubscriberMap::const_iterator p = subscriberMap.begin();
- while(p != subscriberMap.end())
{
- // This record has to be a place holder record, otherwise
- // there is a database bug.
- assert(p->first.id.name.empty() && p->first.id.category.empty());
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- Ice::Identity topic = p->first.topic;
+ // Ensure that the llu counter is present in the log.
+ LogUpdate empty = {0, 0};
+ _instance->lluMap().put(txn, lluDbKey, empty);
- // Skip the place holder.
- ++p;
- SubscriberRecordSeq content;
- while(p != subscriberMap.end() && p->first.topic == topic)
+ // Recreate each of the topics.
+ SubscriberRecordKey k;
+ SubscriberRecord v;
+
+ SubscriberMapRWCursor cursor(_subscriberMap, txn);
+ if(cursor.get(k, v, MDB_FIRST))
{
- content.push_back(p->second);
- ++p;
+ bool moreTopics = false;
+ do
+ {
+ // This record has to be a place holder record, otherwise
+ // there is a database bug.
+ assert(k.id.name.empty() && k.id.category.empty());
+
+ Ice::Identity topic = k.topic;
+
+ bool moreTopics;
+ SubscriberRecordSeq content;
+ while((moreTopics = cursor.get(k, v, MDB_NEXT)) && k.topic == topic)
+ {
+ content.push_back(v);
+ }
+
+ string name = identityToTopicName(topic);
+ installTopic(name, topic, false, content);
+ } while(moreTopics);
}
- string name = identityToTopicName(topic);
- installTopic(name, topic, false, content);
+ txn.commit();
}
}
catch(...)
@@ -380,38 +349,34 @@ TopicManagerImpl::create(const string& name)
// Identity is instanceName>/topic.<topicname>
Ice::Identity id = nameToIdentity(_instance, name);
- LogUpdate llu;
- for(;;)
+ LogUpdate llu;
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberRecordKey key;
- key.topic = id;
- SubscriberRecord rec;
- rec.link = false;
- rec.cost = 0;
+ SubscriberRecordKey key;
+ key.topic = id;
+ SubscriberRecord rec;
+ rec.link = false;
+ rec.cost = 0;
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.put(SubscriberMap::value_type(key, rec));
+ _subscriberMap.put(txn, key, rec);
- llu = getLLU(_connection);
- llu.iteration++;
- putLLU(_connection, llu);
+ llu = getIncrementedLLU(txn, _lluMap);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ txn.commit();
+ }
+ catch(const IceDB::KeyTooLongException&)
+ {
+ ostringstream os;
+ os << "topic name is too long: ";
+ os << name;
+ throw InvalidTopic(os.str());
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
_instance->observers()->createTopic(llu, name);
@@ -484,47 +449,38 @@ TopicManagerImpl::observerInit(const LogUpdate& llu, const TopicContentSeq& cont
// First we update the database state, and then we update our
// internal state.
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- putLLU(_connection, llu);
+ _lluMap.put(txn, lluDbKey, llu);
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- subscriberMap.clear();
+ _subscriberMap.clear(txn);
- for(TopicContentSeq::const_iterator p = content.begin(); p != content.end(); ++p)
+ for(TopicContentSeq::const_iterator p = content.begin(); p != content.end(); ++p)
+ {
+ SubscriberRecordKey key;
+ key.topic = p->id;
+ SubscriberRecord rec;
+ rec.link = false;
+ rec.cost = 0;
+
+ _subscriberMap.put(txn, key, rec);
+
+ for(SubscriberRecordSeq::const_iterator q = p->records.begin(); q != p->records.end(); ++q)
{
SubscriberRecordKey key;
key.topic = p->id;
- SubscriberRecord rec;
- rec.link = false;
- rec.cost = 0;
-
- subscriberMap.put(SubscriberMap::value_type(key, rec));
+ key.id = q->id;
- for(SubscriberRecordSeq::const_iterator q = p->records.begin(); q != p->records.end(); ++q)
- {
- SubscriberRecordKey key;
- key.topic = p->id;
- key.id = q->id;
-
- subscriberMap.put(SubscriberMap::value_type(key, *q));
- }
+ _subscriberMap.put(txn, key, *q);
}
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
}
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
// We do this with two scans. The first runs through the topics
@@ -586,38 +542,29 @@ TopicManagerImpl::observerCreateTopic(const LogUpdate& llu, const string& name)
Lock sync(*this);
Ice::Identity id = nameToIdentity(_instance, name);
- for(;;)
+ try
{
- try
- {
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- SubscriberRecordKey key;
- key.topic = id;
- SubscriberRecord rec;
- rec.link = false;
- rec.cost = 0;
+ SubscriberRecordKey key;
+ key.topic = id;
+ SubscriberRecord rec;
+ rec.link = false;
+ rec.cost = 0;
- SubscriberMap subscriberMap(_connection, subscriberDbName);
- if(subscriberMap.find(key) != subscriberMap.end())
- {
- throw ObserverInconsistencyException("topic exists: " + name);
- }
- subscriberMap.put(SubscriberMap::value_type(key, rec));
-
- putLLU(_connection, llu);
-
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
+ if(_subscriberMap.find(txn, key))
{
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
+ throw ObserverInconsistencyException("topic exists: " + name);
}
+ _subscriberMap.put(txn, key, rec);
+
+ _lluMap.put(txn, lluDbKey, llu);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
installTopic(name, id, true);
}
@@ -681,48 +628,38 @@ TopicManagerImpl::getContent(LogUpdate& llu, TopicContentSeq& content)
reap();
}
- for(;;)
+ try
{
- try
+ content.clear();
+ for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
{
- content.clear();
- for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
- {
- TopicContent rec = p->second->getContent();
- content.push_back(rec);
- }
- llu = getLLU(_connection);
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
+ TopicContent rec = p->second->getContent();
+ content.push_back(rec);
}
+
+ IceDB::ReadOnlyTxn txn(_instance->dbEnv());
+ _lluMap.get(txn, lluDbKey, llu);
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
}
LogUpdate
TopicManagerImpl::getLastLogUpdate() const
{
- for(;;)
+ LogUpdate llu;
+ try
{
- try
- {
- return getLLU(_connection);
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
- {
- halt(_instance->communicator(), ex);
- }
+ IceDB::ReadOnlyTxn txn(_instance->dbEnv());
+ _lluMap.get(txn, lluDbKey, llu);
}
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
+ }
+ return llu;
}
void
@@ -757,31 +694,25 @@ TopicManagerImpl::initMaster(const set<GroupNodeInfo>& slaves, const LogUpdate&
// elected and gets the latest database state it immediately
// updates the llu stamp.
//
- for(;;)
+ try
{
- try
- {
- content.clear();
+ content.clear();
- TransactionHolder txn(_connection);
+ IceDB::ReadWriteTxn txn(_instance->dbEnv());
- for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
- {
- TopicContent rec = p->second->getContent();
- content.push_back(rec);
- }
- putLLU(_connection, llu);
- txn.commit();
- break;
- }
- catch(const DeadlockException&)
- {
- continue;
- }
- catch(const DatabaseException& ex)
+ for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
{
- halt(_instance->communicator(), ex);
+ TopicContent rec = p->second->getContent();
+ content.push_back(rec);
}
+
+ _lluMap.put(txn, lluDbKey, llu);
+
+ txn.commit();
+ }
+ catch(const IceDB::LMDBException& ex)
+ {
+ halt(_instance->communicator(), ex);
}
// Now initialize the observers.
diff --git a/cpp/src/IceStorm/TopicManagerI.h b/cpp/src/IceStorm/TopicManagerI.h
index 0dd67a019d9..448062781e4 100644
--- a/cpp/src/IceStorm/TopicManagerI.h
+++ b/cpp/src/IceStorm/TopicManagerI.h
@@ -15,8 +15,7 @@
#include <IceStorm/Replica.h>
#include <IceStorm/Election.h>
#include <IceStorm/Instrumentation.h>
-
-#include <Freeze/Freeze.h>
+#include <IceStorm/Util.h>
#include <IceUtil/RecMutex.h>
@@ -26,8 +25,8 @@ namespace IceStorm
//
// Forward declarations.
//
-class Instance;
-typedef IceUtil::Handle<Instance> InstancePtr;
+class PersistentInstance;
+typedef IceUtil::Handle<PersistentInstance> PersistentInstancePtr;
class TopicImpl;
typedef IceUtil::Handle<TopicImpl> TopicImplPtr;
@@ -41,7 +40,7 @@ class TopicManagerImpl : public IceStormElection::Replica,
{
public:
- TopicManagerImpl(const InstancePtr&);
+ TopicManagerImpl(const PersistentInstancePtr&);
~TopicManagerImpl();
// TopicManager methods.
@@ -81,8 +80,7 @@ private:
TopicPrx installTopic(const std::string&, const Ice::Identity&, bool,
const IceStorm::SubscriberRecordSeq& = IceStorm::SubscriberRecordSeq());
- const InstancePtr _instance;
- const Freeze::ConnectionPtr _connection;
+ const PersistentInstancePtr _instance;
std::map<std::string, TopicImplPtr> _topics;
@@ -92,6 +90,8 @@ private:
Ice::ObjectPtr _syncImpl;
Ice::ObjectPrx _sync;
+ LLUMap _lluMap;
+ SubscriberMap _subscriberMap;
};
typedef IceUtil::Handle<TopicManagerImpl> TopicManagerImplPtr;
diff --git a/cpp/src/IceStorm/TransientTopicI.cpp b/cpp/src/IceStorm/TransientTopicI.cpp
index 5f52ebe2a2e..86ba24f2509 100644
--- a/cpp/src/IceStorm/TransientTopicI.cpp
+++ b/cpp/src/IceStorm/TransientTopicI.cpp
@@ -94,11 +94,6 @@ private:
}
-namespace IceStorm
-{
-extern string identityToTopicName(const Ice::Identity& id);
-}
-
TransientTopicImpl::TransientTopicImpl(
const InstancePtr& instance,
const string& name,
@@ -398,7 +393,7 @@ TransientTopicImpl::link(const TopicPrx& topic, Ice::Int cost, const Ice::Curren
vector<SubscriberPtr>::iterator p = find(_subscribers.begin(), _subscribers.end(), record.id);
if(p != _subscribers.end())
{
- string name = identityToTopicName(id);
+ string name = IceStormInternal::identityToTopicName(id);
LinkExists ex;
ex.name = name;
throw ex;
@@ -422,7 +417,7 @@ TransientTopicImpl::unlink(const TopicPrx& topic, const Ice::Current&)
vector<SubscriberPtr>::iterator p = find(_subscribers.begin(), _subscribers.end(), id);
if(p == _subscribers.end())
{
- string name = identityToTopicName(id);
+ string name = IceStormInternal::identityToTopicName(id);
TraceLevelsPtr traceLevels = _instance->traceLevels();
if(traceLevels->topic > 0)
{
@@ -464,7 +459,7 @@ TransientTopicImpl::getLinkInfoSeq(const Ice::Current&) const
if(record.link && !(*p)->errored())
{
LinkInfo info;
- info.name = identityToTopicName(record.theTopic->ice_getIdentity());
+ info.name = IceStormInternal::identityToTopicName(record.theTopic->ice_getIdentity());
info.cost = record.cost;
info.theTopic = record.theTopic;
seq.push_back(info);
diff --git a/cpp/src/IceStorm/TransientTopicManagerI.cpp b/cpp/src/IceStorm/TransientTopicManagerI.cpp
index 9099a7409ec..12595bf202b 100644
--- a/cpp/src/IceStorm/TransientTopicManagerI.cpp
+++ b/cpp/src/IceStorm/TransientTopicManagerI.cpp
@@ -22,13 +22,6 @@
using namespace IceStorm;
using namespace std;
-namespace IceStorm
-{
-
-extern Ice::Identity nameToIdentity(const InstancePtr&, const string&);
-
-}
-
TransientTopicManagerImpl::TransientTopicManagerImpl(const InstancePtr& instance) :
_instance(instance)
{
@@ -52,7 +45,7 @@ TransientTopicManagerImpl::create(const string& name, const Ice::Current&)
throw ex;
}
- Ice::Identity id = nameToIdentity(_instance, name);
+ Ice::Identity id = IceStormInternal::nameToIdentity(_instance, name);
//
// Called by constructor or with 'this' mutex locked.
diff --git a/cpp/src/IceStorm/Util.cpp b/cpp/src/IceStorm/Util.cpp
index 25bc43bef89..d59775e6044 100644
--- a/cpp/src/IceStorm/Util.cpp
+++ b/cpp/src/IceStorm/Util.cpp
@@ -8,13 +8,45 @@
// **********************************************************************
#include <IceStorm/Util.h>
-#include <IceStorm/LLUMap.h>
+#include <IceStorm/SubscriberRecord.h>
+#include <IceStorm/Instance.h>
-using namespace Freeze;
-using namespace IceStormElection;
using namespace IceStorm;
using namespace std;
+namespace IceStormInternal
+{
+IceDB::IceContext dbContext;
+}
+
+string
+IceStormInternal::identityToTopicName(const Ice::Identity& id)
+{
+ //
+ // Work out the topic name. If the category is empty then we're in
+ // backwards compatibility mode and the name is just
+ // identity.name. Otherwise identity.name is topic.<topicname>.
+ //
+ if(id.category.empty())
+ {
+ return id.name;
+ }
+
+ assert(id.name.length() > 6 && id.name.compare(0, 6, "topic.") == 0);
+ return id.name.substr(6);
+}
+
+Ice::Identity
+IceStormInternal::nameToIdentity(const InstancePtr& instance, const string& name)
+{
+ // Identity is instanceName>/topic.<topicname>
+ Ice::Identity id;
+ id.category = instance->instanceName();
+ id.name = "topic." + name;
+
+ return id;
+}
+
string
IceStormInternal::describeEndpoints(const Ice::ObjectPrx& proxy)
{
@@ -26,7 +58,7 @@ IceStormInternal::describeEndpoints(const Ice::ObjectPrx& proxy)
{
if(i != endpoints.begin())
{
- os << ", ";
+ os << ", ";
}
os << "\"" << (*i)->toString() << "\"";
}
@@ -38,33 +70,32 @@ IceStormInternal::describeEndpoints(const Ice::ObjectPrx& proxy)
return os.str();
}
-namespace
+int
+IceStormInternal::compareSubscriberRecordKey(const MDB_val* v1, const MDB_val* v2)
{
-
-const string lluDbName = "llu";
-
-}
-
-void
-IceStormInternal::putLLU(const ConnectionPtr& connection, const LogUpdate& llu)
-{
- LLUMap llumap(connection, lluDbName);
- LLUMap::iterator ci = llumap.find("_manager");
- if(ci == llumap.end())
+ SubscriberRecordKey k1, k2;
+ IceDB::Codec<SubscriberRecordKey, IceDB::IceContext, Ice::OutputStreamPtr>::read(k1, *v1, dbContext);
+ IceDB::Codec<SubscriberRecordKey, IceDB::IceContext, Ice::OutputStreamPtr>::read(k2, *v2, dbContext);
+ if(k1 < k2)
{
- llumap.put(LLUMap::value_type("_manager", llu));
+ return -1;
+ }
+ else if(k1 == k2)
+ {
+ return 0;
}
else
{
- ci.set(llu);
+ return 1;
}
}
-LogUpdate
-IceStormInternal::getLLU(const ConnectionPtr& connection)
+IceStormElection::LogUpdate
+IceStormInternal::getIncrementedLLU(const IceDB::ReadWriteTxn& txn, LLUMap& lluMap)
{
- LLUMap llumap(connection, lluDbName);
- LLUMap::iterator ci = llumap.find("_manager");
- assert(ci != llumap.end());
- return ci->second;
-} \ No newline at end of file
+ IceStormElection::LogUpdate llu;
+ lluMap.get(txn, lluDbKey, llu);
+ llu.iteration++;
+ lluMap.put(txn, lluDbKey, llu);
+ return llu;
+}
diff --git a/cpp/src/IceStorm/Util.h b/cpp/src/IceStorm/Util.h
index 9249068e3bc..cb8184e8476 100644
--- a/cpp/src/IceStorm/Util.h
+++ b/cpp/src/IceStorm/Util.h
@@ -10,24 +10,46 @@
#ifndef UTIL_H
#define UTIL_H
-#include <string>
-
#include <Ice/Ice.h>
-
-#include <Freeze/Freeze.h>
+#include <IceDB/IceDB.h>
#include <IceStorm/LLURecord.h>
+#include <IceStorm/SubscriberRecord.h>
+
+namespace IceStorm
+{
+
+//
+// Forward declarations.
+//
+class Instance;
+typedef IceUtil::Handle<Instance> InstancePtr;
+
+typedef IceDB::Dbi<IceStorm::SubscriberRecordKey, IceStorm::SubscriberRecord, IceDB::IceContext, Ice::OutputStreamPtr>
+ SubscriberMap;
+typedef IceDB::Dbi<std::string, IceStormElection::LogUpdate, IceDB::IceContext, Ice::OutputStreamPtr> LLUMap;
+
+const std::string lluDbKey = "_manager";
+
+}
namespace IceStormInternal
{
std::string
+identityToTopicName(const Ice::Identity&);
+
+Ice::Identity
+nameToIdentity(const IceStorm::InstancePtr&, const std::string&);
+
+std::string
describeEndpoints(const Ice::ObjectPrx&);
-void
-putLLU(const Freeze::ConnectionPtr&, const IceStormElection::LogUpdate&);
+int
+compareSubscriberRecordKey(const MDB_val* v1, const MDB_val* v2);
IceStormElection::LogUpdate
-getLLU(const Freeze::ConnectionPtr&);
+getIncrementedLLU(const IceDB::ReadWriteTxn&, IceStorm::LLUMap&);
}
+
#endif
diff --git a/cpp/src/IceStorm/dummy.ice b/cpp/src/IceStorm/dummy.ice
deleted file mode 100644
index 0169fa0df3a..00000000000
--- a/cpp/src/IceStorm/dummy.ice
+++ /dev/null
@@ -1,3 +0,0 @@
-//
-// This file is necessary to compile StringBoolDict under msdev.
-//
diff --git a/cpp/src/IceStorm/dummy2.ice b/cpp/src/IceStorm/dummy2.ice
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/cpp/src/IceStorm/dummy2.ice
+++ /dev/null
diff --git a/cpp/src/IceUtil/Exception.cpp b/cpp/src/IceUtil/Exception.cpp
index 886ff276b7d..1cdacff1e62 100644
--- a/cpp/src/IceUtil/Exception.cpp
+++ b/cpp/src/IceUtil/Exception.cpp
@@ -676,7 +676,7 @@ IceUtil::FileLockException::~FileLockException() throw()
{
}
-const char* IceUtil::FileLockException::_name = "IceUtil::FileLockedException";
+const char* IceUtil::FileLockException::_name = "IceUtil::FileLockException";
string
IceUtil::FileLockException::ice_name() const
diff --git a/cpp/src/Makefile b/cpp/src/Makefile
index 6fd6a0be040..d497e826943 100644
--- a/cpp/src/Makefile
+++ b/cpp/src/Makefile
@@ -51,6 +51,7 @@ endif
IcePatch2 \
IceStormLib \
IceGridLib \
+ IceDB \
IceStorm \
IceGrid
endif
diff --git a/cpp/src/Makefile.mak b/cpp/src/Makefile.mak
index 409ab6e455e..d67f8c3353e 100644
--- a/cpp/src/Makefile.mak
+++ b/cpp/src/Makefile.mak
@@ -43,6 +43,7 @@ SUBDIRS = IceUtil \
IceDiscovery \
IceLocatorDiscovery \
IceXML \
+ IceDB \
Freeze \
FreezeScript \
IcePatch2Lib \