Remember queue name
This commit is contained in:
parent
9fcffa8083
commit
33e304e7f7
3
queue.c
3
queue.c
|
@ -22,6 +22,7 @@
|
||||||
#include "dataq.h"
|
#include "dataq.h"
|
||||||
|
|
||||||
typedef struct queue_extension_t_ {
|
typedef struct queue_extension_t_ {
|
||||||
|
sexp_t *name;
|
||||||
sexp_t *backlog_q;
|
sexp_t *backlog_q;
|
||||||
queue_t waiter_q;
|
queue_t waiter_q;
|
||||||
hashtable_t subscriptions;
|
hashtable_t subscriptions;
|
||||||
|
@ -47,6 +48,7 @@ static sexp_t *queue_extend(node_t *n, sexp_t *args) {
|
||||||
if ((sexp_length(args) == 1) && sexp_stringp(sexp_head(args))) {
|
if ((sexp_length(args) == 1) && sexp_stringp(sexp_head(args))) {
|
||||||
cmsg_bytes_t name = sexp_data(sexp_head(args));
|
cmsg_bytes_t name = sexp_data(sexp_head(args));
|
||||||
queue_extension_t *q = calloc(1, sizeof(*q));
|
queue_extension_t *q = calloc(1, sizeof(*q));
|
||||||
|
q->name = INCREF(sexp_head(args));
|
||||||
q->backlog_q = INCREF(sexp_new_queue());
|
q->backlog_q = INCREF(sexp_new_queue());
|
||||||
q->waiter_q = EMPTY_QUEUE(subscription_t, link);
|
q->waiter_q = EMPTY_QUEUE(subscription_t, link);
|
||||||
init_hashtable(&q->subscriptions, 5, NULL, NULL);
|
init_hashtable(&q->subscriptions, 5, NULL, NULL);
|
||||||
|
@ -63,6 +65,7 @@ static sexp_t *queue_extend(node_t *n, sexp_t *args) {
|
||||||
static void queue_destructor(node_t *n) {
|
static void queue_destructor(node_t *n) {
|
||||||
queue_extension_t *q = n->extension;
|
queue_extension_t *q = n->extension;
|
||||||
if (q != NULL) { /* can be NULL if queue_extend was given invalid args */
|
if (q != NULL) { /* can be NULL if queue_extend was given invalid args */
|
||||||
|
DECREF(q->name, sexp_destructor);
|
||||||
DECREF(q->backlog_q, sexp_destructor);
|
DECREF(q->backlog_q, sexp_destructor);
|
||||||
/* q->waiter_q will be automatically destroyed as part of the destruction of q->subscriptions */
|
/* q->waiter_q will be automatically destroyed as part of the destruction of q->subscriptions */
|
||||||
destroy_hashtable(&q->subscriptions);
|
destroy_hashtable(&q->subscriptions);
|
||||||
|
|
Loading…
Reference in New Issue