<<
path:
root/public/blog.git/html/src/search/reload.jai
blob: 4a84d2b9c298284a3c245203a77c7aec982564ab
[raw]
[clear marker]
4 echo "hello" | nc -U /tmp/ptracedev_search.sock
10 my_context := context;
11 my_context.logger = my_logger;
13 push_context,defer_pop my_context;
16 server_s := socket(AF_UNIX, .STREAM, 0);
18 close_and_reset(*server_s);
19 unlink(FP_SOCKET_RELOAD);
20 log("Server shutdown gracefully");
29 addr.sun_family = AF_UNIX;
31 memcpy(addr.sun_path.data, FP_SOCKET_RELOAD.data, FP_SOCKET_RELOAD.count);
33 unlink(FP_SOCKET_RELOAD);
36 tv.tv_sec = TIMEOUT_SEC;
39 setsockopt(server_s, SOL_SOCKET, SO_RCVTIMEO, *tv, size_of(type_of(tv)));
41 if bind(server_s, cast(*sockaddr)*addr, size_of(sockaddr_un)) < 0 {
46 if listen(server_s, BACKLOG) < 0 {
51 log("Listening to '%'", FP_SOCKET_RELOAD);
53 buffer: [BUFFER_MAX+1]u8;
57 while !is_ipc_offline {
58 reset_temporary_storage();
60 client_s, client_addr := accept(server_s);
61 defer close_and_reset(*client_s);
65 case EAGAIN; continue;
69 assert(false, "Client Socket");
75 n = recv(client_s, buffer.data, BUFFER_MAX, 0);
77 /** Omitting error reporting for this tiny, and not
83 if n > BUFFER_MAX break;
84 if buffer[0] == 0 break;
85 if n != BUFFER_MAX break;
88 request := string.{ n, buffer.data };
90 if trim(to_lower_copy(request)) == "reload" {
92 load_blog_data(,, context.default_allocator);
98reload_server_shutdown_clean :: () {
99 is_ipc_offline = true;
115sockaddr_un :: struct {
117 sun_path: [108]u8; /** Limit defined in un.h */
121my_logger :: #bake_arguments base_logger(prefix="Reload");