3.3.12 Record: SupportedProtocol

Topic Version1Published10/31/2016
For StandardETP v1.1

Describes a protocol that is supported in a particular role by a given actor. Includes the protocol ID and role. Used primarily in initial session negotiation to determine how a client and server will interact for a given session.

Avro Schema

{

      "type": "record",

      "namespace": "Energistics.Datatypes",

      "name": "SupportedProtocol",

      "fields":

     [

         { "name": "protocol", "type": "int" },

         { "name": "protocolVersion", "type": "Energistics.Datatypes.Version" },

         { "name": "role", "type": "string" },

         { "name": "protocolCapabilities", "type": { "type": "map", "values": "Energistics.Datatypes.DataValue" } }

     ]

}

Attribute

Description

Data Type

Min

Max

protocol

The ID of the protocol that this represents, as defined in the Energistics.Core.ProcotolID enumeration. Note that although the values will match the enumeration, it is not exhaustive and the value is specified as an integer, not an enumerated value. This usage is to allow private protocols to be negotiated.

int

1

1

protocolVersion

The specific version of the protocol to be used.

Version

1

1

role

Most of the supported protocols involve two mutually exclusive roles. For example, when using the ChannelData protocols, a given actor can either be a "producer" or "consumer". The values expected for this string are defined by the subprotocols and included as decorations in the Avro schemas. Values are case-sensitive and, by modeling convention, should be all lower case in the specification and Avro schema files.

string

1

1

protocolCapabilities

A name-value map of protocol-specific configuration or capability data. The key names, defaults, optionality, and expected data types are defined as necessary by each protocol. Key names are always case-insensitive.

Key names are strings, and key values are of type DataValue.

DataValue

0

n