53afcc83 by Michael B. Mathews

V1.1 with updated JSON and XMF types and proper references.

1 parent 561a0aa9
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2018, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
16 identity="ApiBase.xid.xml">
17
18 <title>Tensor Microservices API Base Definitions</title>
19 <comment>
20 This document defines the common types API service interface (input and output base structures) for the Tensor microservices definitions.
21 </comment>
22 <import ref="https://xid.location.studio/Tensor/V1.1/Common.xid.xml" local="Common.xid.xml" />
23
24 <namespace name="Tensor">
25
26 <!--
27 *******************************
28 *InputBase Type Definition
29 *******************************
30 -->
31 <struct name="InputBase" >
32 <comment>Base input fields for operations supporting asynchronous transaction information.</comment>
33 <elem name="devid" multiplicity="0..1" type="string" ord="64">
34 <comment>
35 Optional device identifier, that provides a consistent multi-transaction identifier
36 for a device or equivalent (e.g. service identifier) providing the data. Any errors or issues resulting from processing the data will include this identifier
37 in the system logs, providing traceability. Identifier should be unique.
38 </comment>
39 </elem>
40 <elem name="etid" multiplicity="0..1" type="string" ord="65">
41 <comment>
42 Optional external transaction identifier for the caller to uniquely identify and track
43 the transaction and corresponding results. These identifiers will appear in the
44 service logs for traceability analysis. The format of the transaction identifier is up to the caller
45 and can be anything: e.g. [uuid], [id1.subid0], [numerical], etc. This data is never interpreted by
46 the service.
47 </comment>
48 </elem>
49 <elem name="directive" multiplicity="0..*" type="NameValue" ord="66">
50 <comment>
51 A set of directives to influence processing.
52 </comment>
53 </elem>
54 </struct>
55
56
57 <!--
58 *******************************
59 *OutputBase Type Definition
60 *******************************
61 -->
62 <struct name="OutputBase" >
63 <comment>Base output fields common to operations supporting asynchronous returning transaction information.</comment>
64 <elem name="devid" multiplicity="0..1" type="string" ord="64">
65 <comment>
66 Device identifier provided at operation input, provides a consistent identifier
67 for a device or equivalent (e.g. service identifier) providing the data. Any errors or issues resulting from processing the data will include this identifier
68 in the service logs, providing traceability.
69 </comment>
70 </elem>
71
72 <elem name="etid" multiplicity="0..1" type="string" ord="65">
73 <comment>
74 Optional external transaction identifier for the caller to uniquely identify and track
75 the transaction and corresponding results. These identifiers appear in the
76 ILP system logs for traceability analysis. The format of the transaction identifier is up to the caller
77 and can be anything: e.g. [uuid], [id1.subid0], [numerical], etc. This data is never interpreted by
78 the ILP system.
79 </comment>
80
81 </elem>
82
83 <elem name="resultcode" type="ResultCode" multiplicity="1" ord="66">
84 <comment>Result of the operation.</comment>
85 </elem>
86
87 <elem name="errinfo" type="Tensor.string" multiplicity="0..1" ord="67">
88 <comment>Error information if result was not success.</comment>
89 </elem>
90
91 </struct>
92
93 </namespace>
94 </specification>
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
16 identity="Command.xid.xml">
17 <title>Tensor Command</title>
18 <comment></comment>
19 <artifact></artifact>
20
21 <import ref="https://xid.location.studio/Tensor/V1.1/Common.xid.xml" local="Common.xid.xml" />
22
23 <namespace name="Tensor">
24
25 <!--
26 ************************************
27 * Command API Implementation
28 ************************************
29 -->
30 <struct name="Command">
31 <comment>A TPF command structure compatible with the TPF Framework Commander Component.</comment>
32 <elem name="name" type="Tensor.string" multiplicity="1" ord="64">
33 <comment>The command name including scope specifiers. Convention is to use a '.' as a scope separator
34 such as[component name].[command name].</comment>
35 </elem>
36
37 <elem name="etid" type="Tensor.string" multiplicity="0..1" ord="65">
38 <comment>
39 Optional external transaction identifier for the caller to uniquely identify and track
40 the command and corresponding results.
41 </comment>
42 </elem>
43
44 <elem name="argument" type="NameValue" multiplicity="0..*" ord="66">
45 <comment>
46 Each command may have zero or more arguments.
47 They may be name/value or oridinal/value arguments.
48 Both name and value are required.
49 </comment>
50 </elem>
51 </struct>
52
53 <struct name="CommandResponse">
54 <comment>
55 The command response structure containing information resulting from executing the
56 command (success or failure). Check the result code for details on status of executing the
57 command a value of 1 means success, value of 0 is undefined, See ResultCode for other standard
58 result codes. Each operation may define additional codes.
59 </comment>
60 <elem name="name" type="Tensor.string" multiplicity="1" ord="64">
61 <comment>
62 The command name including scope specifiers. Convention is to use a '.' as a scope separator
63 such as[component name].[command name].
64 </comment>
65 </elem>
66
67 <elem name="etid" type="Tensor.string" multiplicity="0..1" ord="65">
68 <comment>
69 Optional external transaction identifier for the caller to uniquely identify and track
70 the command and corresponding results.
71 </comment>
72 </elem>
73
74 <elem name="result" type="Tensor.int8" multiplicity="1" ord="66">
75 <comment>The processing result code. 1 is success, 0 is undefined, -1 is a failure.</comment>
76 </elem>
77
78 <elem name="output" type="Tensor.string" multiplicity="0..1" ord="67">
79 <comment>
80 Optional command output stored as a string. Interpeting the output data is dependent upon the
81 command function executed and what data formats are as an encodded string.
82 </comment>
83 </elem>
84 </struct>
85
86 <interface name="CommandApi">
87 <comment>Interface executing commands inside TPF Containers.</comment>
88
89 <operation name="Execute">
90 <comment>
91 Executes the specified command elements. Can specify whether to return responses (default true) or not using wantresponses.
92 </comment>
93 <input name="input" sid="0x0100">
94 <elem name="commands" multiplicity="1..*" type="Command" ord="64"/>
95 <elem name="wantresponses" multiplicity="1" type="Tensor.bool" ord="65" default="true"/>
96 </input>
97 <output name="output" sid="0x0101">
98 <elem name="lastcommand" type="Tensor.int8" multiplicity="1" ord="64">
99 <comment>The index of the last command executed. If this is less than the total number of commands a failure occurred.</comment>
100 </elem>
101 <elem name="lastresult" type="Tensor.int8" multiplicity="1" ord="65">
102 <comment>The last processing result code. 1 is success, 0 is undefined, -1 is a failure.</comment>
103 </elem>
104 <elem name="responses" type="CommandResponse" multiplicity="1..*" ord="66">
105 <comment>A command response for each command executed.</comment>
106 </elem>
107 </output>
108 </operation>
109 </interface>
110 </namespace>
111 </specification>
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
16 identity="Common.xid.xml">
17 <title>Tensor Common Definitions</title>
18 <comment></comment>
19 <artifact></artifact>
20
21 <import ref="https://xid.location.studio/Tensor/V1.1/Definitions.xid.xml" local="Definitions.xid.xml" />
22
23 <namespace name="Tensor">
24 <struct name="NameValue" >
25 <comment>A string base name value pair entry.</comment>
26 <elem name="name" type="Tensor.string" ord="64"/>
27 <elem name="value" type="Tensor.string" ord="65"/>
28 </struct>
29
30 <enum name="ResultCode" type="Tensor.int8" default="undefined">
31 <comment>General processing result codes.</comment>
32 <literal name="success" value="1"/>
33 <literal name="undefined" value="0"/>
34 <literal name="failure" value="-1" />
35 <literal name="busy" value="-2" />
36 <literal name="processingError" value="-3"/>
37 <literal name="parsingError" value="-4"/>
38 <literal name="malformedRequest" value="-5"/>
39 <literal name="encodingError" value="-6"/>
40
41 </enum>
42
43 <struct name="VoidType">
44 <comment>Reserved type used in various translations to preserve translation. It has no purpose but as a placeholder. This is different from type "void" in Definitions.xid</comment>
45 <elem name="reserved" type="Tensor.uint16" multiplicity="1" ord="64"/>
46 </struct>
47
48 <enum name="WirelineFormat" type="Tensor.uint8" default="undefined">
49 <comment>Enum defines the wireline data format of XID interactions. These are defined to facilitate standard definitions within XID interactions independent of the
50 specific transport protocol or XID conduit.</comment>
51 <literal name ="undefined" value = "0"/>
52 <literal name ="raw" value = "1"/>
53 <literal name ="base64" value = "2"/>
54 <literal name ="hex" value = "3"/>
55 </enum>
56
57 <enum name="ContentType" type="Tensor.uint8" default="undefined">
58 <comment>Enum defines the content type of XID interactions. These are defined to facilitate standard definitions within XID interactions independent of the
59 specific transport protocol or XID conduit.</comment>
60 <literal name ="undefined" value = "0"/>
61 <literal name ="dataobject" value = "1"/>
62 <literal name ="xmf" value = "2"/>
63 <literal name ="json" value = "3"/>
64 </enum>
65
66 <enum name="InteractionRole" type="Tensor.uint8" default="undefined">
67 <comment>InteractionRole defines the role of the conduit in a XID interaction.
68 A Conduit port must adopt either the target or initiator role to preserve
69 interaction continuity and conventions.</comment>
70 <literal name ="undefined" value = "0"/>
71 <literal name ="target" value = "1"/>
72 <literal name ="initiator" value = "2"/>
73 </enum>
74
75 </namespace>
76 </specification>
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
16 identity="Definitions.xid.xml">
17 <title>Tensor Defitions</title>
18 <comment>
19 Defines fundamental type mappings.
20 </comment>
21
22 <tag name="package" value="com.comtechtel"/>
23
24 <namespace name="Tensor">
25 <type name="void" size="0">
26 <comment>represents nothing. &lt;br/&gt;Useful in &lt;operation&gt; with no &lt;input&gt;</comment>
27 <lang name="c" type="void"/>
28 <lang name="cpp" type="void"/>
29 <lang name="java" type="void"/>
30 <lang name="node" type="void"/>
31 </type>
32 <type name="bool" size="1">
33 <comment>represents true/false</comment>
34 <lang name="c" type="bool" include="stdbool.h"/>
35 <lang name="cpp" type="bool"/>
36 <lang name="java" type="XidBool" include="com.comtechtel.tensor.xid.XidBool"/>
37 <lang name="node" type="XidBool"/>
38 </type>
39
40 <type name="uint8" size="1">
41 <comment>8-bit, unsigned value</comment>
42 <lang name="c" type="uint8_t" include="stdint.h"/>
43 <lang name="cpp" type="uint8_t" include="cstdint"/>
44 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte" />
45 <lang name="node" type="XidUInt8"/>
46 </type>
47 <type name="uint16" size="2">
48 <comment>16-bit, unsigned value</comment>
49 <lang name="c" type="uint16_t" include="stdint.h"/>
50 <lang name="cpp" type="uint16_t" include="cstdint"/>
51 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort"/>
52 <lang name="node" type="XidUShort"/>
53 </type>
54 <type name="uint24" size="3">
55 <comment>24-bit, unsigned value</comment>
56 <lang name="c" type="uint24_t" include="Tensor/CXMF/int24.h"/>
57 <lang name="cpp" type="uint24_t" include="Tensor/Types/int24.h"/>
58 <lang name="java" type="XidInt24" include="com.comtechtel.tensor.xid.XidInt24"/>
59 <lang name="node" type="XidUInt24"/>
60 </type>
61 <type name="uint32" size="4">
62 <comment>32-bit, unsigned value</comment>
63 <lang name="c" type="uint32_t" include="stdint.h"/>
64 <lang name="cpp" type="uint32_t" include="cstdint"/>
65 <lang name="java" type="XidInt" include="com.comtechtel.tensor.xid.XidInt"/>
66 <lang name="node" type="XidUInt"/>
67 </type>
68 <type name="uint64" size="8">
69 <comment>64-bit, unsigned value</comment>
70 <lang name="c" type="uint64_t" include="stdint.h"/>
71 <lang name="cpp" type="uint64_t" include="cstdint"/>
72 <lang name="java" type="XidLong" include="com.comtechtel.tensor.xid.XidLong"/>
73 <lang name="node" type="XidULong"/>
74 </type>
75
76 <type name="int8" size="1">
77 <comment>8-bit, signed value</comment>
78 <lang name="c" type="int8_t" include="stdint.h"/>
79 <lang name="cpp" type="int8_t" include="cstdint"/>
80 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte"/>
81 <lang name="node" type="XidInt8"/>
82 </type>
83 <type name="int16" size="2">
84 <comment>16-bit, signed value</comment>
85 <lang name="c" type="int16_t" include="stdint.h"/>
86 <lang name="cpp" type="int16_t" include="cstdint"/>
87 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort" />
88 <lang name="node" type="XidShort"/>
89 </type>
90 <type name="int24" size="3">
91 <comment>24-bit, unsigned value</comment>
92 <lang name="c" type="int24_t" include="Tensor/CXMF/int24.h"/>
93 <lang name="cpp" type="int24_t" include="Tensor/Types/int24.h"/>
94 <lang name="java" type="XidInt24" include="com.comtechtel.tensor.xid.XidInt24"/>
95 <lang name="node" type="XidInt24"/>
96 </type>
97 <type name="int32" size="4">
98 <comment>32-bit, signed value</comment>
99 <lang name="c" type="int32_t" include="stdint.h"/>
100 <lang name="cpp" type="int32_t" include="cstdint"/>
101 <lang name="java" type="XidInt" include="com.comtechtel.tensor.xid.XidInt"/>
102 <lang name="node" type="XidInt"/>
103 </type>
104 <type name="int64" size="8">
105 <comment>64-bit, signed value</comment>
106 <lang name="c" type="int64_t" include="stdint.h"/>
107 <lang name="cpp" type="int64_t" include="cstdint"/>
108 <lang name="java" type="XidLong" include="com.comtechtel.tensor.xid.XidLong"/>
109 <lang name="node" type="XidLong"/>
110 </type>
111
112 <!--
113 <type name="float16" size="4">
114 <comment>32-bit, IEEE 754 binary16</comment>
115 <comment>C/cpp usually a "float"</comment>
116 <artifact>https://wikipedia.org/wiki/Half-precision_floating-point_format</artifact>
117 </type>
118 -->
119
120 <type name="float32" size="4">
121 <comment>32-bit, IEEE 754 binary32</comment>
122 <artifact>https://wikipedia.org/wiki/Single-precision_floating-point_format</artifact>
123 <lang name="c" type="float"/>
124 <lang name="cpp" type="float"/>
125 <lang name="java" type="XidFloat" include="com.comtechtel.tensor.xid.XidFloat"/>
126 <lang name="node" type="XidFloat"/>
127 </type>
128 <type name="float64" size="8">
129 <comment>64-bit, IEEE 754 binary64</comment>
130 <artifact>https://wikipedia.org/wiki/Double-precision_floating-point_format</artifact>
131 <lang name="c" type="double"/>
132 <lang name="cpp" type="double"/>
133 <lang name="java" type="XidDouble" include="com.comtechtel.tensor.xid.XidDouble"/>
134 <lang name="node" type="XidDouble"/>
135 </type>
136 <!--
137 <type name="float128" size="8">
138 <comment>128-bit, IEEE 754 binary128</comment>
139 <artifact>https://wikipedia.org/wiki/Quadruple-precision_floating-point_format</artifact>
140 <lang name="cpp" type="long double"/>
141 </type>
142 -->
143
144 <type name="byte" size="1">
145 <comment>A single byte</comment>
146 <lang name="c" type="uint8_t" include="stdint.h"/>
147 <lang name="cpp" type="uint8_t" include="cstdint"/>
148 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte"/>
149 <lang name="node" type="XidUInt8"/>
150 </type>
151 <type name="raw">
152 <comment>Variable sized collection of bytes</comment>
153 <!-- may change this type -->
154 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
155 <lang name="cpp" type="::Tensor::XMF::Atom" include="Tensor/XMF/Atom.h"/>
156 <lang name="java" type="Atom" include="com.comtechtel.tensor.xmf.Atom"/>
157 <lang name="node" type="Atom"/>
158 </type>
159
160 <type name="string">
161 <comment>Variable sized collection of characters</comment>
162 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
163 <lang name="cpp" type="std::string" include="string"/>
164 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
165 <lang name="node" type="XidString"/>
166 </type>
167
168 <type name="datetime" size="8">
169 <comment>
170 nanoseconds since Jan 1, 1970 UTC.
171 ISO-8601 for string formats (e.g. JSON).
172 </comment>
173 <artifact>https://www.iso.org/standard/40874.html</artifact>
174 <artifact>https://wikipedia.org/wiki/ISO_8601</artifact>
175 <artifact>https://xkcd.com/1179</artifact>
176 <lang name="c" type="uint64_t" include="stdint.h"/>
177 <lang name="cpp" type="::Tensor::Types::DateTime" include="Tensor/Types/DateTime.h"/>
178 <lang name="java" type="XidDateTime" include="com.comtechtel.tensor.xid.XidDateTime"/>
179 <lang name="node" type="XidDateTime"/>
180 </type>
181
182 <type name="UUID" size="16">
183 <comment>16 byte UUID.</comment>
184 <artifact>https://wikipedia.org/wiki/Universally_unique_identifier</artifact>
185 <lang name="c" type="UUID" include="Tensor/CXMF/uuid.h"/>
186 <lang name="cpp" type="::Tensor::Types::UUID" include="Tensor/Types/uuid.h"/>
187 <lang name="java" type="XidUuid" include="com.comtechtel.tensor.xid.XidUuid"/>
188 <lang name="node" type="XidUuid"/>
189 </type>
190
191 <type name="uri">
192 <comment>Standard Universal Resource Identifier (URI)</comment>
193 <tag name="TODO" value="Define uri as a custom type. Use string for now."/>
194 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
195 <lang name="cpp" type="std::string" include="string"/>
196 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
197 <lang name="node" type="XidString"/>
198 </type>
199
200 <type name="json">
201 <comment>JSON formatted/encoded string</comment>
202 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
203 <lang name="cpp" type="::Tensor::JSON::JSONObj" include="Tensor/JSON/TensorJSON.h"/>
204 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
205 <lang name="node" type="XidString"/>
206 </type>
207
208 <type name="xmf">
209 <comment>XMF formatted/encoded data, this is straight XMF in XMF formatted data, and base64 encoded binary XMF in JSON formatted data. </comment>
210 <lang name="c" type="CAtom" include="Tensor/CXMF/GetPut.h"/>
211 <lang name="cpp" type="::Tensor::XMF::Atom" include="Tensor/XMF/Atom.h"/>
212 <lang name="java" type="Atom" include="com.comtechtel.tensor.xmf.Atom"/>
213 <lang name="node" type="Atom"/>
214 </type>
215
216 <type name="mac48" size="6">
217 <artifact>https://wikipedia.org/wiki/MAC_address</artifact>
218 <comment>6 byte IEEE MAC-48</comment>
219 <lang name="c" type="MacAddress48" include="Tensor/CXMF/MacAddress48.h"/>
220 <lang name="cpp" type="::Tensor::Types::MacAddress48" include="Tensor/Types/MacAddress48.h"/>
221 <lang name="java" type="XidMacAddress48" include="com.comtechtel.tensor.xid.XidMacAddress48"/>
222 <lang name="node" type="XidMacAddress48"/>
223 </type>
224
225 <!--
226 *******************************************************
227 Encoding Data Types
228 *******************************************************
229 -->
230
231 <!-- Encoding format type spec.-->
232 <type name="EncodingFormat" size="2">
233 <comment>
234 The encoding format determines how element data is run-time encoded within a particular element independent of the
235 transport encoding.
236 These values are specified in the "encoding" attribute for elements. Not all encoding formats
237 are supported by every wireline protocol implementation. Additionally, custom encodings may be
238 defined to support application defined encodings. Any non-standard encodings must be registered (to avoid collision)
239 and approved by the appropriate approving authority (e.g. Comtech). Values from 0 to 255 are reserved
240 for standard-encodings. Custom encodings start at 256(0x0100) and extend to 65535 (0xFFFF).\n
241 \n
242 This is not the same as defining in XID a raw datatype or json datatype which are NOT changeable are run-time.
243 \n
244 Example: \n
245 \t The message XMF but a field is defined to be encoded as JSON.\n
246 \t Likewise, the message is JSON, but a field is run-time encoded to be XMF.\n
247 \n
248 Data encoding format type. If 0, value is not encoded. See ResrvedEncodingFormats
249 for a list of standard format specifiers.
250 </comment>
251 <lang name="c" type="uint16_t" include="stdint.h" />
252 <lang name="cpp" type="uint16_t" include="cstdint" />
253 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort" />
254 <lang name="node" type="XidUShort" />
255 </type>
256
257 <!-- ReservedEncodingFormats standard encoding formats.-->
258 <enum name="ReservedEncodingFormats" type="Tensor.uint16" default="natural">
259 <comment>
260 Reserved encoding formats define standard additional encodings known to all implementations.
261 </comment>
262 <literal name="natural" value="0">
263 <comment>
264 Data is not further encoded, it is in its natural wireline format.\n
265 This is the default value if not defined explicitly.
266 </comment>
267 </literal>
268 <literal name="raw" value="1">
269 <comment>
270 Data is in an unspecified binary format. The interpretation of the data is
271 falls to the producer and consumer of the information.
272 For textual wireline encodings like JSON, the data will be valid within the representation.
273 </comment>
274 </literal>
275 <literal name="xmf" value="2">
276 <comment>
277 Data is XMF binary format. The binary data is structured using atoms and atom lists.
278 For textual wireline encodings like JSON, this is XMF base64 encoded.
279 </comment>
280 </literal>
281 <literal name="json" value="3">
282 <comment>
283 Data is formatted as JSON compliant ascii text. For binary encodings like XMF, the content will be JSON instead.
284 </comment>
285 </literal>
286 </enum>
287 </namespace>
288 </specification>
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
16 identity="Logging.xid.xml">
17 <title>Tensor Logging Messages</title>
18 <comment>
19 This file contains the base type definitions for logging messages and data. All ENT micro-service compliant systems shall support these datatypes
20 for capturing various types of logging information including actionable messages, trace, and usage data. Logging messages are polymorphic and extensible
21 as needed to support various types of information.
22 </comment>
23
24 <import ref="https://xid.location.studio/Tensor/V1.1/Common.xid.xml" local="Common.xid.xml" />
25
26 <namespace name="Logging">
27 <using namespace="Tensor"/>
28
29 <!--
30 *******************************************************
31 Enumeration Definitions
32 *******************************************************
33 -->
34 <enum name="MessageType" type="Tensor.uint8" default="undefined">
35 <comment>
36 Message types define the base type identifiers for logging messages. These are used to
37 identify the type of logging data. The Message type is not a closed set and can be extended as needed.
38 The types defined here are common to every system. Type values below 64 are reserved for the core logging extensions
39 Any non-core message types should define type identifiers greater than 64.
40 </comment>
41 <literal name="undefined" value="0">
42 <comment>Message type is not defined. This is a reserved value and should not be used in most situations.</comment>
43 </literal>
44 <literal name="ActionMsg" value="1">
45 <comment>Defines a message that requires some responsive action. See Tensor.Logging.ActionMsg structure for more information.</comment>
46 </literal>
47 <literal name="TraceMsg" value="2">
48 <comment>Defines a message capturing software trace data typically used for debugging. See Tensor.Logging.TraceMsg structure for more information.</comment>
49 </literal>
50 <literal name="UsageMsg" value="3">
51 <comment>Defines a message for capturing usage data. See Tensor.Logging.UsageMsg for more information.</comment>
52 </literal>
53 <literal name="MetricMsg" value="4">
54 <comment>Defines a message for capturing metric data. See Tensor.Logging.MetricMsg for more information.</comment>
55 </literal>
56 </enum>
57
58 <enum name="Severity" type="int8" default="indeterminate">
59 <comment>
60 Severity is defined as part of an Tensor.Logging.ActionMsg describing the severity of the issue. This is an extensible list that can be added to as
61 new severities are determine. In general, try to use the core defined severities or add new core ones as needed. Custom severity should be avoided. If defined,
62 however, start with values > 64. Values less than 64 are reserved.
63 </comment>
64 <literal name="indeterminate" value="0">
65 <comment>Severity of the issue is indeterminate.</comment>
66 </literal>
67 <literal name="warning" value="1">
68 <comment>
69 Severity indicates message is a warning regarding the specified issue. Warnings describe a potental issue that
70 may require additional monitoring over time. However, it is not deemed as having a significant
71 impaction on system operation.
72 </comment>
73 </literal>
74 <literal name="minor" value="2">
75 <comment>
76 Message is describing a minor issue, which requires some action. A
77 minor issue is something that does not have a wide scale impact on system operation.
78 For example a minor issue might be something that would affect a single transaction.
79 </comment>
80 </literal>
81 <literal name="major" value="3">
82 <comment>
83 Message is describing a major issue, which requires action. A
84 major issue is something that affects the system in a signficant way
85 such as having impact on multiple transactions.
86 </comment>
87 </literal>
88 <literal name="critical" value="4">
89 <comment>
90 Message is describing a critical issue, which requires immediate action. Critical issues
91 are typically catastrophic system issues affecting all transactions in a very significant way.
92 </comment>
93 </literal>
94 <literal name="cleared" value="5">
95 <comment>Message is describing an issue has been resolved or no longer requires actions.</comment>
96 </literal>
97 </enum>
98
99 <enum name="Category" type="int8" default="processingError">
100 <comment>
101 The category decribes the general category for an ActionMsg. This is an extensible list that can be added to as
102 new categories are needed. In general, try to use the core defined categories or add new ones as needed. Custom categories should start with
103 values > 64. Values less than 64 are reserved.
104 </comment>
105 <literal name ="undefined" value ="0">
106 <comment>Action category is undefined or not known.</comment>
107 </literal>
108 <literal name="communications" value="1">
109 <comment>A communications and/or networking related issue.</comment>
110 </literal>
111 <literal name="qualityOfService" value="2">
112 <comment>A quality of service related issue.</comment>
113 </literal>
114 <literal name="processingError" value="3">
115 <comment>A processing or runtime related issue.</comment>
116 </literal>
117 <literal name="equipment" value="4">
118 <comment>An equipment related issue.</comment>
119 </literal>
120 <literal name="environmental" value="5">
121 <comment>A environment related issue.</comment>
122 </literal>
123 </enum>
124
125 <enum name="TraceLevel" type="Tensor.int8" default="undefined">
126 <comment>Trace level defines the level of tracing information reported. This allows for filtering of information based on rank.</comment>
127 <literal name="undefined" value="0">
128 <comment>Trace level is not defined.</comment>
129 </literal>
130 <literal name="overview" value="1">
131 <comment>Information contained in the trace message is high-level or summary.</comment>
132 </literal>
133 <literal name="trace" value="2">
134 <comment>Information contained in the trace message is related to program flow and sequencing.</comment>
135 </literal>
136 <literal name="detail" value="3">
137 <comment>Information contained in the trace message is detailed information.</comment>
138 </literal>
139 <literal name="debug" value="4">
140 <comment>Information contained in the trace message contains debugging information.</comment>
141 </literal>
142 </enum>
143
144 <struct name="DebugInfo">
145 <comment>
146 Structure captures the file and line number information for Trace Messages. This provides information about where the trace message was sent.
147 </comment>
148 <elem name="file" type="Tensor.string" multiplicity="1" ord="64">
149 <comment>File name where this message was logged.</comment>
150 </elem>
151 <elem name="line" type="Tensor.uint32" multiplicity="1" ord="65">
152 <comment>Line number in file where this message is logged.</comment>
153 </elem>
154 <elem name="thid" type="Tensor.uint64" multiplicity="1" default="0" ord="66">
155 <comment>Optional Thread ID, if not specified, default value is 0.</comment>
156 </elem>
157
158 </struct>
159
160 <!--
161 *******************************************************
162 Metric Structure Definitions
163 *******************************************************
164 -->
165
166 <enum name="MetricType" type="Tensor.uint8" default="undefined">
167 <literal name="undefined" value="0">
168 <comment>Metric type is not defined. This is a reserved value and should not be used in most situations.</comment>
169 </literal>
170 <literal name="PegCount" value="1">
171 <comment>Defines a simple monotonically incremented counter.</comment>
172 </literal>
173 <literal name="AppMetrics" value="2">
174 <comment>Defines a complex metric measuring duration and concurrency.</comment>
175 </literal>
176 </enum>
177
178 <struct name="Metric">
179 <elem name="metricType" type="MetricType" multiplicity="1" rttd="true" ord="64">
180 <comment>This specifies the type of the reported metric.</comment>
181 </elem>
182 <elem name="name" type="string" multiplicity="1" ord="65">
183 <comment>Name of the reported metric.</comment>
184 </elem>
185 </struct>
186
187 <struct name="PegCount" type="Metric" rttkey="Logging.MetricType.PegCount">
188 <elem name="value" type="uint32" multiplicity="1" ord="80">
189 <comment>Value of peg count since last reporting.</comment>
190 </elem>
191 </struct>
192
193 <struct name="AppMetrics" type="Metric" rttkey="Logging.MetricType.AppMetrics">
194 <elem name="totalCount" type="uint32" multiplicity="1" ord="80">
195 <comment>Total count of invocations since last reporting.</comment>
196 </elem>
197 <elem name="currentCount" type="uint32" multiplicity="1" ord="81">
198 <comment>concurrent invocations at time of reporting.</comment>
199 </elem>
200 <elem name="peakCount" type="uint32" multiplicity="1" ord="82">
201 <comment>Peak concurrent invocations since last reporting.</comment>
202 </elem>
203 <elem name="totalTime" type="uint64" multiplicity="1" ord="83">
204 <comment>Total time spent on invocations in nanoseconds since last reporting.</comment>
205 </elem>
206 <elem name="peakTime" type="uint64" multiplicity="1" ord="84">
207 <comment>Peak time for an invocation in nanoseconds since last reporting.</comment>
208 </elem>
209 <elem name="successCount" type="uint32" multiplicity="1" ord="85">
210 <comment>Count of successful invocations since last reporting.</comment>
211 </elem>
212 <elem name="failureCount" type="uint32" multiplicity="1" ord="86">
213 <comment>Count of failed invocations since last reporting.</comment>
214 </elem>
215 </struct>
216
217
218
219 <!--
220 *******************************************************
221 Message Structure Definitions
222 *******************************************************
223 -->
224
225 <struct name="MessageBase">
226 <comment>
227 Base type for all messages. This contains only the polymorphic type data. The structure Message derives from this
228 structure and provides common fields typically useful in logging related applications. Derive from this structure
229 if messages are related to logging but do not require the standard fields. It is recommended that most specializations
230 should start with Message as the base type.
231 </comment>
232 <elem name="type" type="MessageType" multiplicity="1" rttd="true" ord="64">
233 <comment> This specifies the type of message.</comment>
234 </elem>
235 <elem name="date" type="datetime" multiplicity="1" ord="65">
236 <comment>The date/time the message occured.</comment>
237 </elem>
238 <elem name="source" type="Tensor.uri" multiplicity="1" ord="66">
239 <comment>URI Identifying name of the component or process logging the message.</comment>
240 </elem>
241 <elem name="info" type="string" multiplicity="0..1" ord="67">
242 <comment>Optional free form string data.</comment>
243 </elem>
244 <elem name="data" type="Tensor.json" multiplicity="0..1" ord="68">
245 <comment>Optional structured data.</comment>
246 </elem>
247 <elem name="debug" type="DebugInfo" multiplicity="0..1" ord="69">
248 <comment>Optional debug information for message.</comment>
249 </elem>
250 </struct>
251
252 <!-- Message type -->
253 <struct name="TransactionMsg" type="MessageBase">
254 <comment>
255 Basic logging message data common to all types of logging. This specializes MessageBase and is the standard logging message. Create custom message types as needed; however, consider
256 specializing from the core defined sub-types of ActionMsg, Trace, or Usage depending upon need. In most cases, you should not use this message directly.
257 </comment>
258 <elem name="tid" type="Tensor.UUID" multiplicity="1" ord="80">
259 <comment>Unique ID identifying the internal transaction related to the message.</comment>
260 </elem>
261 <elem name="etid" type="string" multiplicity="0..1" ord="81">
262 <comment>Optional externally defined transaction ID.</comment>
263 </elem>
264 <elem name="acctid" type="string" multiplicity="0..1" ord="82">
265 <comment>Optional externally defined account/group identifier.</comment>
266 </elem>
267 <elem name="devid" type="string" multiplicity="0..1" ord="83">
268 <comment>Optional externally defined device identifier.</comment>
269 </elem>
270 <elem name="appid" type="string" multiplicity="0..1" ord="84">
271 <comment>Optional externally defined application (or application key) identifier.</comment>
272 </elem>
273
274 </struct>
275
276 <!-- ActionMsg type -->
277 <struct name="ActionMsg" type="TransactionMsg" rttkey="Logging.MessageType.ActionMsg">
278 <comment>
279 A message that requires another system/user to respond with some action.
280 </comment>
281 <elem name="id" type="Tensor.uri" multiplicity="1" ord="96">
282 <comment>Error code identifying the fault type</comment>
283 </elem>
284 <elem name="severity" type="Severity" multiplicity="1" ord="97"/>
285 <elem name="category" type="Category" multiplicity="1" ord="98"/>
286 <elem name="iid" type="Tensor.uri" multiplicity="0..1" ord="99">
287 <comment>Optional incident identifier used to identify an action instance uniquely. This is needed when there are stateful clearing events.</comment>
288 </elem>
289 </struct>
290
291 <!-- TraceMsg type -->
292 <struct name="TraceMsg" type="TransactionMsg" rttkey="Logging.MessageType.TraceMsg">
293 <comment>
294 Trace message for general logging and reporting of information
295 </comment>
296 <elem name="level" type="TraceLevel" multiplicity="1" ord="96">
297 <comment>Indicates the level of the trace: overview is the highest level and debug is the lowest</comment>
298 </elem>
299 </struct>
300
301 <!-- UsageMsg type -->
302 <struct name="UsageMsg" type="TransactionMsg" rttkey="Logging.MessageType.UsageMsg">
303 <comment>
304 Message capturing usage information for reporting statistical, transactional, edge, location, or other useful information generated in the normal
305 operation of the system.
306 </comment>
307 <elem name="uri" type="Tensor.uri" multiplicity="1" rttd="true" ord="96">
308 <comment> Usage id specific to a type of usage information. Can be general or application specific.</comment>
309 </elem>
310 </struct>
311
312 <!-- MetricMsg type -->
313 <struct name="MetricMsg" type="MessageBase" rttkey="Logging.MessageType.MetricMsg">
314 <elem name="start" type="datetime" multiplicity="1" ord="80">
315 <comment>The date/time of the start of the report interval. date is end the end of the report interval.</comment>
316 </elem>
317 <elem name="duration" type="uint16" multiplicity="1" ord="81">
318 <tag name="unit" value="sec"/>
319 <comment>The interval in seconds for the metric report.</comment>
320 </elem>
321 <elem name="metrics" type="Metric" multiplicity="1..*" polymorphic="true" ord="82">
322 <comment>List of metrics being reported.</comment>
323 </elem>
324 </struct>
325
326 <!--
327 *******************************************************
328 Standard Usage Definitions
329 *******************************************************
330 -->
331
332 <!--TaskReport Msg-->
333 <struct name="TaskReport" type="Logging.UsageMsg" rttkey='"tpf://taskrpt"'>
334 <comment>
335 Message reports processing task result data. Tasks are any execution unit the
336 that is deemed to have a specific beginning and end. This is a fairly generic
337 definition making the usage report suitable for a variety of applications.
338 </comment>
339 <elem name="taskid" type="string" multiplicity="1" ord="112">
340 <comment>
341 The unique tasks identifier. A source may have multiple tasks, this field assigns
342 an identifier that uniquely characterizes what the task was that was accomplished.
343 </comment>
344 </elem>
345 <elem name="start" type="datetime" multiplicity="1" ord="113">
346 <comment>
347 The start time at which the processor is used.
348 </comment>
349 </elem>
350 <elem name="duration" type="uint32" multiplicity="1" ord="114">
351 <tag name="unit" value="usec"/>
352 <comment>
353 The duration of the processing in microseconds.
354 </comment>
355 </elem>
356 <elem name="result" type="ResultCode" multiplicity="1" ord="115">
357 <comment>The task result code.</comment>
358 </elem>
359 </struct>
360
361 </namespace>
362 </specification>
1 # Tensor XIDs #
2 Tensor XIDs have all their ordinals (i.e. tags) specified and do not use packed data types. Therefore, XIDData.prop is not strictly needed but is supplied as a check-n-balance.
3
4 ## Generate / Verify XIDData.prop ##
5
6 ~~~sh
7 $ java -Xnoclassgc -jar $XIDSDK/bin/xidcg.jar \
8 -v \
9 -prop https://xid.location.studio/Tensor/V1.1/XIDData.prop \
10 https://xid.location.studio/Tensor/V1.1/ApiBase.xid.xml \
11 https://xid.location.studio/Tensor/V1.1/Command.xid.xml \
12 https://xid.location.studio/Tensor/V1.1/Common.xid.xml \
13 https://xid.location.studio/Tensor/V1.1/Definitions.xid.xml \
14 https://xid.location.studio/Tensor/V1.1/Logging.xid.xml
15
16 OR
17
18 $ java -Xnoclassgc -jar $XIDSDK/bin/xidcg.jar \
19 -v \
20 -prop XIDData.prop \
21 ApiBase.xid.xml \
22 Command.xid.xml \
23 Common.xid.xml \
24 Definitions.xid.xml \
25 Logging.xid.xml
26 ~~~
27
28 If xidcg reports:
29
30 ~~~
31 Generating: xidout/meta/XID/XIDData.prop
32 ~~~
33
34 Then something has changed and XIDData.prop needs to get updated.
35
1 Ord.Logging.ActionMsg.category=98
2 Ord.Logging.ActionMsg.id=96
3 Ord.Logging.ActionMsg.iid=99
4 Ord.Logging.ActionMsg.severity=97
5 Ord.Logging.AppMetrics.currentCount=81
6 Ord.Logging.AppMetrics.failureCount=86
7 Ord.Logging.AppMetrics.peakCount=82
8 Ord.Logging.AppMetrics.peakTime=84
9 Ord.Logging.AppMetrics.successCount=85
10 Ord.Logging.AppMetrics.totalCount=80
11 Ord.Logging.AppMetrics.totalTime=83
12 Ord.Logging.DebugInfo.file=64
13 Ord.Logging.DebugInfo.line=65
14 Ord.Logging.DebugInfo.thid=66
15 Ord.Logging.MessageBase.data=68
16 Ord.Logging.MessageBase.date=65
17 Ord.Logging.MessageBase.debug=69
18 Ord.Logging.MessageBase.info=67
19 Ord.Logging.MessageBase.source=66
20 Ord.Logging.MessageBase.type=64
21 Ord.Logging.Metric.metricType=64
22 Ord.Logging.Metric.name=65
23 Ord.Logging.MetricMsg.duration=81
24 Ord.Logging.MetricMsg.metrics=82
25 Ord.Logging.MetricMsg.start=80
26 Ord.Logging.PegCount.value=80
27 Ord.Logging.TaskReport.duration=114
28 Ord.Logging.TaskReport.start=113
29 Ord.Logging.TaskReport.result=115
30 Ord.Logging.TaskReport.taskid=112
31 Ord.Logging.TraceMsg.level=96
32 Ord.Logging.TransactionMsg.acctid=82
33 Ord.Logging.TransactionMsg.appid=84
34 Ord.Logging.TransactionMsg.devid=83
35 Ord.Logging.TransactionMsg.etid=81
36 Ord.Logging.TransactionMsg.tid=80
37 Ord.Logging.UsageMsg.uri=96
38 Ord.Tensor.Command.argument=66
39 Ord.Tensor.Command.etid=65
40 Ord.Tensor.Command.name=64
41 Ord.Tensor.CommandApi.Execute.Input.commands=64
42 Ord.Tensor.CommandApi.Execute.Input.wantresponses=65
43 Ord.Tensor.CommandApi.Execute.Output.lastcommand=64
44 Ord.Tensor.CommandApi.Execute.Output.lastresult=65
45 Ord.Tensor.CommandApi.Execute.Output.responses=66
46 Ord.Tensor.CommandResponse.etid=65
47 Ord.Tensor.CommandResponse.name=64
48 Ord.Tensor.CommandResponse.output=67
49 Ord.Tensor.CommandResponse.result=66
50 Ord.Tensor.InputBase.devid=64
51 Ord.Tensor.InputBase.directive=66
52 Ord.Tensor.InputBase.etid=65
53 Ord.Tensor.NameValue.name=64
54 Ord.Tensor.NameValue.value=65
55 Ord.Tensor.OutputBase.devid=64
56 Ord.Tensor.OutputBase.errinfo=67
57 Ord.Tensor.OutputBase.etid=65
58 Ord.Tensor.OutputBase.resultcode=66
59 Ord.Tensor.VoidType.reserved=64
60 SID.Tensor.CommandApi.Execute.Input=256
61 SID.Tensor.CommandApi.Execute.Output=257
62 Size.Logging.ActionMsg=-1
63 Size.Logging.AppMetrics=-1
64 Size.Logging.DebugInfo=-1
65 Size.Logging.MessageBase=-1
66 Size.Logging.Metric=-1
67 Size.Logging.MetricMsg=-1
68 Size.Logging.PegCount=-1
69 Size.Logging.TaskReport=-1
70 Size.Logging.TraceMsg=-1
71 Size.Logging.TransactionMsg=-1
72 Size.Logging.UsageMsg=-1
73 Size.Tensor.Command=-1
74 Size.Tensor.CommandApi.Execute.Input=-1
75 Size.Tensor.CommandApi.Execute.Output=-1
76 Size.Tensor.CommandResponse=-1
77 Size.Tensor.InputBase=-1
78 Size.Tensor.NameValue=-1
79 Size.Tensor.OutputBase=-1
80 Size.Tensor.VoidType=-1
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!