// This version removes an individual RepoId (value) from the RepoIdSet // associated with the "key" RepoId in our map_. int OpenDDS::DCPS::RepoIdSetMap::remove(RepoId key,RepoId value) { DBG_ENTRY_LVL("RepoIdSetMap","remove",6); RepoIdSet_rch id_set; int result = OpenDDS::DCPS::find(map_, key, id_set); if (result != 0) { // We couldn't find the id_set for the supplied key. RepoIdConverter converter(key); ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: RepoIdSetMap::remove: ") ACE_TEXT("unable to locate RepoIdSet for key %C.\n"), std::string(converter).c_str()),-1); } // Now we can attempt to remove the value RepoId from the id_set. result = id_set->remove_id(value); if (result != 0) { // We couldn't find the supplied RepoId value as a member of the id_set. RepoIdConverter key_converter(key); RepoIdConverter value_converter(value); ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: RepoIdSetMap::remove: ") ACE_TEXT("RepoIdSet for key %C does not contain ") ACE_TEXT("value %C.\n"), std::string(key_converter).c_str(), std::string(value_converter).c_str()),-1); } return 0; }
int OpenDDS::DCPS::RepoIdSetMap::insert(RepoId key, RepoId value) { DBG_ENTRY_LVL("RepoIdSetMap","insert",6); RepoIdSet_rch id_set = this->find_or_create(key); if (id_set.is_nil()) { // find_or_create failure RepoIdConverter converter(key); ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: RepoIdSetMap::insert: ") ACE_TEXT("failed to find_or_create RepoIdSet ") ACE_TEXT("for RepoId %C.\n"), std::string(converter).c_str()),-1); } int result = id_set->insert_id(value, key); if (result == -1) { RepoIdConverter value_converter(value); RepoIdConverter key_converter(key); ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: RepoIdSetMap::insert: ") ACE_TEXT("failed to insert RepoId %C ") ACE_TEXT("into RepoIdSet for RepoId %C.\n"), std::string(value_converter).c_str(), std::string(key_converter).c_str())); } else { // It could be already bound, but we accept it since the subscriber // could send the acks for the same id multiple times. // Success. Leave now. return 0; } // Deal with possibility that the id_set just got created - just for us. // If so, we need to "undo" the creation. if (id_set->size() == 0) { if (unbind(map_, key) != 0) { RepoIdConverter converter(key); ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: RepoIdSetMap::insert: ") ACE_TEXT("failed to unbind (undo create) an empty ") ACE_TEXT("RepoIdSet for RepoId %C.\n"), std::string(converter).c_str())); } } return -1; }
static PyObject* convert(mapnik::value_holder const& v) { return mapnik::util::apply_visitor(value_converter(),v); }
static PyObject* convert(mapnik::value const& v) { return mapnik::util::apply_visitor(value_converter(),v.base()); }