commit 427f734

default  ·  2022-12-16 06:09:25 +0000 UTC
parent 286eb29
New function enqueue_message().
3 files changed,  +29, -0
M data.c
M snac.h
+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);