summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/AdminI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IcePack/AdminI.cpp')
-rw-r--r--cpp/src/IcePack/AdminI.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/cpp/src/IcePack/AdminI.cpp b/cpp/src/IcePack/AdminI.cpp
index 7a47b2f9985..4b385cdc421 100644
--- a/cpp/src/IcePack/AdminI.cpp
+++ b/cpp/src/IcePack/AdminI.cpp
@@ -12,6 +12,7 @@
#include <IcePack/AdminI.h>
#include <IcePack/ServerManager.h>
#include <IcePack/AdapterManager.h>
+#include <IcePack/ServerDeployer.h>
using namespace std;
using namespace Ice;
@@ -29,7 +30,11 @@ void
IcePack::AdminI::addServer(const string& name, const string& path, const string& ldpath, const string& descriptor,
const Current&)
{
- _serverManager->create(name, path, ldpath, descriptor);
+ ServerDeployer deployer(_communicator, name, path, ldpath);
+ deployer.setServerManager(_serverManager);
+ deployer.setAdapterManager(_adapterManager);
+ deployer.parse(descriptor);
+ deployer.deploy();
}
ServerDescription
@@ -86,7 +91,20 @@ IcePack::AdminI::startServer(const string& name, const Current&)
void
IcePack::AdminI::removeServer(const string& name, const Current&)
{
- _serverManager->remove(name);
+ ServerPrx server = _serverManager->findByName(name);
+ if(!server)
+ {
+ throw ServerNotExistException();
+ }
+
+ server->setState(Destroyed);
+ ServerDescription desc = server->getServerDescription();
+
+ ServerDeployer deployer(_communicator, desc.name, desc.path, "");
+ deployer.setServerManager(_serverManager);
+ deployer.setAdapterManager(_adapterManager);
+ deployer.parse(desc.descriptor);
+ deployer.undeploy();
}
ServerNames