default 3 лет назад
Родитель
Сommit
e923a4f5ec
3 измененных файлов с 48 добавлено и 0 удалено
  1. 33 0
      data.c
  2. 12 0
      main.c
  3. 3 0
      snac.h

+ 33 - 0
data.c

@@ -554,3 +554,36 @@ void enqueue(snac *snac, char *actor, char *msg, int retries)
         snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries));
     }
 }
+
+
+d_char *queue(snac *snac)
+/* returns a list with filenames that can be dequeued */
+{
+    xs *spec = xs_fmt("%s/queue/" "*.json", snac->basedir);
+    d_char *list = xs_list_new();
+    glob_t globbuf;
+    time_t t = time(NULL);
+
+    /* get the list in reverse order */
+    if (glob(spec, 0, NULL, &globbuf) == 0) {
+        int n;
+        char *p;
+
+        for (n = 0; (p = globbuf.gl_pathv[n]) != NULL; n++) {
+            /* get the retry time from the basename */
+            char *bn = strrchr(p, '/');
+            time_t t2 = atol(bn + 1);
+
+            if (t2 > t)
+                snac_debug(snac, 2, xs_fmt("queue not yet time for %s", p));
+            else {
+                list = xs_list_append(list, p);
+                snac_debug(snac, 2, xs_fmt("queue ready for %s", p));
+            }
+        }
+    }
+
+    globfree(&globbuf);
+
+    return list;
+}

+ 12 - 0
main.c

@@ -15,6 +15,17 @@ int main(int argc, char *argv[])
 
     user_open(&snac, "mike");
 
+    {
+        xs *list = queue(&snac);
+        char *p, *fn;
+
+        p = list;
+        while (xs_list_iter(&p, &fn)) {
+            printf("%s\n", fn);
+        }
+    }
+
+#if 0
     {
         xs *list = follower_list(&snac);
         char *p, *obj;
@@ -50,6 +61,7 @@ int main(int argc, char *argv[])
             }
         }
     }
+#endif
 
     return 0;
 }

+ 3 - 0
snac.h

@@ -57,3 +57,6 @@ int following_check(snac *snac, char *actor);
 void mute(snac *snac, char *actor);
 void unmute(snac *snac, char *actor);
 int is_muted(snac *snac, char *actor);
+
+void enqueue(snac *snac, char *actor, char *msg, int retries);
+d_char *queue(snac *snac);