commit 427f734
default
·
2022-12-16 06:09:25 +0000 UTC
parent 286eb29
New function enqueue_message().
3 files changed,
+29,
-0
+11,
-0
1@@ -990,6 +990,17 @@ void process_queue(snac *snac)
2 if ((type = xs_dict_get(q_item, "type")) == NULL)
3 type = "output";
4
5+ if (strcmp(type, "message") == 0) {
6+ char *msg = xs_dict_get(q_item, "message");
7+ xs *inboxes = inbox_list(snac, msg);
8+ char *p, *v;
9+
10+ p = inboxes;
11+ while (xs_list_iter(&p, &v)) {
12+ enqueue_output(snac, msg, v, 0);
13+ }
14+ }
15+ else
16 if (strcmp(type, "output") == 0) {
17 int status;
18 char *inbox = xs_dict_get(q_item, "inbox");
M
data.c
+17,
-0
1@@ -1384,6 +1384,23 @@ void enqueue_email(snac *snac, char *msg, int retries)
2 }
3
4
5+void enqueue_message(snac *snac, char *msg)
6+/* enqueues an output message */
7+{
8+ char *id = xs_dict_get(msg, "id");
9+ xs *ntid = tid(0);
10+ xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid);
11+ xs *qmsg = xs_dict_new();
12+
13+ qmsg = xs_dict_append(qmsg, "type", "message");
14+ qmsg = xs_dict_append(qmsg, "message", msg);
15+
16+ _enqueue_put(fn, qmsg);
17+
18+ snac_debug(snac, 1, xs_fmt("enqueue_message %s", id));
19+}
20+
21+
22 d_char *queue(snac *snac)
23 /* returns a list with filenames that can be dequeued */
24 {
M
snac.h
+1,
-0
1@@ -127,6 +127,7 @@ void enqueue_input(snac *snac, char *msg, char *req, int retries);
2 void enqueue_output(snac *snac, char *msg, char *inbox, int retries);
3 void enqueue_output_by_actor(snac *snac, char *msg, char *actor, int retries);
4 void enqueue_email(snac *snac, char *msg, int retries);
5+void enqueue_message(snac *snac, char *msg);
6
7 d_char *queue(snac *snac);
8 d_char *dequeue(snac *snac, char *fn);