QMF Map Message ProtocolPage edited by Ted RossQMFv2 Map Message ProtocolIntroductionThis document describes the design of a proposed protocol for QMF based on map-messages (offered by the new C++ and Python APIs as well as the existing JMS API). If adopted, this new protocol will change the formats of the messages used by QMF components to communicate. It will also change some of the message exchange patterns. It will not significantly impact the console and agent APIs and is intended to operate with applications that use the current QMF APIs. Some highlights of the new design:
QMF ProtocolUse of Message HeadersStandard Message Properties
Custom Application Headers
QMF OpCodes
QMF Content Types
Message Body Map FormatsSCHEMA_IDSCHEMA_ID := { _package_name: STRING, _class_name: STRING, _type: _data | _event, _hash_str: STRING }
SCHEMA_CLASSSCHEMA_CLASS := { _schema_id: SCHEMA_ID, _values: { EACH_ATTR_NAME: SCHEMA_PROPERTY | SCHEMA_METHOD }, _subtypes: { EACH_ATTR_NAME: qmfProperty | qmfMethod } }
SCHEMA_PROPERTYSCHEMA_PROPERTY := { _type: QMF_TYPE, _access: RO | RC | RW, _unit: STRING, _min: NUMBER, _max: NUMBER, _maxlen: NUMBER, _dir: I | O | IO, _desc: STRING, _references: SCHEMA_ID, _subtype: QMF_SUBTYPE }
QMF_TYPEQMF_TYPE := TYPE_VOID | TYPE_BOOL | TYPE_INT | TYPE_FLOAT | TYPE_STRING | TYPE_MAP | TYPE_LIST | TYPE_UUID QMF_SUBTYPEQMF_SUBTYPE := reference | url | timestamp | duration SCHEMA_METHODSCHEMA_METHOD := { _desc: STRING, _arguments: { EACH_ARG_NAME: SCHEMA_PROPERTY } }
QMF_DATAQMF_DATA := { _schema_id: SCHEMA_ID, _object_id: OBJECT_ID, _values: { EACH_KEY: VALUE }, _subtypes: { EACH_KEY: STRING } }
OBJECT_IDOBJECT_ID := { _agent_name: STRING, _object_name: STRING, _schema_id: SCHEMA_ID }
QMF_QUERYQMF_QUERY := { _what: QMF_CONTENT_TYPE, _where: QMF_QUERY_PREDICATE }
QMF_SUBSCRIBEQMF_SUBSCRIBE := { _query: QMF_QUERY, _duration: NUMBER, _interval: NUMBER }
OperationsAgent AnnounceConsole Topic Agent | | | | | <---- Agent Indication ---- | | <------------------------ | | | | | Agent LocateConsole Topic Agent | | | | ---- Agent Locate Indication -> | | | | --------------------------> | | | | | <-------------------------------------- Agent Indication ---- | | | | | | | | ---- Agent Locate Indication -------------------------------> | | | | | <-------------------------------------- Agent Indication ---- | | | | Schema QueryConsole Agent | | | ---- Schema Request ----------------> | | | | <------------- Schema Indication ---- | | <------------- Schema Indication ---- | | | | <---------------------- Response ---- | | | Schema AnnounceConsole Topic Agent | | | | | <--- Schema Indication ---- | | <------------------------ | | | | | Get QueryConsole Agent | | | ---- Get Query Request -------------> | | | | <--------------- Data Indication ---- | | <--------------- Data Indication ---- | | <--------------- Data Indication ---- | | <--------------- Data Indication ---- | | <--------------- Data Indication ---- | | <---------- Last Data Indication ---- | | | | <------------------------ Result ---- | | | Create Subscription QueryConsole Target Agent | | | | ---- Create Subscription Request ---------------------> | | | | | | <----------- Data Indication ---- | | | <----------- Data Indication ---- | | | <----------- Data Indication ---- | | | <----------- Data Indication ---- | | | <----------- Data Indication ---- | | | | | <------------------------------------------ Result ---- | | | | | | <----------- Data Indication ---- | | | | | | <----------- Data Indication ---- | | | | Cancel Subscription QueryConsole Target Agent | | | | ---- Cancel Subscription Request ---------------------> | | | | | <------------------------------------------ Result ---- | | | | | | <----------- Data Indication ---- | | | <------ Last Data Indication ---- | | | | Renew Subscription QueryConsole Target Agent | | | | ---- Renew Subscription Request ----------------------> | | | | | <------------------------------------------ Result ---- | | | | Invoke MethodConsole Agent | | | ---- Method Request ----------------> | | | | <------------------------ Result ---- | | | Raise EventConsole Topic Agent | | | | | <---------- Event Indication ---- | | <------------------ | | | | | Map Body FormatsQMF Data FormatsqmfAgentLocate := {qmfQuery} qmfAgentIndicate := {qmfAgentInfo} qmfAgentInfo := agent_info: {name: (sstr), vendor: (sstr), product: (sstr), version: (sstr), -- optional platform: (sstr), -- optional arch: (sstr)} -- optional qmfQuery := query: {what: qmfQueryTarget, where: qmfQueryPredicate} -- optional qmfQueryTarget := {schema_package: (void)} || {schema_id: (void)} || {schema: (void)} || {agent: (void)} || {object_id: qmfClassSpecifier} || {object: qmfClassSpecifier} qmfClassSpecifier := {class_name: (sstr), package_name: (sstr), -- optional hash: (bin128)} -- optional qmfQueryPredicate := {qmfCompare} || {and: listOf(qmfQueryPredicate)} || {or: listOf(qmfQueryPredicate)} || {not: qmfQueryPredicate} qmfCompare := list(eq, (sstr), amqpValue) || list(ne, (sstr), amqpValue) || list(lt, (sstr), amqpValue) || list(gt, (sstr), amqpValue) || list(le, (sstr), amqpValue) || list(ge, (sstr), amqpValue) || list(exists, (sstr)) || list(is-type, (sstr), amqpTypeCode) || list(is-subtype, (sstr), (sstr)) || list(re-match, (sstr), (lstr)) qmfData := {values: mapOf(amqpValue), subtypes: mapOf(sstr) } -- optional, keys must be in values qmfDescribedData := {(qmfData), class_id: qmfClassId } qmfManagedData := {(qmfDescribedData), object_id: (lstr), create_time: (datetime), delete_time: (datetime), -- optional update_time: (datetime) } qmfClassId := {package: (sstr), name: (sstr), hash: (bin128) } qmfObjectClass := {(qmfData[qmfProperty|qmfMethod]), class_id: qmfClassId, desc: (lstr), superclass: qmfClassId } qmfProperty := {amqp_type: (amqpTypeCode), access_rule: (sstr), optional: (void), unit: (sstr), desc: (lstr), subtype: (sstr), discrete: (void), min: (amqp_type), max: (amqp_type), maxlen: (uint32) } qmfMethod := {desc: (lstr), arguments: mapOf(qmfArgument) } qmdArgument := {amqp_type: (uint8), unit: (sstr), desc: (lstr), subtype: (sstr), input: (void) output: (void)
Change Notification Preferences
View Online
|
View Change
|
Add Comment
|
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence
- [CONF] Apache Qpid > QMF Map Message Protocol confluence