diff options
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 37 |
1 files changed, 36 insertions, 1 deletions
| @@ -391,7 +391,7 @@ void timeline_add(snac *snac, char *id, char *msg, char *parent) | |||
| 391 | } | 391 | } |
| 392 | 392 | ||
| 393 | /* build the new filename */ | 393 | /* build the new filename */ |
| 394 | xs *ntid = tid(); | 394 | xs *ntid = tid(0); |
| 395 | xs *md5 = xs_md5_hex(id, strlen(id)); | 395 | xs *md5 = xs_md5_hex(id, strlen(id)); |
| 396 | xs *fn = xs_fmt("%s/timeline/%s-%s.json", snac->basedir, ntid, md5); | 396 | xs *fn = xs_fmt("%s/timeline/%s-%s.json", snac->basedir, ntid, md5); |
| 397 | xs *md; | 397 | xs *md; |
| @@ -519,3 +519,38 @@ int is_muted(snac *snac, char *actor) | |||
| 519 | 519 | ||
| 520 | return !!(mtime(fn) != 0.0); | 520 | return !!(mtime(fn) != 0.0); |
| 521 | } | 521 | } |
| 522 | |||
| 523 | |||
| 524 | void enqueue(snac *snac, char *actor, char *msg, int retries) | ||
| 525 | /* enqueues a message for an actor */ | ||
| 526 | { | ||
| 527 | if (strcmp(actor, snac->actor) == 0) { | ||
| 528 | snac_debug(snac, 1, xs_str_new("enqueue refused to myself")); | ||
| 529 | return; | ||
| 530 | } | ||
| 531 | |||
| 532 | int qrt = xs_number_get(xs_dict_get(srv_config, "query_retry_minutes")); | ||
| 533 | xs *ntid = tid(retries * 60 * qrt); | ||
| 534 | xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid); | ||
| 535 | xs *tfn = xs_str_cat(fn, ".tmp"); | ||
| 536 | FILE *f; | ||
| 537 | |||
| 538 | if ((f = fopen(tfn, "w")) != NULL) { | ||
| 539 | xs *qmsg = xs_dict_new(); | ||
| 540 | xs *rn = xs_number_new(retries); | ||
| 541 | xs *j; | ||
| 542 | |||
| 543 | qmsg = xs_dict_append(qmsg, "actor", actor); | ||
| 544 | qmsg = xs_dict_append(qmsg, "object", msg); | ||
| 545 | qmsg = xs_dict_append(qmsg, "retries", rn); | ||
| 546 | |||
| 547 | j = xs_json_dumps_pp(qmsg, 4); | ||
| 548 | |||
| 549 | fwrite(j, strlen(j), 1, f); | ||
| 550 | fclose(f); | ||
| 551 | |||
| 552 | rename(tfn, fn); | ||
| 553 | |||
| 554 | snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); | ||
| 555 | } | ||
| 556 | } | ||