X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fconnection-private.h;h=1d4e019a01fe45db4d464c9bd387a2258d04b83d;hp=39fc85240e7c637817f2495a1e9bea07f62737df;hb=3f0db5bd32f136de9e7cfa8250f0c20469261241;hpb=ca7064277a864e8e33cf9042c693c5580727282b diff --git a/src/frontend/connection-private.h b/src/frontend/connection-private.h index 39fc852..1d4e019 100644 --- a/src/frontend/connection-private.h +++ b/src/frontend/connection-private.h @@ -32,13 +32,17 @@ #ifndef SDB_FRONTEND_CONNECTION_PRIVATE_H #define SDB_FRONTEND_CONNECTION_PRIVATE_H 1 +#include "frontend/connection.h" + #include "core/object.h" +#include "core/store.h" #include "utils/strbuf.h" -#include "frontend/connection.h" #include #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -60,6 +64,10 @@ struct sdb_conn { uint32_t cmd; uint32_t cmd_len; + /* amount of data to skip, e.g., after receiving invalid commands; if this + * is non-zero, the 'skip_len' first bytes of 'buf' are invalid */ + size_t skip_len; + sdb_strbuf_t *errbuf; /* user information */ @@ -67,6 +75,55 @@ struct sdb_conn { }; #define CONN(obj) ((sdb_conn_t *)(obj)) +/* + * node types + */ + +typedef struct { + sdb_conn_node_t super; + char *name; +} conn_fetch_t; +#define CONN_FETCH(obj) ((conn_fetch_t *)(obj)) + +typedef struct { + sdb_conn_node_t super; + sdb_store_matcher_t *matcher; +} conn_matcher_t; +#define CONN_MATCHER(obj) ((conn_matcher_t *)(obj)) + +typedef struct { + sdb_conn_node_t super; + conn_matcher_t *matcher; + conn_matcher_t *filter; +} conn_lookup_t; +#define CONN_LOOKUP(obj) ((conn_lookup_t *)(obj)) + +/* + * type helper functions + */ +static void __attribute__((unused)) +conn_fetch_destroy(sdb_object_t *obj) +{ + if (CONN_FETCH(obj)->name) + free(CONN_FETCH(obj)->name); +} /* conn_fetch_destroy */ + +static void __attribute__((unused)) +conn_matcher_destroy(sdb_object_t *obj) +{ + if (CONN_MATCHER(obj)->matcher) + sdb_object_deref(SDB_OBJ(CONN_MATCHER(obj)->matcher)); +} /* conn_matcher_destroy */ + +static void __attribute__((unused)) +conn_lookup_destroy(sdb_object_t *obj) +{ + if (CONN_LOOKUP(obj)->matcher) + sdb_object_deref(SDB_OBJ(CONN_LOOKUP(obj)->matcher)); + if (CONN_LOOKUP(obj)->filter) + sdb_object_deref(SDB_OBJ(CONN_LOOKUP(obj)->filter)); +} /* conn_lookup_destroy */ + #ifdef __cplusplus } /* extern "C" */ #endif