diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-11-19 11:59:26 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-11-19 11:59:26 +0100 |
commit | 4488281069759ab1a231411e1da23ee90c57ee5a (patch) | |
tree | 2f6defa423c1ecfd8b884e048580079fdddf4004 /cpp/src/IceGrid/NodeI.cpp | |
parent | Added LMDB nuget package to IceDB Makefile.mak (diff) | |
download | ice-4488281069759ab1a231411e1da23ee90c57ee5a.tar.bz2 ice-4488281069759ab1a231411e1da23ee90c57ee5a.tar.xz ice-4488281069759ab1a231411e1da23ee90c57ee5a.zip |
Fixed ICE-6889 - Added support for server.data and service.data variables
Diffstat (limited to 'cpp/src/IceGrid/NodeI.cpp')
-rw-r--r-- | cpp/src/IceGrid/NodeI.cpp | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp index 5f7c3296180..242f46d01c2 100644 --- a/cpp/src/IceGrid/NodeI.cpp +++ b/cpp/src/IceGrid/NodeI.cpp @@ -1221,6 +1221,8 @@ NodeI::canRemoveServerDirectory(const string& name) contents.erase("config"); contents.erase("distrib"); contents.erase("revision"); + contents.erase("server_data"); + contents.erase("service_data"); if(!contents.empty()) { return false; @@ -1235,25 +1237,54 @@ NodeI::canRemoveServerDirectory(const string& name) } } - c = readDirectory(_serversDir + "/" + name + "/dbs"); - for(Ice::StringSeq::const_iterator p = c.begin() ; p != c.end(); ++p) + if(IceUtilInternal::directoryExists(_serversDir + "/" + name + "/dbs")) { - try + c = readDirectory(_serversDir + "/" + name + "/dbs"); + for(Ice::StringSeq::const_iterator p = c.begin() ; p != c.end(); ++p) { - Ice::StringSeq files = readDirectory(_serversDir + "/" + name + "/dbs/" + *p); - files.erase(remove(files.begin(), files.end(), "DB_CONFIG"), files.end()); - files.erase(remove(files.begin(), files.end(), "__Freeze"), files.end()); - if(!files.empty()) + try + { + Ice::StringSeq files = readDirectory(_serversDir + "/" + name + "/dbs/" + *p); + files.erase(remove(files.begin(), files.end(), "DB_CONFIG"), files.end()); + files.erase(remove(files.begin(), files.end(), "__Freeze"), files.end()); + if(!files.empty()) + { + return false; + } + } + catch(const string&) { return false; } } - catch(const string&) + } + + if(IceUtilInternal::directoryExists(_serversDir + "/" + name + "/server_data")) + { + if(!readDirectory(_serversDir + "/" + name + "/server_data").empty()) { return false; } } + if(IceUtilInternal::directoryExists(_serversDir + "/" + name + "/service_data")) + { + c = readDirectory(_serversDir + "/" + name + "/service_data"); + for(Ice::StringSeq::const_iterator p = c.begin() ; p != c.end(); ++p) + { + try + { + if(!readDirectory(_serversDir + "/" + name + "/service_data/" + *p).empty()) + { + return false; + } + } + catch(const string&) + { + return false; + } + } + } return true; } |