diff options
| author | 2022-09-23 19:37:01 +0200 | |
|---|---|---|
| committer | 2022-09-23 19:37:01 +0200 | |
| commit | bbf5471039a973fed918441150ef76ff0db7682a (patch) | |
| tree | 64d6fd0dbc63a2102fd1d2615bbcb85473f19f40 /data.c | |
| parent | New functions send_to_inbox() and send_to_actor(). (diff) | |
| download | snac2-bbf5471039a973fed918441150ef76ff0db7682a.tar.gz snac2-bbf5471039a973fed918441150ef76ff0db7682a.tar.xz snac2-bbf5471039a973fed918441150ef76ff0db7682a.zip | |
New function process_queue().
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 72 |
1 files changed, 36 insertions, 36 deletions
| @@ -631,42 +631,6 @@ int is_muted(snac *snac, char *actor) | |||
| 631 | } | 631 | } |
| 632 | 632 | ||
| 633 | 633 | ||
| 634 | void enqueue_output(snac *snac, char *actor, char *msg, int retries) | ||
| 635 | /* enqueues an output message for an actor */ | ||
| 636 | { | ||
| 637 | if (strcmp(actor, snac->actor) == 0) { | ||
| 638 | snac_debug(snac, 1, xs_str_new("enqueue refused to myself")); | ||
| 639 | return; | ||
| 640 | } | ||
| 641 | |||
| 642 | int qrt = xs_number_get(xs_dict_get(srv_config, "query_retry_minutes")); | ||
| 643 | xs *ntid = tid(retries * 60 * qrt); | ||
| 644 | xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid); | ||
| 645 | xs *tfn = xs_str_cat(fn, ".tmp"); | ||
| 646 | FILE *f; | ||
| 647 | |||
| 648 | if ((f = fopen(tfn, "w")) != NULL) { | ||
| 649 | xs *qmsg = xs_dict_new(); | ||
| 650 | xs *rn = xs_number_new(retries); | ||
| 651 | xs *j; | ||
| 652 | |||
| 653 | qmsg = xs_dict_append(qmsg, "type", "output"); | ||
| 654 | qmsg = xs_dict_append(qmsg, "actor", actor); | ||
| 655 | qmsg = xs_dict_append(qmsg, "object", msg); | ||
| 656 | qmsg = xs_dict_append(qmsg, "retries", rn); | ||
| 657 | |||
| 658 | j = xs_json_dumps_pp(qmsg, 4); | ||
| 659 | |||
| 660 | fwrite(j, strlen(j), 1, f); | ||
| 661 | fclose(f); | ||
| 662 | |||
| 663 | rename(tfn, fn); | ||
| 664 | |||
| 665 | snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); | ||
| 666 | } | ||
| 667 | } | ||
| 668 | |||
| 669 | |||
| 670 | d_char *_actor_fn(snac *snac, char *actor) | 634 | d_char *_actor_fn(snac *snac, char *actor) |
| 671 | /* returns the file name for an actor */ | 635 | /* returns the file name for an actor */ |
| 672 | { | 636 | { |
| @@ -745,6 +709,42 @@ int actor_get(snac *snac, char *actor, d_char **data) | |||
| 745 | } | 709 | } |
| 746 | 710 | ||
| 747 | 711 | ||
| 712 | void enqueue_output(snac *snac, char *actor, char *msg, int retries) | ||
| 713 | /* enqueues an output message for an actor */ | ||
| 714 | { | ||
| 715 | if (strcmp(actor, snac->actor) == 0) { | ||
| 716 | snac_debug(snac, 1, xs_str_new("enqueue refused to myself")); | ||
| 717 | return; | ||
| 718 | } | ||
| 719 | |||
| 720 | int qrt = xs_number_get(xs_dict_get(srv_config, "query_retry_minutes")); | ||
| 721 | xs *ntid = tid(retries * 60 * qrt); | ||
| 722 | xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid); | ||
| 723 | xs *tfn = xs_str_cat(fn, ".tmp"); | ||
| 724 | FILE *f; | ||
| 725 | |||
| 726 | if ((f = fopen(tfn, "w")) != NULL) { | ||
| 727 | xs *qmsg = xs_dict_new(); | ||
| 728 | xs *rn = xs_number_new(retries); | ||
| 729 | xs *j; | ||
| 730 | |||
| 731 | qmsg = xs_dict_append(qmsg, "type", "output"); | ||
| 732 | qmsg = xs_dict_append(qmsg, "actor", actor); | ||
| 733 | qmsg = xs_dict_append(qmsg, "object", msg); | ||
| 734 | qmsg = xs_dict_append(qmsg, "retries", rn); | ||
| 735 | |||
| 736 | j = xs_json_dumps_pp(qmsg, 4); | ||
| 737 | |||
| 738 | fwrite(j, strlen(j), 1, f); | ||
| 739 | fclose(f); | ||
| 740 | |||
| 741 | rename(tfn, fn); | ||
| 742 | |||
| 743 | snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); | ||
| 744 | } | ||
| 745 | } | ||
| 746 | |||
| 747 | |||
| 748 | d_char *queue(snac *snac) | 748 | d_char *queue(snac *snac) |
| 749 | /* returns a list with filenames that can be dequeued */ | 749 | /* returns a list with filenames that can be dequeued */ |
| 750 | { | 750 | { |