myMPD
Internal API documentation
Loading...
Searching...
No Matches
msg_queue.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-3.0-or-later
3 myMPD (c) 2018-2025 Juergen Mang <mail@jcgames.de>
4 https://github.com/jcorporation/mympd
5*/
6
11#ifndef MYMPD_QUEUE_H
12#define MYMPD_QUEUE_H
13
14#include <pthread.h>
15#include <stdbool.h>
16#include <time.h>
17
18extern struct t_mympd_queue *webserver_queue;
19extern struct t_mympd_queue *mympd_api_queue;
20#ifdef MYMPD_ENABLE_LUA
21 extern struct t_mympd_queue *script_queue;
22 extern struct t_mympd_queue *script_worker_queue;
23#endif
24
29 void *data;
30 unsigned id;
31 time_t timestamp;
32 struct t_mympd_msg *next;
33};
34
42
47 unsigned length;
48 struct t_mympd_msg *head;
49 struct t_mympd_msg *tail;
50 pthread_mutex_t mutex;
51 pthread_cond_t wakeup;
52 const char *name;
54 // to wakeup the mympd_api event loop
56 // to wakeup the mongoose event loop
57 unsigned long mg_conn_id;
58 void *mg_mgr;
59};
60
62 bool event);
63void *mympd_queue_free(struct t_mympd_queue *queue);
64bool mympd_queue_push(struct t_mympd_queue *queue, void *data, unsigned id);
65void *mympd_queue_shift(struct t_mympd_queue *queue, int timeout_ms, unsigned id);
66int mympd_queue_expire_age(struct t_mympd_queue *queue, time_t max_age_s);
67bool mympd_mg_wakeup_send(const void *data);
68
69#endif
void * mympd_queue_free(struct t_mympd_queue *queue)
Definition msg_queue.c:72
int mympd_queue_expire_age(struct t_mympd_queue *queue, time_t max_age_s)
Definition msg_queue.c:205
void * mympd_queue_shift(struct t_mympd_queue *queue, int timeout_ms, unsigned id)
Definition msg_queue.c:133
struct t_mympd_queue * mympd_queue_create(const char *name, enum mympd_queue_types type, bool event)
Definition msg_queue.c:49
struct t_mympd_queue * webserver_queue
Message queue read by webserver thread.
Definition msg_queue.c:27
bool mympd_queue_push(struct t_mympd_queue *queue, void *data, unsigned id)
Definition msg_queue.c:86
mympd_queue_types
Definition msg_queue.h:38
@ QUEUE_TYPE_REQUEST
queue holds only t_work_request entries
Definition msg_queue.h:39
@ QUEUE_TYPE_RESPONSE
queue holds only t_work_response entries
Definition msg_queue.h:40
struct t_mympd_queue * mympd_api_queue
Message queue read by mympd_api thread.
Definition msg_queue.c:28
bool mympd_mg_wakeup_send(const void *data)
Definition msg_queue.c:261
Definition msg_queue.h:28
time_t timestamp
messages added timestamp
Definition msg_queue.h:31
unsigned id
id of the message
Definition msg_queue.h:30
void * data
data t_work_request or t_work_response
Definition msg_queue.h:29
struct t_mympd_msg * next
pointer to next message
Definition msg_queue.h:32
Definition msg_queue.h:46
struct t_mympd_msg * head
pointer to first message
Definition msg_queue.h:48
enum mympd_queue_types type
the queue type (request or response)
Definition msg_queue.h:53
pthread_mutex_t mutex
the mutex
Definition msg_queue.h:50
struct t_mympd_msg * tail
pointer to last message
Definition msg_queue.h:49
const char * name
descriptive name
Definition msg_queue.h:52
int event_fd
event fd
Definition msg_queue.h:55
unsigned length
length of the queue
Definition msg_queue.h:47
pthread_cond_t wakeup
condition variable for the mutex
Definition msg_queue.h:51
unsigned long mg_conn_id
mongoose listener id
Definition msg_queue.h:57
void * mg_mgr
mongoose mgr
Definition msg_queue.h:58