From 47c7c3cfd21b17a57b98a212b084b5ad426329c3 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 15 Apr 2020 12:15:02 +0200 Subject: [PATCH] Little updates --- inc/lektor/database.h | 1 + inc/lektor/net.h | 2 ++ src/commands.c | 55 +++++++++++++------------------------------ src/database/queue.c | 3 ++- src/net/listen.c | 6 +++++ 5 files changed, 27 insertions(+), 40 deletions(-) diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 73c87476..796398e9 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -78,6 +78,7 @@ struct lkt_callback { bool (*call)(void *args, int id, int id_len, const char *sql_row); struct lkt_state *srv; size_t c; + int iterations; }; /* List the content of the queue */ diff --git a/inc/lektor/net.h b/inc/lektor/net.h index 1ae6e87d..7c64ff18 100644 --- a/inc/lektor/net.h +++ b/inc/lektor/net.h @@ -50,6 +50,8 @@ void lkt_state_send(struct lkt_state *srv, size_t c, struct lkt_message *msg); bool lkt_get_continuation(struct lkt_state *srv, size_t c); void lkt_set_continuation(struct lkt_state *srv, size_t c, int i); +size_t lkt_remaining_msg(struct lkt_state *srv, size_t c); + /* Get the mask to watch for events for a given client, to be used with the `idle` command. * Return a pointer to the client's mask */ enum mpd_idle_flag *lkt_client_get_mask(struct lkt_state *srv, size_t c); diff --git a/src/commands.c b/src/commands.c index b04bd870..67314205 100644 --- a/src/commands.c +++ b/src/commands.c @@ -58,12 +58,10 @@ bool command_rescan(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]) { (void) argv; - if (!lkt_client_auth(srv, c, false)) { fprintf(stderr, " ! command_rescan: Failed, user %lu not authentificated\n", c); return false; } - return ! repo_get_allid_async(); } @@ -74,7 +72,6 @@ command_kill(struct lkt_state *srv, size_t c) fprintf(stderr, " ! command_restart: Failed to restart, user not authentificated %lu\n", c); return false; } - fprintf(stderr, " * Stopping lektord\n"); close(srv->fds[0].fd); exit(EXIT_SUCCESS); @@ -243,10 +240,8 @@ command_stop(sqlite3 *db, struct lkt_win *win, enum mpd_idle_flag *watch_mask_pt { *watch_mask_ptr |= MPD_IDLE_PLAYER; bool res = database_queue_stop(db); - if (res) win->close(win); - return res; } @@ -263,16 +258,11 @@ command_add(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], struct lkt_uri_t uri; char *query = args[0]; bool ret, is_insert = false; - int priority = 1; /* To be modified according to the command (insert or add) later */ - + int priority = 1; /* To be modified according to the command (insert or add) later */ (void) is_insert; // Don't know what insert looks like (void) win; // No callbacks to the window for the moment - int i; - for (i = 0; args[i] != NULL; ++i) - printf("%s", args[i]); - if (!lkt_uri_from(&uri, query)) { fprintf(stderr, " ! command_add: failed to parse query '%s', invalid uri\n", query); return false; @@ -342,14 +332,14 @@ command_addid(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX] return database_queue_add_id(db, id, priority); } -bool +inline bool command_clear(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr) { *watch_mask_ptr |= MPD_IDLE_PLAYLIST; return database_queue_clear(db); } -bool +inline bool command_crop(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr) { *watch_mask_ptr |= MPD_IDLE_PLAYLIST; @@ -502,12 +492,11 @@ command_idle(struct lkt_state *srv, size_t c, struct lkt_command *cmd) return true; } -bool +inline bool command_noidle(struct lkt_state *srv, size_t c) { enum mpd_idle_flag *clt_mask = lkt_client_get_mask(srv, c); *clt_mask = MPD_IDLE_NONE; - return true; } @@ -524,9 +513,7 @@ static bool lkt_callback_send_row_v1(void *_args, int id, int id_len, const char *sql_row) { struct lkt_callback *args = (struct lkt_callback *) _args; - struct lkt_message *out; - - out = lkt_message_new(); + struct lkt_message *out = lkt_message_new(); out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%*d %s\n", id_len, id, sql_row); lkt_state_send(args->srv, args->c, out); return true; @@ -537,14 +524,11 @@ lkt_callback_insert_v1(void *_args, int id, int id_len, const char *sql_row) { (void) sql_row; (void) id_len; - struct lkt_callback *args = (struct lkt_callback *) _args; - return database_queue_add_id(args->srv->db, id, 5); + return database_queue_add_id(((struct lkt_callback *) _args)->srv->db, id, 5); } bool -command_find(struct lkt_state *srv, - size_t c, - char *cmd_args[LKT_MESSAGE_ARGS_MAX], +command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], enum lkt_find_action action) { sqlite3_stmt *stmt; @@ -571,7 +555,6 @@ command_find(struct lkt_state *srv, callback.call = lkt_callback_insert_v1; srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; break; - case LKT_FND_ACT_NONE: default: return false; } @@ -644,8 +627,7 @@ command_set_playback_option(struct lkt_state *srv, size_t c, return false; (void) c; - long val; - bool ret = false; + long val, ret = false; char *endptr; struct lkt_win *win = &srv->win; @@ -899,11 +881,9 @@ command_shuffle(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr) } bool -command_queue_list(struct lkt_state *srv, size_t c, - char *args[LKT_MESSAGE_ARGS_MAX]) +command_queue_list(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX]) { - unsigned int count; - unsigned int from, to, tmp_switch; + unsigned int count, from, to, tmp_switch; long val; char *endptr, *str; struct lkt_callback callback = { @@ -1021,13 +1001,11 @@ command_user_add(sqlite3 *db, char *argv[LKT_MESSAGE_ARGS_MAX]) static bool sticker_send_one_value(void *_args, const char *sticker, const char *type, int uri, int value) { - struct sticker_callback *args = (struct sticker_callback *) _args; - struct lkt_message *out; (void) sticker; (void) type; (void) uri; - - out = lkt_message_new(); + struct sticker_callback *args = (struct sticker_callback *) _args; + struct lkt_message *out = lkt_message_new(); out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "value: %d\n", value); lkt_state_send(args->srv, args->c, out); return false; @@ -1037,9 +1015,7 @@ static bool sticker_send_all(void *_args, const char *sticker, const char *type, int uri, int value) { struct sticker_callback *args = (struct sticker_callback *) _args; - struct lkt_message *out; - - out = lkt_message_new(); + struct lkt_message *out = lkt_message_new(); out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%s: %d\nsticker: %s\nvalue: %d\n", type, uri, sticker, value); lkt_state_send(args->srv, args->c, out); @@ -1050,11 +1026,10 @@ static bool sticker_send_check_uri(void *_args, const char *sticker, const char *type, int uri, int value) { struct sticker_callback *args = (struct sticker_callback *) _args; - struct lkt_message *out; (void) type; if (uri == args->uri) { - out = lkt_message_new(); + struct lkt_message *out = lkt_message_new(); out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%s: %d\n", sticker, value); lkt_state_send(args->srv, args->c, out); } @@ -1147,6 +1122,7 @@ command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS return false; } + srv->mpd_idle_events |= MPD_IDLE_STICKER; return true; } @@ -1229,5 +1205,6 @@ command_sticker_delete(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_A (void) c; int uri = atoi(argv[1]); + srv->mpd_idle_events |= MPD_IDLE_STICKER; return database_sticker_delete_specify(srv->db, argv[0], uri, argv[2]); } diff --git a/src/database/queue.c b/src/database/queue.c index 5e042014..ff7f174e 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -701,6 +701,7 @@ database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, struct id = sqlite3_column_int(stmt, 0); row = (const char *) sqlite3_column_text(stmt, 1); id_len = sqlite3_column_int(stmt, 2); + ++(callback->iterations); if (callback->call(callback, id, id_len, row)) continue; else @@ -748,11 +749,11 @@ database_queue_list_from(sqlite3 *db, unsigned int count, struct lkt_callback *c for (;;) { code = sqlite3_step(stmt); - if (code == SQLITE_ROW) { id = sqlite3_column_int(stmt, 0); row = (const char *) sqlite3_column_text(stmt, 1); id_len = sqlite3_column_int(stmt, 2); + ++(callback->iterations); if (callback->call(callback, id, id_len, row)) continue; else diff --git a/src/net/listen.c b/src/net/listen.c index 2c7b7396..11418168 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -75,6 +75,12 @@ lkt_set_continuation(struct lkt_state *srv, size_t c, int i) srv->clients[c - 1].continuation = i; } +inline size_t +lkt_remaining_msg(struct lkt_state *srv, size_t c) +{ + return BUFFER_OUT_MAX - srv->clients[c - 1].buffer_out_len; +} + void lkt_state_send(struct lkt_state *srv, size_t c, struct lkt_message *msg) { -- GitLab