int fetchprops_priority(dbref obj, int mode, const char *pdir) { const char *s; int hitflag = 0; /* update fetched timestamp */ DBFETCH(obj)->propstime = time(NULL); /* if in memory, don't try to reload. */ if (DBFETCH(obj)->propsmode != PROPS_UNLOADED) { /* but do update the queue position */ addobject_ringqueue(obj, DBFETCH(obj)->propsmode); if (!pdir) pdir = "/"; while ((s = propdir_unloaded(DBFETCH(obj)->properties, pdir))) { propcache_misses++; hitflag++; if (!mode) update_fetchstats(); if (FLAGS(obj) & SAVED_DELTA) { getproperties(delta_infile, obj, s); } else { getproperties(input_file, obj, s); } } if (hitflag) { return 1; } else { propcache_hits++; return 0; } } propcache_misses++; housecleanprops(); /* actually load in root properties from the appropriate file */ if (FLAGS(obj) & SAVED_DELTA) { getproperties(delta_infile, obj, "/"); } else { getproperties(input_file, obj, "/"); } /* update fetch statistics */ if (!mode) update_fetchstats(); /* add object to appropriate queue */ addobject_ringqueue(obj, ((mode) ? PROPS_PRIORITY : PROPS_LOADED)); return 1; }
void dirtyprops(dbref obj) { if (DBFETCH(obj)->propsmode == PROPS_CHANGED) return; addobject_ringqueue(obj, PROPS_CHANGED); }
void undirtyprops(dbref obj) { if (DBFETCH(obj)->propsmode == PROPS_UNLOADED) return; if (DBFETCH(obj)->propsmode != PROPS_CHANGED) { disposeprops(obj); return; } addobject_ringqueue(obj, PROPS_LOADED); disposeprops(obj); }