32 #include <Ice/CommunicatorF.h>
33 #include <Ice/Current.h>
34 #include <Ice/Identity.h>
35 #include <Ice/ObjectAdapterF.h>
36 #include <Ice/ObjectF.h>
37 #include <Ice/Proxy.h>
38 #include <Ice/ProxyF.h>
39 #include <IceGrid/Admin.h>
40 #include <IceGrid/Admin.h>
41 #include <IceGrid/IceGrid.h>
42 #include <IceGrid/Registry.h>
43 #include <IceUtil/Handle.h>
44 #include <IceUtil/Time.h>
45 #include <IceUtil/Timer.h>
91 virtual public IceUtil::TimerTask,
92 virtual public IceGrid::NodeObserver,
93 virtual public Logging
109 ~IceGridAdmin()
override;
116 IceGrid::AdminSessionPrx adminSession();
123 IceGrid::AdminPrx getAdmin();
130 void addApplication(
const std::string& xmlPath);
144 void setObjectObserver(IceGrid::ObjectObserverPrx objObserverPrx);
149 void removeObservers();
164 Ice::ObjectPrx registerObjectWithNewAdapter(
Ice::ObjectPtr object,
165 const std::string& objectName,
180 template <
class ObjectType>
181 IceGrid::ObjectInfoSeq
182 getRegisteredObjects(std::string regExp =
"*")
184 IceGrid::AdminPrx admin = getAdmin();
185 IceGrid::ObjectInfoSeq objects = admin->getAllObjectInfos(regExp);
186 IceGrid::ObjectInfoSeq::iterator iter = objects.begin();
187 IceGrid::ObjectInfoSeq result;
189 while (iter != objects.end())
191 Ice::ObjectPrx current = iter->proxy;
198 object = ObjectType::checkedCast(current->ice_timeout(60));
206 result.push_back(*iter);
222 template <
class ObjectType>
223 std::vector<std::string>
224 getRegisteredObjectNames(std::string regExp =
"*")
226 IceGrid::ObjectInfoSeq objects = getRegisteredObjects<ObjectType>(regExp);
228 IceGrid::ObjectInfoSeq::iterator iter = objects.begin();
229 std::vector<std::string> result;
231 while (iter != objects.end())
233 result.push_back(iter->proxy->ice_getIdentity().name);
243 void cleanUpDeadObjects();
248 void nodeInit(
const IceGrid::NodeDynamicInfoSeq& nodes,
249 const Ice::Current&
c = Ice::emptyCurrent)
override;
250 void nodeUp(
const IceGrid::NodeDynamicInfo& node,
251 const Ice::Current&
c = Ice::emptyCurrent)
override;
252 void nodeDown(
const std::string& name,
const Ice::Current&
c = Ice::emptyCurrent)
override;
253 void updateServer(
const std::string& node,
254 IceGrid::ServerDynamicInfo updatedInfo,
255 const Ice::Current&
c = Ice::emptyCurrent);
256 void updateAdapter(
const std::string& node,
257 IceGrid::AdapterDynamicInfo updatedInfo,
258 const Ice::Current&
c = Ice::emptyCurrent);
259 void updateServer(const ::std::string& node,
260 const ::IceGrid::ServerDynamicInfo& updatedInfo,
261 const ::Ice::Current&
c = Ice::emptyCurrent)
override;
262 void updateAdapter(const ::std::string& node,
263 const ::IceGrid::AdapterDynamicInfo& updatedInfo,
264 const ::Ice::Current&
c = Ice::emptyCurrent)
override;
280 ComponentState getComponentState(std::string
id);
287 void runTimerTask()
override;
289 void printServerInfo(
const IceGrid::ServerDynamicInfo& updatedInfo);
290 void reportRemoteComponentStateChange(
const IceGrid::ServerDynamicInfo& updatedInfo);
292 void notifyComponentChanged(ComponentState state, std::string
id);
298 IceGrid::AdminSessionPrx adminSessionProxy;
301 IceGrid::NodeObserverPrx iceGridAdminProxy;
302 IceGrid::ObjectObserverPrx objObserverPrx;
304 std::map<std::string, std::vector<std::shared_ptr<Component>>> stateChangeNotifications;
305 std::map<std::string, ComponentState> remoteComponentsState;
312 std::mutex mutexComponentStateUpdate;