...
qmf.opcode field | Message Body Data Type | Sent By | Sent To | Description |
---|---|---|---|---|
_exception | QMF_DATA | Agent | reply-to | This general-purpose message can be sent by an agent in response to any request (query, subscription, method) if the request could not be completed for any reason. The QMF_DATA in the message body contains details of why the failure occurred. |
_agent_locate_request | QMF_QUERY_PREDICATE | Console | QMF Topic | A console may send an agent-locate-request in order to reach all available agents. The predicate may be used to limit the set of agents that will respond to the request. |
_agent_locate_response | QMF_DATA | Agent | reply-to | This is a response to an agent-locate-request. An agent will send an agent-locate-response if it received an agent-locate-request with a predicate that matches its characteristics. |
_agent_heartbeat_indication | QMF_DATA | Agent | Topic | Each agent periodically sends a heartbeat message to a topic to indicate that it is alive and connected. The content of the heartbeat message is the list of the agent's characteristics. |
_query_request | defined by qmf.content (either QMF_QUERY or QMF_V1_QUERY) | Console | Agent | A console sends a query to an agent to request that the agent send data to the requester. |
_query_response | List of <qmf.content> | Agent | reply-to | The response to a query sent by a console. |
_subscribe_request | QMF_SUBSCRIBE | Console | Agent | A console sends a subscribe-request to an agent to receive data matched by a query. A subscription differs from a query request in that it continues to send updated information to the console when the data changes. |
_subscribe_response | QMF_SUBSCRIPTION | Agent | reply-to | When an agent receives a subscribe-request, it sends a subscribe-response granting (or refusing) the subscription. Should the subscription succeed, the response will contain an identifier for the subscription assigned by the Agent. Thereafter, it will send data-indication messages on the same correlation-id with updates when they happen or periodically. The first data-indication message sent by the agent will contain all matching data, subsequent data-indications will contain only those matching data that has changed since the last update. |
_subscribe_cancel_indication | QMF_SUBSCRIPTION_ID | Console | Agent | A console can request that a subscription it created be immediately cancelled. This message must have the same correlation-id as the original request, and contain the subscription identifier as assigned by the Agent. |
_subscribe_refresh_indication | QMF_SUBSCRIPTION_ID | Console | Agent | A console can keep a subscription alive by periodically refreshing it by sending a subscribe-refresh-indication. This message must have the same correlation-id as the original request, and contain the subscription identifier as assigned by the Agent. |
_data_indication | List of <qmf.content> | Agent | reply-to or topic | A data indication is sent by an Agent when 1) subscription data has changed and needs to be published, 2) an event has occurred and event data is being published, and 3) any other time an agent wants to send unsolicited data. |
_method_request | QMF_METHOD_CALL | Console | Agent | A console may invoke a method on an object managed by an agent. It may also invoke a method directly on the agent if appropriate. This message contains the method call including the input arguments. |
_method_response | QMF_METHOD_RESULT | Agent | reply-to | A method call always results in a single method result. This message carries either the output arguments from a successful method call or it holds an exception to describe a failure. |
...
qmf.content field | Data Type | Description | _schema_package |||
---|---|---|---|---|---|
STRING | Schema package name | _schema_id | SCHEMA_ID | Schema class identifier | |
_schema_class | SCHEMA_CLASS | Schema class definition | |||
_object_id | OBJECT_ID | Managed object identifier | |||
_data | QMF_DATA | Data, managed and/or described or free-form | |||
_event | QMF_EVENT | Event | _query | QMF_QUERY | QMFv2 Query |
_query _v1 | QMF_V1_QUERY | Query map from the QMFv1 Specification |
Message Body Map Formats
SCHEMA_ID
No Format |
---|
SCHEMA_ID := { _package_name: STRING, _class_name: STRING, _type: '_data' | '_event', _hash: UUID } |
Field | Optional | Description |
---|---|---|
_package_name | no | Package name (namespace) for the described class |
_class_name | no | Name of the described class |
_type | no | Class type: data or event |
_hash _str | yes | Hash string (uuid) to distinguish different versions of a class |
...
No Format |
---|
SCHEMA_CLASS := { _schema_id: SCHEMA_ID, _valuesdesc: { EACH_ATTR_NAME: SCHEMA_PROPERTY | SCHEMA_METHOD } STRING, _default_subtypes: { EACH_ATTR_NAME: qmfProperty | qmfMethod } severity: NUMBER, _properties: [SCHEMA_PROPERTY, ...], } _methods: [SCHEMA_METHOD, ...] } |
Field | Optional | Description | |||
---|---|---|---|---|---|
_schema_id | no | Identifier for this schema class | |||
_values desc | no yes | Map Description of schema attribute names and either their property or method descriptions. The subtype defines whether an attribute is a property or a method. the schema class | |||
_default_severity | yes | Default severity for an event class | |||
_properties | no | List of SCHEMA_PROPERTY elements describing the properties of the class | |||
_methods | no | List of SCHEMA_METHOD elements describing the methods of the class | _subtypes | no | Map of subtype names ('qmfProperty' or 'qmfMethod') for each attribute |
SCHEMA_PROPERTY
No Format |
---|
SCHEMA_PROPERTY := { _typename: QMF_TYPESTRING, _accesstype: RO | RC | RW QMF_TYPE, _unitindex: STRINGBOOL, _minaccess: 'RO' | NUMBER'RC' | 'RW', _maxunit: NUMBERSTRING, _maxlenmin: NUMBER, _dirmax: I | O | IONUMBER, _descmaxlen: STRINGNUMBER, _referencesdir: SCHEMA_ID 'I' | 'O' | 'IO', _subtypedesc: QMF_SUBTYPE STRING, } |
Field | Optional | Description |
---|---|---|
_type | no | The QMF data type of this property |
_access | yes | The remote access rules for this property: |
_unit | yes | Annotation. Units of measure for numeric values |
_min | yes | Minimum numeric value |
_max | yes | Maximum numeric value |
_maxlen | yes | Maximum length of a variable length value (in octets) |
_dir | yes | Used only for method arguments. Direction of transfer: |
_desc | yes | Annotation. Description of the property |
_references | yes | If the type is a reference to another managed object, this field may be used to specify the required class for that object |
_subtype | yes | May be used to further specify the meaning of the value of this field. For example, a number may actually be a timestamp or a duration. A string may be a reference to another object, or a URL. |
QMF_TYPE
_references: SCHEMA_ID,
_subtype: QMF_SUBTYPE
}
|
Field | Optional | Description |
---|---|---|
_name | no | The name of the property |
_type | no | The QMF data type of this property |
_index | yes | True iff this property is an index of an object. Default is False. |
_access | yes | The remote access rules for this property: |
_unit | yes | Annotation. Units of measure for numeric values |
_min | yes | Minimum numeric value |
_max | yes | Maximum numeric value |
_maxlen | yes | Maximum length of a variable length value (in octets) |
_dir | yes | Used only for method arguments. Direction of transfer: |
_desc | yes | Annotation. Description of the property |
_references | yes | If the type is a reference to another managed object, this field may be used to specify the required class for that object |
_subtype | yes | May be used to further specify the meaning of the value of this field. For example, a number may actually be a timestamp or a duration. A string may be a reference to another object, or a URL. |
QMF_TYPE
No Format |
---|
QMF_TYPE := 'TYPE_VOID' |
'TYPE_BOOL' |
'TYPE_INT' |
No Format |
QMF_TYPE := TYPE_VOID | TYPE_BOOL | TYPE_INT | 'TYPE_FLOAT' | 'TYPE_STRING' | 'TYPE_MAP' | 'TYPE_LIST' | 'TYPE_UUID' |
QMF_SUBTYPE
No Format |
---|
QMF_SUBTYPE := 'reference' | 'url' | 'timestamp' | 'duration' |
SCHEMA_METHOD
No Format |
---|
SCHEMA_METHOD := { _descname: STRING, _arguments: { EACH_ARG_NAME: SCHEMA_PROPERTY }desc: STRING, _arguments: [SCHEMA_PROPERTY, ...] } |
Field | Optional | Description |
---|---|---|
_name | no | The name of the method |
_desc | yes | Annotation. Description of this method |
_arguments | no | Map List of argument names and SCHEMA_PROPERTY data to describe them elements that describe the method's arguments |
QMF_METHOD_CALL
No Format |
---|
QMF_METHOD_CALL := { _object_id: OBJECT_ID, _method_name: STRING, _arguments: { EACH_KEY: VALUE }, _subtypes: { EACH_KEY: STRING } } |
...
Field | Optional | Description |
---|---|---|
_agent_name | yes | Name of the agent that is managing the referenced data |
_agent_epoch | yes | Numeric epoch of the agent process. This number is managed by the agent and is incremented each time the agent process starts. This field is only present for transient object IDs that must not be the same for a given object across an agent restart. Persistent object IDs must not include this field. |
_object_name | no | Name of the data that uniquely identifies the data within the context of the agent (or the context of the schema class, if provided) |
...
. Persistent object IDs must not include this field. | ||
_object_name | no | Name of the data that uniquely identifies the data within the context of the agent. |
QMF_QUERY
No Format |
---|
QMF_QUERY := { _what: QMF_QUERY_TARGET,
_where: QMF_QUERY_PREDICATE,
_object_id: OBJECT_ID,
_schema_id: SCHEMA_ID
}
|
Field | Optional | Description |
---|---|---|
_what | no | Identifies the kind of data being queried |
_where | yes | Query predicate to limit the number of results of the query |
_object_id | yes | Identifier of a single object being queried |
_schema_id | yes | Identifier of a single schema being queried |
QMF_QUERY_TARGET
No Format |
---|
QMF_QUERY_TARGET := { _what: QMF_CONTENT_TYPE, 'SCHEMA_ID' | 'SCHEMA' | 'OBJECT_where: QMF_QUERY_PREDICATEID' | } |
...
Field
...
Optional
...
Description
...
_what
...
no
...
Identifies the kind of data being queried
'OBJECT'
|
QMF_QUERY_PREDICATE
...
_where
...
yes
...
QMF_SUBSCRIBE
No Format |
---|
QMF_SUBSCRIBE := { _query: QMF_QUERY, _duration: NUMBER, _interval: NUMBER } |
...