mirror of
https://codeberg.org/grunfink/snac2.git
synced 2024-11-25 14:35:04 +00:00
New function enqueue().
This commit is contained in:
parent
065773c703
commit
5d843a488e
4 changed files with 40 additions and 5 deletions
37
data.c
37
data.c
|
@ -391,7 +391,7 @@ void timeline_add(snac *snac, char *id, char *msg, char *parent)
|
|||
}
|
||||
|
||||
/* build the new filename */
|
||||
xs *ntid = tid();
|
||||
xs *ntid = tid(0);
|
||||
xs *md5 = xs_md5_hex(id, strlen(id));
|
||||
xs *fn = xs_fmt("%s/timeline/%s-%s.json", snac->basedir, ntid, md5);
|
||||
xs *md;
|
||||
|
@ -519,3 +519,38 @@ int is_muted(snac *snac, char *actor)
|
|||
|
||||
return !!(mtime(fn) != 0.0);
|
||||
}
|
||||
|
||||
|
||||
void enqueue(snac *snac, char *actor, char *msg, int retries)
|
||||
/* enqueues a message for an actor */
|
||||
{
|
||||
if (strcmp(actor, snac->actor) == 0) {
|
||||
snac_debug(snac, 1, xs_str_new("enqueue refused to myself"));
|
||||
return;
|
||||
}
|
||||
|
||||
int qrt = xs_number_get(xs_dict_get(srv_config, "query_retry_minutes"));
|
||||
xs *ntid = tid(retries * 60 * qrt);
|
||||
xs *fn = xs_fmt("%s/queue/%s.json", snac->basedir, ntid);
|
||||
xs *tfn = xs_str_cat(fn, ".tmp");
|
||||
FILE *f;
|
||||
|
||||
if ((f = fopen(tfn, "w")) != NULL) {
|
||||
xs *qmsg = xs_dict_new();
|
||||
xs *rn = xs_number_new(retries);
|
||||
xs *j;
|
||||
|
||||
qmsg = xs_dict_append(qmsg, "actor", actor);
|
||||
qmsg = xs_dict_append(qmsg, "object", msg);
|
||||
qmsg = xs_dict_append(qmsg, "retries", rn);
|
||||
|
||||
j = xs_json_dumps_pp(qmsg, 4);
|
||||
|
||||
fwrite(j, strlen(j), 1, f);
|
||||
fclose(f);
|
||||
|
||||
rename(tfn, fn);
|
||||
|
||||
snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries));
|
||||
}
|
||||
}
|
||||
|
|
2
main.c
2
main.c
|
@ -9,7 +9,7 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
snac snac;
|
||||
|
||||
printf("%s\n", tid());
|
||||
printf("%s\n", tid(0));
|
||||
|
||||
srv_open("/home/angel/lib/snac/comam.es/");
|
||||
|
||||
|
|
4
snac.c
4
snac.c
|
@ -42,7 +42,7 @@ d_char *xs_time(char *fmt, int local)
|
|||
}
|
||||
|
||||
|
||||
d_char *tid(void)
|
||||
d_char *tid(int offset)
|
||||
/* returns a time-based Id */
|
||||
{
|
||||
struct timeval tv;
|
||||
|
@ -50,7 +50,7 @@ d_char *tid(void)
|
|||
|
||||
gettimeofday(&tv, &tz);
|
||||
|
||||
return xs_fmt("%10d.%06d", tv.tv_sec, tv.tv_usec);
|
||||
return xs_fmt("%10d.%06d", tv.tv_sec + offset, tv.tv_usec);
|
||||
}
|
||||
|
||||
|
||||
|
|
2
snac.h
2
snac.h
|
@ -11,7 +11,7 @@ d_char *xs_time(char *fmt, int local);
|
|||
#define xs_local_time(fmt) xs_time(fmt, 1)
|
||||
#define xs_utc_time(fmt) xs_time(fmt, 0)
|
||||
|
||||
d_char *tid(void);
|
||||
d_char *tid(int offset);
|
||||
|
||||
void srv_debug(int level, d_char *str);
|
||||
#define srv_log(str) srv_debug(0, str)
|
||||
|
|
Loading…
Reference in a new issue