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)