From ac587d9f1a6d34e46956fd17c81f99beb7ed97ad Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Wed, 10 Sep 2014 19:09:53 +0000 Subject: IceGrid::Admin now provides remote access to IceGrid registry and node Admin objects, and icegridadmin uses these new operations to show the Ice log file for IceGrid registries and IceGrid nodes (ICE-2400) --- cpp/src/IceGrid/NodeAdminRouter.cpp | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cpp/src/IceGrid/NodeAdminRouter.cpp (limited to 'cpp/src/IceGrid/NodeAdminRouter.cpp') diff --git a/cpp/src/IceGrid/NodeAdminRouter.cpp b/cpp/src/IceGrid/NodeAdminRouter.cpp new file mode 100644 index 00000000000..6c4631b1e93 --- /dev/null +++ b/cpp/src/IceGrid/NodeAdminRouter.cpp @@ -0,0 +1,61 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 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 +#include +#include +#include + +using namespace IceGrid; +using namespace Ice; +using namespace std; + + +IceGrid::NodeServerAdminRouter::NodeServerAdminRouter(const NodeIPtr& node) : + _node(node) +{ +} + +ObjectPrx +IceGrid::NodeServerAdminRouter::getTarget(const Current& current) +{ + // + // First, get the ServerI servant + // + Identity serverId = _node->createServerIdentity(current.id.name); + ServerIPtr server = ServerIPtr::dynamicCast(_node->getAdapter()->find(serverId)); + if(server == 0) + { + throw ObjectNotExistException(__FILE__, __LINE__); + } + + // + // Then get a proxy to the Process facet of the real admin object + // + ObjectPrx target = server->getProcess(); + + if(target == 0) + { + throw ObjectNotExistException(__FILE__, __LINE__); + } + + // + // If this is a legacy Process proxy with no facet, we keep target as is + // + if(current.facet != "Process") + { + // + // Set the facet + // + target = target->ice_facet(current.facet); + } + + return target; +} + -- cgit v1.2.3