static PyObject* communicatorFindAllAdminFacets(CommunicatorObject* self) { assert(self->communicator); Ice::FacetMap facetMap; try { facetMap = (*self->communicator)->findAllAdminFacets(); } catch(const Ice::Exception& ex) { setPythonException(ex); return 0; } PyObjectHandle result = PyDict_New(); if(!result.get()) { return 0; } PyTypeObject* objectType = reinterpret_cast<PyTypeObject*>(lookupType("Ice.Object")); PyObjectHandle plainObject = objectType->tp_alloc(objectType, 0); for(Ice::FacetMap::const_iterator p = facetMap.begin(); p != facetMap.end(); ++p) { PyObjectHandle obj = plainObject; ServantWrapperPtr wrapper = ServantWrapperPtr::dynamicCast(p->second); if(wrapper) { obj = wrapper->getObject(); } else { Ice::NativePropertiesAdminPtr props = Ice::NativePropertiesAdminPtr::dynamicCast(p->second); if(props) { obj = createNativePropertiesAdmin(props); } } if(PyDict_SetItemString(result.get(), const_cast<char*>(p->first.c_str()), obj.get()) < 0) { return 0; } } return result.release(); }
static PyObject* adapterRemoveAllFacets(ObjectAdapterObject* self, PyObject* args) { PyObject* identityType = lookupType("Ice.Identity"); PyObject* id; if(!PyArg_ParseTuple(args, STRCAST("O!"), identityType, &id)) { return 0; } Ice::Identity ident; if(!getIdentity(id, ident)) { return 0; } assert(self->adapter); Ice::FacetMap facetMap; try { facetMap = (*self->adapter)->removeAllFacets(ident); } catch(const Ice::Exception& ex) { setPythonException(ex); return 0; } PyObjectHandle result = PyDict_New(); if(!result.get()) { return 0; } for(Ice::FacetMap::iterator p = facetMap.begin(); p != facetMap.end(); ++p) { ServantWrapperPtr wrapper = ServantWrapperPtr::dynamicCast(p->second); assert(wrapper); PyObjectHandle obj = wrapper->getObject(); if(PyDict_SetItemString(result.get(), const_cast<char*>(p->first.c_str()), obj.get()) < 0) { return 0; } } return result.release(); }
static void testFacets(const Ice::CommunicatorPtr& com, bool builtInFacets = true) { if(builtInFacets) { test(com->findAdminFacet("Properties")); test(com->findAdminFacet("Process")); test(com->findAdminFacet("Logger")); test(com->findAdminFacet("Metrics")); } TestFacetPtr f1 = ICE_MAKE_SHARED(TestFacetI); TestFacetPtr f2 = ICE_MAKE_SHARED(TestFacetI); TestFacetPtr f3 = ICE_MAKE_SHARED(TestFacetI); com->addAdminFacet(f1, "Facet1"); com->addAdminFacet(f2, "Facet2"); com->addAdminFacet(f3, "Facet3"); test(com->findAdminFacet("Facet1") == f1); test(com->findAdminFacet("Facet2") == f2); test(com->findAdminFacet("Facet3") == f3); test(!com->findAdminFacet("Bogus")); const Ice::FacetMap facetMap = com->findAllAdminFacets(); if(builtInFacets) { test(facetMap.size() == 7); test(facetMap.find("Properties") != facetMap.end()); test(facetMap.find("Process") != facetMap.end()); test(facetMap.find("Logger") != facetMap.end()); test(facetMap.find("Metrics") != facetMap.end()); } else { test(facetMap.size() >= 3); } test(facetMap.find("Facet1") != facetMap.end()); test(facetMap.find("Facet2") != facetMap.end()); test(facetMap.find("Facet3") != facetMap.end()); try { com->addAdminFacet(f1, "Facet1"); test(false); } catch(const Ice::AlreadyRegisteredException&) { // Expected } try { com->removeAdminFacet("Bogus"); test(false); } catch(const Ice::NotRegisteredException&) { // Expected } com->removeAdminFacet("Facet1"); com->removeAdminFacet("Facet2"); com->removeAdminFacet("Facet3"); try { com->removeAdminFacet("Facet1"); test(false); } catch(const Ice::NotRegisteredException&) { // Expected } }