mirror of
https://codeberg.org/grunfink/snac2.git
synced 2024-11-14 17:45:04 +00:00
Implemented the helper thread.
This commit is contained in:
parent
31f29258a1
commit
8bb7582062
3 changed files with 38 additions and 4 deletions
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ CFLAGS=-g -Wall
|
|||
all: snac
|
||||
|
||||
snac: snac.o main.o data.o http.o httpd.o webfinger.o activitypub.o html.o
|
||||
$(CC) -L/usr/local/lib *.o -lcurl -lcrypto -o $@
|
||||
$(CC) -L/usr/local/lib *.o -lcurl -lcrypto -pthread -o $@
|
||||
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) -I/usr/local/include -c $<
|
||||
|
|
6
TODO.md
6
TODO.md
|
@ -2,14 +2,14 @@
|
|||
|
||||
## Open
|
||||
|
||||
Implement the helper thread.
|
||||
|
||||
Import the man pages.
|
||||
|
||||
Implement the 'init' command-line option.
|
||||
|
||||
Implement the 'adduser' command-line option.
|
||||
|
||||
Implement the local timeline cache.
|
||||
|
||||
Show dates in local time and not UTC.
|
||||
|
||||
Add web interface for private messages.
|
||||
|
@ -131,3 +131,5 @@ Add a user configuration flag to hide likes from the timeline (2022-10-01T20:27:
|
|||
Implement an input queue (2022-10-01T20:27:52+0200).
|
||||
|
||||
Refactor HTML rendering because it's a mess and write build_timeline(), that generates a big structure with everything to show in a timeline, to be passed to the HTML renderer (2022-10-01T20:27:52+0200).
|
||||
|
||||
Implement the helper thread (2022-10-01T20:56:46+0200).
|
||||
|
|
34
httpd.c
34
httpd.c
|
@ -11,6 +11,7 @@
|
|||
#include "snac.h"
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <pthread.h>
|
||||
|
||||
/* susie.png */
|
||||
const char *susie =
|
||||
|
@ -199,12 +200,41 @@ void term_handler(int s)
|
|||
}
|
||||
|
||||
|
||||
static void *helper_thread(void *arg)
|
||||
/* helper thread (queue management) */
|
||||
{
|
||||
srv_log(xs_fmt("subthread start"));
|
||||
|
||||
while (srv_running) {
|
||||
xs *list = user_list();
|
||||
char *p, *uid;
|
||||
|
||||
p = list;
|
||||
while (xs_list_iter(&p, &uid)) {
|
||||
snac snac;
|
||||
|
||||
if (user_open(&snac, uid)) {
|
||||
process_queue(&snac);
|
||||
user_free(&snac);
|
||||
}
|
||||
}
|
||||
|
||||
sleep(3);
|
||||
}
|
||||
|
||||
srv_log(xs_fmt("subthread stop"));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void httpd(void)
|
||||
/* starts the server */
|
||||
{
|
||||
char *address;
|
||||
int port;
|
||||
int rs;
|
||||
pthread_t htid;
|
||||
|
||||
address = xs_dict_get(srv_config, "address");
|
||||
port = xs_number_get(xs_dict_get(srv_config, "port"));
|
||||
|
@ -222,6 +252,8 @@ void httpd(void)
|
|||
|
||||
srv_log(xs_fmt("httpd start %s:%d", address, port));
|
||||
|
||||
pthread_create(&htid, NULL, helper_thread, NULL);
|
||||
|
||||
if (setjmp(on_break) == 0) {
|
||||
for (;;) {
|
||||
httpd_connection(rs);
|
||||
|
@ -231,7 +263,7 @@ void httpd(void)
|
|||
srv_running = 0;
|
||||
|
||||
/* wait for the helper thread to end */
|
||||
/* ... */
|
||||
pthread_join(htid, NULL);
|
||||
|
||||
srv_log(xs_fmt("httpd stop %s:%d", address, port));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue