/*
 * External API exported in a library api
 */
typedef uint64_t dataconf_query_list_handle_t;

typedef enum {
	DATACONF_DISPATCH_ONE,
	DATACONF_DISPATCH_ALL,
	DATACONF_DISPATCH_BLOCKING
} dataconf_dispatch_t;

#define	DATACONF_TRACK_CURRENT		0x01
#define	DATACONF_TRACK_CHANGES		0x02
#define DATACONF_TRACk_CHANGES_ONLY	0x04

typedef void (*dataconf_new_fn_t) (
	dataconf_handle_t handle,
	unsigned int seqno,
	char *result);

typedef void (*dataconf_deleted_fn_t) (
	dataconf_handle_t handle,
	unsigned int seqno,
	char *result);

typedef void (*dataconf_done_fn_t) (
	dataconf_handle_t handle,
	unsigned int seqno);

typedef struct {
	dataconf_new_fn_t dataconf_new_fn,
	dataconf_done_fn_t dataconf_deleted_fn,
	dataconf_done_fn_t dataconf_done_fn
} dataconf_callbacks_t;

dataconf_error_t dataconf_initialize (void);

dataconf_error_t dataconf_finalize (void);

dataconf_error_t dataconf_fd_get (int *fd);

dataconf_error_t dataconf_dispatch (dataconf_handle_T dispatch_types);

/*
 * Starts the delivery of callbacks for the xml query specified.
 * All callbacks are deliverd via the dispatch function
 * Depending on track flags, the current values of the xml query could be
 * delivered in this callback
 */
dataconf_error_t dataconf_track (
	char *xml_request,
	int track_flags,
	dataconf_callbacks_t callbacks,
	dataconf_track_handle_t *dataconf_track_handle);

dataconf_error_t dataconf_trackstop (
	dataconf_handle_t dataconf_track_handle);

/*
 * Retrieves one key and value via an XML query
 */
dataconf_error_t dataconf_query_single (
	char *xml_request,
	char *result);

/*
 * Retrieves lists of information via an XML query
 */
dataconf_error_t dataconf_query_list_initialize (
	char *xml_request,
	dataconf_query_list_handle_t *dataconf_query_list_handle);

dataconf_error_t dataconf_query_list_next (
	dataconf_query_list_handle_t dataconf_query_list_handle,
	char *result);

dataconf_error_t dataconf_query_list_finalize (
	dataconf_query_list_handle_t dataconf_query_list_handle);

/*
 * Internal implementation API used inside the executive
 */
typdef uint64t xml_handle_t;

xml_initialize (xml_handle_t *handle);
xml_track_set (xml_handle_t handle,
	char *request,
	void (*new_result_fn_t) (
		unsigned int seqno,
		char *result),
	void (*done_result_fn_t) (
		unsigned int seqno),
	unsigned int track_flags);
xml_finalize (xml_handle_t handle);
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to