X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fconnection-private.h;h=0126e892b1774f2071f255a0362ebb9404d77ef3;hp=f2d85f2ccdfd177e461032421a90eb181f870fdc;hb=b4d485cde96751e1ec832d0e75a3e6081006a1a4;hpb=a916bb6643c413ee1d104f2a2274b5a9ca22d721 diff --git a/src/frontend/connection-private.h b/src/frontend/connection-private.h index f2d85f2..0126e89 100644 --- a/src/frontend/connection-private.h +++ b/src/frontend/connection-private.h @@ -64,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 */ @@ -77,38 +81,60 @@ struct sdb_conn { typedef struct { sdb_conn_node_t super; - char *name; -} conn_fetch_t; -#define CONN_FETCH(obj) ((conn_fetch_t *)(obj)) + sdb_store_matcher_t *matcher; +} conn_matcher_t; +#define CONN_MATCHER(obj) ((conn_matcher_t *)(obj)) typedef struct { sdb_conn_node_t super; - sdb_store_matcher_t *matcher; -} conn_node_matcher_t; -#define CONN_MATCHER(obj) ((conn_node_matcher_t *)(obj)) + conn_matcher_t *filter; +} conn_list_t; +#define CONN_LIST(obj) ((conn_list_t *)(obj)) + +typedef struct { + sdb_conn_node_t super; + char *name; + conn_matcher_t *filter; +} conn_fetch_t; +#define CONN_FETCH(obj) ((conn_fetch_t *)(obj)) typedef struct { sdb_conn_node_t super; - conn_node_matcher_t *matcher; + 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_matcher_destroy(sdb_object_t *obj) +{ + sdb_object_deref(SDB_OBJ(CONN_MATCHER(obj)->matcher)); +} /* conn_matcher_destroy */ + +static void __attribute__((unused)) +conn_list_destroy(sdb_object_t *obj) +{ + sdb_object_deref(SDB_OBJ(CONN_LIST(obj)->filter)); +} /* conn_list_destroy */ + static void __attribute__((unused)) conn_fetch_destroy(sdb_object_t *obj) { if (CONN_FETCH(obj)->name) free(CONN_FETCH(obj)->name); + sdb_object_deref(SDB_OBJ(CONN_FETCH(obj)->filter)); } /* conn_fetch_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)); -} /* conn_fetch_destroy */ + sdb_object_deref(SDB_OBJ(CONN_LOOKUP(obj)->matcher)); + sdb_object_deref(SDB_OBJ(CONN_LOOKUP(obj)->filter)); +} /* conn_lookup_destroy */ #ifdef __cplusplus } /* extern "C" */