Go to main content

man pages section 3: Remote Administration Daemon Module Interfaces

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

etracequery-1 (3rad)

Name

etracequery-1 - 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

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)