int LogSetAttribute::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; int rval; ClassAd *ad = 0; if (table->lookup(HashKey(key), ad) < 0) return -1; if (value_expr) { // Such a shame, do we really need to make a // copy of value_expr here? Seems like we could just // assign it and then set value_expr to NULL and avoid // copying a parse tree, since after we Play it I doubt // this class does anything more with value_expr beyond // deallocating it. - Todd 11/13 <*****@*****.**> ExprTree * pTree = value_expr->Copy(); rval = ad->Insert(name, pTree, false); } else { rval = ad->AssignExpr(name, value); } ad->SetDirtyFlag(name, is_dirty); #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::SetAttribute(key, name, value); #endif return rval; }
int LogDeleteAttribute::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; ClassAd *ad = 0; if (table->lookup(HashKey(key), ad) < 0) return -1; #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::DeleteAttribute(key, name); #endif return ad->Delete(name); }
int LogNewClassAd::Play(void *data_structure) { int result; ClassAdHashTable *table = (ClassAdHashTable *)data_structure; ClassAd *ad = new ClassAd(); ad->SetMyTypeName(mytype); ad->SetTargetTypeName(targettype); result = table->insert(HashKey(key), ad); #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::NewClassAd(key); #endif return result; }
int LogDestroyClassAd::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; HashKey hkey(key); ClassAd *ad; if (table->lookup(hkey, ad) < 0) { return -1; } #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::DestroyClassAd(key); #endif delete ad; return table->remove(hkey); }
int LogSetAttribute::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; int rval; ClassAd *ad = 0; if (table->lookup(HashKey(key), ad) < 0) return -1; if (value_expr) { ExprTree * pTree = value_expr->Copy(); rval = ad->Insert(name, pTree, false); } else { rval = ad->AssignExpr(name, value); } ad->SetDirtyFlag(name, is_dirty); #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::SetAttribute(key, name, value); #endif return rval; }