Warning: session_start(): open(/var/lib/php/sessions/sess_aco8qu0hvvcc40oenv8tp137de, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass GazelleContextCache_v2 {
transient Lock lock = lock();
transient GazelleEvalContext cachedCtx;
DynModule module;
bool debug = true;
*(DynModule *module) {}
void fill {
lock lock;
cachedCtx = dm_gazelle_stdEvalContext(dm_gazelle_allRulesWithComment("discord"));
gazelle_addHelpers(cachedCtx);
}
GazelleEvalContext get() {
lock lock;
ret gazelle_cloneCtx(cachedCtx);
}
AutoCloseable listenToMessages() {
ret combineAutoCloseables(
vmBus_onMessage('gazelleRuleChanged, voidfunc(O rule) {
temp module.enter();
lock lock;
if (cachedCtx == null) ret;
S ruleID = getString globalID(rule);
print("GazelleContextCache_v2: processing rule update " + ruleID);
RuleEngine2 engine = cachedCtx.engine;
RuleEngine2.Rule rule = engine.getRule(ruleID);
if (rule == null) ret;
engine.rules.remove(rule);
PairS p = dm_textAndCommentForRule(ruleID);
if (p == null) ret;
engine.addRules2(ll(t3(p.a, p.b, ruleID)));
rule = cachedCtx.engine.getRule(ruleID);
if (rule == null) ret;
gazelle_addHelpers(gazelle_dummyEngineWithRule(rule));
print("GazelleContextCache_v2: rule update complete");
}),
vmBus_onMessage('gazelleRuleDeleted, voidfunc(O rule) {
temp module.enter();
lock lock;
if (cachedCtx == null) ret;
S ruleID = getString globalID(rule);
cachedCtx.engine.deleteRule(ruleID);
print("GazelleContextCache_v2: rule " + ruleID + " deleted");
}));
}
}