X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finclude%2Ffrontend%2Fconnection.h;h=c4478fb327116774114f07ac0e21515b811ecef0;hb=ae32792b881853979265e41b49866be9ea2d6b2c;hp=bdebe7d1f9f0d3ba70222893ee73b810cec55b7a;hpb=ea29adb896a47f32e86119d6161dc5bc2259565b;p=sysdb.git diff --git a/src/include/frontend/connection.h b/src/include/frontend/connection.h index bdebe7d..c4478fb 100644 --- a/src/include/frontend/connection.h +++ b/src/include/frontend/connection.h @@ -29,6 +29,7 @@ #define SDB_FRONTEND_CONNECTION_H 1 #include "frontend/proto.h" +#include "utils/llist.h" #include "utils/strbuf.h" #include @@ -39,6 +40,18 @@ extern "C" { typedef struct sdb_conn sdb_conn_t; +/* + * sdb_conn_node_t represents an interface for the result of parsing a command + * string. The first field of an actual implementation of the interface is a + * sdb_conn_state_t in order to fascilitate casting to and from the interface + * type to the implementation type. + */ +typedef struct { + sdb_object_t super; + sdb_conn_state_t cmd; +} sdb_conn_node_t; +#define SDB_CONN_NODE(obj) ((sdb_conn_node_t *)(obj)) + /* * sdb_connection_accpet: * Accept a new connection on the specified file-descriptor 'fd' and return a @@ -95,11 +108,28 @@ sdb_connection_ping(sdb_conn_t *conn); /* * sdb_fe_parse: - * Parse the query text specified in 'query'. + * Parse the query text specified in 'query' and return a list of parse trees + * (for each command) to be executed by sdb_fe_exec. The list has to be freed + * by the caller. + * + * Returns: + * - an sdb_llist_t object of sdb_conn_node_t on success + * - NULL in case of an error */ -int +sdb_llist_t * sdb_fe_parse(const char *query); +/* + * sdb_fe_exec: + * Execute the command identified by 'node'. + * + * Returns: + * - 0 on success + * - a negative value else + */ +int +sdb_fe_exec(sdb_conn_node_t *node); + /* * session handling */