etracequery-1 - End tracing
#include <rad/client/1/etracequery.h> cc [ flag... ] file... -letracequery1_client [ library... ] interface Query rc_err_t etracequery_Query_retrieve(rc_instance_t *inst, etracequery_Result_t ***result, int *result_cnt, etracequery_QueryError_t **error); rc_err_t etracequery_Query_cancel(rc_instance_t *inst, etracequery_QueryError_t **error); rc_err_t etracequery_Query__rad_create(rc_instance_t *inst, boolean_t synchronous, etracequery_Request_t *request, rc_instance_t **result, etracequery_QueryError_t **error); Enumerated Types enum QUERYSTATUS typedef enum etracequery_QUERYSTATUS { EQUERYSTATUS_OK = 0, EQUERYSTATUS_FAILED = 1, EQUERYSTATUS_NO_MEMORY = 2, EQUERYSTATUS_INVALID_CONNECTION = 3, EQUERYSTATUS_INVALID_REQUEST_ARGS = 4, EQUERYSTATUS_INVALID_RESULTS = 5, } etracequery_QUERYSTATUS_t; enum QueryValueType typedef enum etracequery_QueryValueType { EQVT_LONG = 0, EQVT_LONGS = 1, EQVT_ULONG = 2, EQVT_ULONGS = 3, EQVT_STRING = 4, EQVT_DICTIONARY = 5, EQVT_DICTIONARIES = 6, } etracequery_QueryValueType_t; enum QueryFilterType typedef enum etracequery_QueryFilterType { EQFT_ETRACEQUERY_FILTER_TYPE_SESSION = 0, } etracequery_QueryFilterType_t; enum QueryFilterAttrType typedef enum etracequery_QueryFilterAttrType { EQFAT_ETRACEQUERY_FILTER_ATTR_TYPE_SESSION_ID = 0, } etracequery_QueryFilterAttrType_t; enum QueryFilterAttrOp typedef enum etracequery_QueryFilterAttrOp { EQFAO_ETRACEQUERY_FILTER_ATTR_OP_EQUAL = 0, } etracequery_QueryFilterAttrOp_t; enum SubqueryType typedef enum etracequery_SubqueryType { EST_ETRACEQUERY_TYPE_SPAN = 0, EST_ETRACEQUERY_TYPE_EVENT = 1, EST_ETRACEQUERY_TYPE_TRACE = 2, } etracequery_SubqueryType_t; enum AttributeType typedef enum etracequery_AttributeType { EAT_ETRACEQUERY_ATTRIBUTE_LATENCY = 0, } etracequery_AttributeType_t; enum OperationName typedef enum etracequery_OperationName { EON_ETRACEQUERY_OPERATION_AVERAGE = 0, EON_ETRACEQUERY_OPERATION_VARIANCE = 1, EON_ETRACEQUERY_OPERATION_LLQUANTIZE = 2, EON_ETRACEQUERY_OPERATION_LIST = 3, EON_ETRACEQUERY_OPERATION_DISTRIBUTION = 4, } etracequery_OperationName_t; Structured Types struct QueryError typedef struct etracequery_QueryError etracequery_QueryError_t; struct etracequery_QueryError { etracequery_QUERYSTATUS_t eqe_err; char *eqe_errmsg; }; void etracequery_QueryError_free(etracequery_QueryError_t *in); struct QueryDict typedef struct etracequery_QueryDict etracequery_QueryDict_t; struct etracequery_QueryDict { etracequery__rad_dict_string_QueryValue_t *eqd_map; }; void etracequery_QueryDict_free(etracequery_QueryDict_t *in); struct QueryValue typedef struct etracequery_QueryValue etracequery_QueryValue_t; struct etracequery_QueryValue { etracequery_QueryValueType_t eqv_type; long long *eqv_lval; long long *eqv_llist; int eqv_llist_count; unsigned long long *eqv_ulval; unsigned long long *eqv_ullist; int eqv_ullist_count; char *eqv_sval; etracequery__rad_dict_string_QueryValue_t *eqv_dval; etracequery_QueryDict_t **eqv_dlist; int eqv_dlist_count; }; void etracequery_QueryValue_free(etracequery_QueryValue_t *in); struct QueryFilterAttr typedef struct etracequery_QueryFilterAttr etracequery_QueryFilterAttr_t; struct etracequery_QueryFilterAttr { etracequery_QueryFilterAttrType_t eqfa_attr_type; etracequery_QueryFilterAttrOp_t eqfa_op; etracequery_QueryValue_t *eqfa_value; }; void etracequery_QueryFilterAttr_free(etracequery_QueryFilterAttr_t *in); struct QueryFilter typedef struct etracequery_QueryFilter etracequery_QueryFilter_t; struct etracequery_QueryFilter { etracequery_QueryFilterType_t eqf_filter_type; etracequery_QueryFilterAttr_t **eqf_attr; int eqf_attr_count; }; void etracequery_QueryFilter_free(etracequery_QueryFilter_t *in); struct Operation typedef struct etracequery_Operation etracequery_Operation_t; struct etracequery_Operation { etracequery_OperationName_t eo_name; unsigned long long *eo_steps; unsigned long long *eo_lo_exp; unsigned long long *eo_hi_exp; unsigned long long *eo_base; }; void etracequery_Operation_free(etracequery_Operation_t *in); struct SubqueryRequest typedef struct etracequery_SubqueryRequest etracequery_SubqueryRequest_t; struct etracequery_SubqueryRequest { char *esr_name; etracequery_SubqueryType_t esr_type; etracequery_AttributeType_t *esr_attribute; char *esr_span_begin; char *esr_span_end; etracequery_Operation_t **esr_operations; int esr_operations_count; }; void etracequery_SubqueryRequest_free(etracequery_SubqueryRequest_t *in); struct Request typedef struct etracequery_Request etracequery_Request_t; struct etracequery_Request { unsigned long long er_period; etracequery_SubqueryRequest_t **er_subqueries; int er_subqueries_count; etracequery_QueryFilter_t **er_filters; int er_filters_count; }; void etracequery_Request_free(etracequery_Request_t *in); struct SubqueryResult typedef struct etracequery_SubqueryResult etracequery_SubqueryResult_t; struct etracequery_SubqueryResult { char *esr_name; unsigned long long esr_nmatch; etracequery_QueryDict_t **esr_results; int esr_results_count; }; void etracequery_SubqueryResult_free(etracequery_SubqueryResult_t *in); struct Result typedef struct etracequery_Result etracequery_Result_t; struct etracequery_Result { unsigned long long er_nperiod; etracequery_SubqueryResult_t **er_subqueries; int er_subqueries_count; }; void etracequery_Result_free(etracequery_Result_t *in); Dictionaries Dictionary { string : QueryValue } typedef struct base_rad_dict etracequery__rad_dict_string_QueryValue_t;
ETRACEQUERY-1(3rad) RAD Module Definitions ETRACEQUERY-1(3rad) NAME etracequery - querying API for End-to-End tracing SYNOPSIS #include <rad/client/1/etracequery.h> cc [ flag... ] file... -letracequery1_client [ library... ] interface Query rc_err_t etracequery_Query_retrieve(rc_instance_t *inst, etracequery_Result_t ***result, int *result_cnt, etracequery_QueryError_t **error); rc_err_t etracequery_Query_cancel(rc_instance_t *inst, etracequery_QueryError_t **error); rc_err_t etracequery_Query__rad_create(rc_instance_t *inst, boolean_t synchronous, etracequery_Request_t *request, rc_instance_t **result, etracequery_QueryError_t **error); Enumerated Types enum QUERYSTATUS typedef enum etracequery_QUERYSTATUS { EQUERYSTATUS_OK = 0, EQUERYSTATUS_FAILED = 1, EQUERYSTATUS_NO_MEMORY = 2, EQUERYSTATUS_INVALID_CONNECTION = 3, EQUERYSTATUS_INVALID_REQUEST_ARGS = 4, EQUERYSTATUS_INVALID_RESULTS = 5, } etracequery_QUERYSTATUS_t; enum QueryValueType typedef enum etracequery_QueryValueType { EQVT_LONG = 0, EQVT_LONGS = 1, EQVT_ULONG = 2, EQVT_ULONGS = 3, EQVT_STRING = 4, EQVT_DICTIONARY = 5, EQVT_DICTIONARIES = 6, } etracequery_QueryValueType_t; enum QueryFilterType typedef enum etracequery_QueryFilterType { EQFT_ETRACEQUERY_FILTER_TYPE_SESSION = 0, } etracequery_QueryFilterType_t; enum QueryFilterAttrType typedef enum etracequery_QueryFilterAttrType { EQFAT_ETRACEQUERY_FILTER_ATTR_TYPE_SESSION_ID = 0, } etracequery_QueryFilterAttrType_t; enum QueryFilterAttrOp typedef enum etracequery_QueryFilterAttrOp { EQFAO_ETRACEQUERY_FILTER_ATTR_OP_EQUAL = 0, } etracequery_QueryFilterAttrOp_t; enum SubqueryType typedef enum etracequery_SubqueryType { EST_ETRACEQUERY_TYPE_SPAN = 0, EST_ETRACEQUERY_TYPE_EVENT = 1, EST_ETRACEQUERY_TYPE_TRACE = 2, } etracequery_SubqueryType_t; enum AttributeType typedef enum etracequery_AttributeType { EAT_ETRACEQUERY_ATTRIBUTE_LATENCY = 0, } etracequery_AttributeType_t; enum OperationName typedef enum etracequery_OperationName { EON_ETRACEQUERY_OPERATION_AVERAGE = 0, EON_ETRACEQUERY_OPERATION_VARIANCE = 1, EON_ETRACEQUERY_OPERATION_LLQUANTIZE = 2, EON_ETRACEQUERY_OPERATION_LIST = 3, EON_ETRACEQUERY_OPERATION_DISTRIBUTION = 4, } etracequery_OperationName_t; Structured Types struct QueryError typedef struct etracequery_QueryError etracequery_QueryError_t; struct etracequery_QueryError { etracequery_QUERYSTATUS_t eqe_err; char *eqe_errmsg; }; void etracequery_QueryError_free(etracequery_QueryError_t *in); struct QueryDict typedef struct etracequery_QueryDict etracequery_QueryDict_t; struct etracequery_QueryDict { etracequery__rad_dict_string_QueryValue_t *eqd_map; }; void etracequery_QueryDict_free(etracequery_QueryDict_t *in); struct QueryValue typedef struct etracequery_QueryValue etracequery_QueryValue_t; struct etracequery_QueryValue { etracequery_QueryValueType_t eqv_type; long long *eqv_lval; long long *eqv_llist; int eqv_llist_count; unsigned long long *eqv_ulval; unsigned long long *eqv_ullist; int eqv_ullist_count; char *eqv_sval; etracequery__rad_dict_string_QueryValue_t *eqv_dval; etracequery_QueryDict_t **eqv_dlist; int eqv_dlist_count; }; void etracequery_QueryValue_free(etracequery_QueryValue_t *in); struct QueryFilterAttr typedef struct etracequery_QueryFilterAttr etracequery_QueryFilterAttr_t; struct etracequery_QueryFilterAttr { etracequery_QueryFilterAttrType_t eqfa_attr_type; etracequery_QueryFilterAttrOp_t eqfa_op; etracequery_QueryValue_t *eqfa_value; }; void etracequery_QueryFilterAttr_free(etracequery_QueryFilterAttr_t *in); struct QueryFilter typedef struct etracequery_QueryFilter etracequery_QueryFilter_t; struct etracequery_QueryFilter { etracequery_QueryFilterType_t eqf_filter_type; etracequery_QueryFilterAttr_t **eqf_attr; int eqf_attr_count; }; void etracequery_QueryFilter_free(etracequery_QueryFilter_t *in); struct Operation typedef struct etracequery_Operation etracequery_Operation_t; struct etracequery_Operation { etracequery_OperationName_t eo_name; unsigned long long *eo_steps; unsigned long long *eo_lo_exp; unsigned long long *eo_hi_exp; unsigned long long *eo_base; }; void etracequery_Operation_free(etracequery_Operation_t *in); struct SubqueryRequest typedef struct etracequery_SubqueryRequest etracequery_SubqueryRequest_t; struct etracequery_SubqueryRequest { char *esr_name; etracequery_SubqueryType_t esr_type; etracequery_AttributeType_t *esr_attribute; char *esr_span_begin; char *esr_span_end; etracequery_Operation_t **esr_operations; int esr_operations_count; }; void etracequery_SubqueryRequest_free(etracequery_SubqueryRequest_t *in); struct Request typedef struct etracequery_Request etracequery_Request_t; struct etracequery_Request { unsigned long long er_period; etracequery_SubqueryRequest_t **er_subqueries; int er_subqueries_count; etracequery_QueryFilter_t **er_filters; int er_filters_count; }; void etracequery_Request_free(etracequery_Request_t *in); struct SubqueryResult typedef struct etracequery_SubqueryResult etracequery_SubqueryResult_t; struct etracequery_SubqueryResult { char *esr_name; unsigned long long esr_nmatch; etracequery_QueryDict_t **esr_results; int esr_results_count; }; void etracequery_SubqueryResult_free(etracequery_SubqueryResult_t *in); struct Result typedef struct etracequery_Result etracequery_Result_t; struct etracequery_Result { unsigned long long er_nperiod; etracequery_SubqueryResult_t **er_subqueries; int er_subqueries_count; }; void etracequery_Result_free(etracequery_Result_t *in); Dictionaries Dictionary { string : QueryValue } typedef struct base_rad_dict etracequery__rad_dict_string_QueryValue_t; DESCRIPTION API com.oracle.solaris.rad.etracequery [1] This API provides query interfaces of End-to-End Tracing (ETrace) to rad(8) clients. The following is sample python client which illustrate querying with the module. INTERFACES interface Query ETrace RAD query interface. Query Methods rc_err_t etracequery_Query_retrieve(rc_instance_t *inst, etracequery_Result_t ***result, int *result_cnt, etracequery_QueryError_t **error); Retrieve pending query results, block until results are available. [1]Possible fileds for result. |----------------+----------------+----------------------------------------| | Fileds | QueryValueType | Notes | |----------------+----------------+----------------------------------------| | average | ULONG | Result for "average" operation. | | | | | | variance | ULONG | Result for "variance" operation. | | | | | | llquantize | ULONGS | Results for "llquantize" operation. | | | | | | distribution | ULONGS | Results for "distribution" operation. | |----------------+----------------+----------------------------------------| Arguments: inst -- RAD instance result -- Query result. See [1] for the possible key-value pairs for "results" field. result_cnt -- Number of items in result array error rc_err_t etracequery_Query_cancel(rc_instance_t *inst, etracequery_QueryError_t **error); Close the connection to ETrace query server. Arguments: inst -- RAD instance error Query Create rc_err_t etracequery_Query__rad_create(rc_instance_t *inst, boolean_t synchronous, etracequery_Request_t *request, rc_instance_t **result, etracequery_QueryError_t **error); [2]Supported keys and values for each filter. |--------------|-----------------|------------|-------------------------------------| | Keys | QueryValueType | Values | Notes | |--------------+-----------------+------------+-------------------------------------| | session | STRING | | Filter on session_id. | |--------------+-----------------+------------+-------------------------------------| Arguments: inst -- RAD instance synchronous synchronous query or asynchronous query. In synchronous mode, users should invoke `Query.retrieve()' to retrieve the query results. In asynchronous mode, users should subscribe to `update' event to get updated about the query results. request -- Query request. See [2] for the valid keys and possible values for filters. result -- New Query instance error Query Retrieve rc_err_t etracequery_Query__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a Query object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t etracequery_Query__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a Query instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t etracequery_Query__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available Query instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key ENUMERATED TYPES enum QUERYSTATUS typedef enum etracequery_QUERYSTATUS { EQUERYSTATUS_OK = 0, EQUERYSTATUS_FAILED = 1, EQUERYSTATUS_NO_MEMORY = 2, EQUERYSTATUS_INVALID_CONNECTION = 3, EQUERYSTATUS_INVALID_REQUEST_ARGS = 4, EQUERYSTATUS_INVALID_RESULTS = 5, } etracequery_QUERYSTATUS_t; EQUERYSTATUS_OK (0) -- operation succeeded EQUERYSTATUS_FAILED (1) -- operation failed EQUERYSTATUS_NO_MEMORY (2) -- insufficient memory EQUERYSTATUS_INVALID_CONNECTION (3) -- connection to query server failed EQUERYSTATUS_INVALID_REQUEST_ARGS (4) -- invalid query request arguments EQUERYSTATUS_INVALID_RESULTS (5) -- invalid query results enum QueryValueType -- Represents the data type for QueryValue. typedef enum etracequery_QueryValueType { EQVT_LONG = 0, EQVT_LONGS = 1, EQVT_ULONG = 2, EQVT_ULONGS = 3, EQVT_STRING = 4, EQVT_DICTIONARY = 5, EQVT_DICTIONARIES = 6, } etracequery_QueryValueType_t; EQVT_LONG (0) EQVT_LONGS (1) EQVT_ULONG (2) EQVT_ULONGS (3) EQVT_STRING (4) EQVT_DICTIONARY (5) EQVT_DICTIONARIES (6) enum QueryFilterType -- Types of filters. typedef enum etracequery_QueryFilterType { EQFT_ETRACEQUERY_FILTER_TYPE_SESSION = 0, } etracequery_QueryFilterType_t; EQFT_ETRACEQUERY_FILTER_TYPE_SESSION (0) enum QueryFilterAttrType -- Types of attributes. typedef enum etracequery_QueryFilterAttrType { EQFAT_ETRACEQUERY_FILTER_ATTR_TYPE_SESSION_ID = 0, } etracequery_QueryFilterAttrType_t; EQFAT_ETRACEQUERY_FILTER_ATTR_TYPE_SESSION_ID (0) enum QueryFilterAttrOp -- Operation specification for query filter attributes. typedef enum etracequery_QueryFilterAttrOp { EQFAO_ETRACEQUERY_FILTER_ATTR_OP_EQUAL = 0, } etracequery_QueryFilterAttrOp_t; EQFAO_ETRACEQUERY_FILTER_ATTR_OP_EQUAL (0) enum SubqueryType -- Represents the types of Subquery. typedef enum etracequery_SubqueryType { EST_ETRACEQUERY_TYPE_SPAN = 0, EST_ETRACEQUERY_TYPE_EVENT = 1, EST_ETRACEQUERY_TYPE_TRACE = 2, } etracequery_SubqueryType_t; EST_ETRACEQUERY_TYPE_SPAN (0) The subquery object is a span between two matching events names. Note that a trace may have more than one matching spans. In this case, the operation is performed on every matching span. EST_ETRACEQUERY_TYPE_EVENT (1) -- Optional debug query. EST_ETRACEQUERY_TYPE_TRACE (2) -- Optional debug query. enum AttributeType -- Represent the type of Attribute. typedef enum etracequery_AttributeType { EAT_ETRACEQUERY_ATTRIBUTE_LATENCY = 0, } etracequery_AttributeType_t; EAT_ETRACEQUERY_ATTRIBUTE_LATENCY (0) -- The attribute is a time. Latencies will be expressed in nanoseconds. enum OperationName -- Represents the types of Operation. typedef enum etracequery_OperationName { EON_ETRACEQUERY_OPERATION_AVERAGE = 0, EON_ETRACEQUERY_OPERATION_VARIANCE = 1, EON_ETRACEQUERY_OPERATION_LLQUANTIZE = 2, EON_ETRACEQUERY_OPERATION_LIST = 3, EON_ETRACEQUERY_OPERATION_DISTRIBUTION = 4, } etracequery_OperationName_t; EON_ETRACEQUERY_OPERATION_AVERAGE (0) -- The result of each query result update will contain the average value for the attribute specified. EON_ETRACEQUERY_OPERATION_VARIANCE (1) -- The result of a each query result update will contain the variance value for the attribute specified. EON_ETRACEQUERY_OPERATION_LLQUANTIZE (2) -- The result of a each query result update will contain an array containing a log-linear distribution of the specified attribute. EON_ETRACEQUERY_OPERATION_LIST (3) -- The result of a each query result update will contain the list of trace or event dump of the specified attribute. EON_ETRACEQUERY_OPERATION_DISTRIBUTION (4) -- The result of a each query result update will contain an array contiainng the distribution of the specified attribute. STRUCTURED TYPES struct QueryError -- In the case of an error, errmsg may contain additional details about the error, beside the string translation of "err". typedef struct etracequery_QueryError etracequery_QueryError_t; struct etracequery_QueryError { etracequery_QUERYSTATUS_t eqe_err; char *eqe_errmsg; }; void etracequery_QueryError_free(etracequery_QueryError_t *in); Fields: eqe_err eqe_errmsg struct QueryDict -- Represents a value of type dictionary. typedef struct etracequery_QueryDict etracequery_QueryDict_t; struct etracequery_QueryDict { etracequery__rad_dict_string_QueryValue_t *eqd_map; }; void etracequery_QueryDict_free(etracequery_QueryDict_t *in); Fields: eqd_map struct QueryValue -- Represents a multi-typed value. typedef struct etracequery_QueryValue etracequery_QueryValue_t; struct etracequery_QueryValue { etracequery_QueryValueType_t eqv_type; long long *eqv_lval; long long *eqv_llist; int eqv_llist_count; unsigned long long *eqv_ulval; unsigned long long *eqv_ullist; int eqv_ullist_count; char *eqv_sval; etracequery__rad_dict_string_QueryValue_t *eqv_dval; etracequery_QueryDict_t **eqv_dlist; int eqv_dlist_count; }; void etracequery_QueryValue_free(etracequery_QueryValue_t *in); Fields: eqv_type -- describes the data type of the value. eqv_lval eqv_llist eqv_llist_count eqv_ulval eqv_ullist eqv_ullist_count eqv_sval eqv_dval eqv_dlist eqv_dlist_count struct QueryFilterAttr -- Filter attribute. typedef struct etracequery_QueryFilterAttr etracequery_QueryFilterAttr_t; struct etracequery_QueryFilterAttr { etracequery_QueryFilterAttrType_t eqfa_attr_type; etracequery_QueryFilterAttrOp_t eqfa_op; etracequery_QueryValue_t *eqfa_value; }; void etracequery_QueryFilterAttr_free(etracequery_QueryFilterAttr_t *in); Fields: eqfa_attr_type eqfa_op eqfa_value struct QueryFilter -- Query filter specification. typedef struct etracequery_QueryFilter etracequery_QueryFilter_t; struct etracequery_QueryFilter { etracequery_QueryFilterType_t eqf_filter_type; etracequery_QueryFilterAttr_t **eqf_attr; int eqf_attr_count; }; void etracequery_QueryFilter_free(etracequery_QueryFilter_t *in); Fields: eqf_filter_type eqf_attr eqf_attr_count struct Operation -- Represents an operation for a subquery. typedef struct etracequery_Operation etracequery_Operation_t; struct etracequery_Operation { etracequery_OperationName_t eo_name; unsigned long long *eo_steps; unsigned long long *eo_lo_exp; unsigned long long *eo_hi_exp; unsigned long long *eo_base; }; void etracequery_Operation_free(etracequery_Operation_t *in); Fields: eo_name -- the name of the operation eo_steps -- the number of steps per order of magnitude eo_lo_exp -- the low exponent eo_hi_exp -- the high exponent eo_base -- the base struct SubqueryRequest -- Represents a subquery for the query. typedef struct etracequery_SubqueryRequest etracequery_SubqueryRequest_t; struct etracequery_SubqueryRequest { char *esr_name; etracequery_SubqueryType_t esr_type; etracequery_AttributeType_t *esr_attribute; char *esr_span_begin; char *esr_span_end; etracequery_Operation_t **esr_operations; int esr_operations_count; }; void etracequery_SubqueryRequest_free(etracequery_SubqueryRequest_t *in); Fields: esr_name -- name of the subquery esr_type -- type of subquery esr_attribute -- attribute of subquery esr_span_begin -- the begin of span between two events esr_span_end -- the end of span between two events esr_operations -- list of operations esr_operations_count struct Request -- Represents the query request. typedef struct etracequery_Request etracequery_Request_t; struct etracequery_Request { unsigned long long er_period; etracequery_SubqueryRequest_t **er_subqueries; int er_subqueries_count; etracequery_QueryFilter_t **er_filters; int er_filters_count; }; void etracequery_Request_free(etracequery_Request_t *in); Fields: er_period -- time between two query results are returned er_subqueries -- list of subqueries er_subqueries_count er_filters -- list of filters er_filters_count struct SubqueryResult -- Represents one result for a subquery. typedef struct etracequery_SubqueryResult etracequery_SubqueryResult_t; struct etracequery_SubqueryResult { char *esr_name; unsigned long long esr_nmatch; etracequery_QueryDict_t **esr_results; int esr_results_count; }; void etracequery_SubqueryResult_free(etracequery_SubqueryResult_t *in); Fields: esr_name -- subquery name as specified in the request esr_nmatch -- number of objects which matched the subquery on which the operation was performed esr_results -- list of subquery results esr_results_count struct Result -- Represents one result for the query. typedef struct etracequery_Result etracequery_Result_t; struct etracequery_Result { unsigned long long er_nperiod; etracequery_SubqueryResult_t **er_subqueries; int er_subqueries_count; }; void etracequery_Result_free(etracequery_Result_t *in); Fields: er_nperiod -- sequence of current result er_subqueries er_subqueries_count DICTIONARIES Dictionary { string : QueryValue } Dictionary with a key type of string and a value type of QueryValue. typedef struct base_rad_dict etracequery__rad_dict_string_QueryValue_t; rc_err_t etracequery__rad_dict_string_QueryValue_get(etracequery__rad_dict_string_QueryValue_t *dict, const char *key, etracequery_QueryValue_t **result); Get the value for given key. Arguments: dict -- Dictionary key -- Key value result -- Value returned rc_err_t etracequery__rad_dict_string_QueryValue_put(etracequery__rad_dict_string_QueryValue_t *dict, const char *key, etracequery_QueryValue_t *value, etracequery_QueryValue_t **result); Put a key-value pair into the dictionary. Returns a previous value stored with the same key if one exists. Arguments: dict -- Dictionary key -- Key value value -- Value written result -- Original value for the key rc_err_t etracequery__rad_dict_string_QueryValue_contains(etracequery__rad_dict_string_QueryValue_t *dict, const char *key); Check whether a key exists in the dictionary. Returns RCE_OK when key exists, RCE_CLIENT_NOTFOUND otherwise. Arguments: dict -- Dictionary key -- Key value rc_err_t etracequery__rad_dict_string_QueryValue_remove(etracequery__rad_dict_string_QueryValue_t *dict, const char *key, etracequery_QueryValue_t **result); Remove key-value pair from the dictionary. Returns RCE_OK when key was sucessfully removed, RCE_CLIENT_NOTFOUND otherwise. Arguments: dict -- Dictionary key -- Key value result -- Original value for the key rc_err_t etracequery__rad_dict_string_QueryValue_keys(etracequery__rad_dict_string_QueryValue_t *dict, char ***result, int *count); Get list of keys from the dictionary. Memory associated with the result array should be freed by the user. Arguments: dict -- Dictionary result -- Array of dictionary keys count -- Number of items in result array rc_err_t etracequery__rad_dict_string_QueryValue_values(etracequery__rad_dict_string_QueryValue_t *dict, etracequery_QueryValue_t ***result, int *count); Get list of values from the dictionary. Memory associated with the result array should be freed by the user. Arguments: dict -- Dictionary result -- Array of dictionary values count -- Number of items in result array unsigned int etracequery__rad_dict_string_QueryValue_size(etracequery__rad_dict_string_QueryValue_t *dict); Get number of key-value pairs in the dictionary. Arguments: dict -- Dictionary etracequery__rad_dict_string_QueryValue_t * etracequery__rad_dict_string_QueryValue_create(const rc_instance_t *inst); Create a new, empty dictionary. Returns a pointer to the dictionary, or NULL on error. Arguments: inst -- RAD instance void etracequery__rad_dict_string_QueryValue_free(etracequery__rad_dict_string_QueryValue_t *dict); Destroy the dictionary and release the allocated memory. Arguments: dict -- Dictionary rc_err_t etracequery__rad_dict_string_QueryValue_map(etracequery__rad_dict_string_QueryValue_t *dict, rc_err_t(*func)(const char *, etracequery_QueryValue_t *, void *), void *arg); Invoke a function with each key-value pair in the dictionary. Arguments: dict -- Dictionary func -- Function to invoke The arguments are: key, value, user-data. arg -- User data: custom parameter to invoke the function with VERSION 1.0 ATTRIBUTES See attributes(7) for descriptions of the following attributes: +--------------------+----------------------------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +--------------------+----------------------------------------------+ |Availability | system/management/rad/module/rad-etracequery | +--------------------+----------------------------------------------+ |Interface Stability | Private | +--------------------+----------------------------------------------+ SEE ALSO rad(8) NOTES 1. Accessing Python documentation for this module: $ pydoc rad.bindings.com.oracle.solaris.rad.etracequery_1 Solaris 11.4 2017-02-01 ETRACEQUERY-1(3rad)