etptypes/energistics/etp/v12/protocol/data_array/get_data_subarrays_response.rs
1// SPDX-FileCopyrightText: 2023 Geosiris
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3#![allow(unused_imports)]
4#![allow(non_camel_case_types)]
5use crate::helpers::*;
6use apache_avro::{Error, Schema};
7use bytes;
8use derivative::Derivative;
9use std::collections::HashMap;
10use std::time::SystemTime;
11
12use crate::energistics::etp::v12::datatypes::data_array_types::data_array::DataArray;
13use crate::helpers::ETPMetadata;
14use crate::helpers::Schemable;
15use crate::protocols::ProtocolMessage;
16use apache_avro::{from_avro_datum, from_value, AvroResult};
17use std::io::Read;
18
19#[derive(Debug, PartialEq, Clone, serde::Deserialize, serde::Serialize, Derivative)]
20#[serde(rename_all = "PascalCase")]
21pub struct GetDataSubarraysResponse {
22 #[serde(rename = "dataSubarrays")]
23 #[derivative(Default(value = "HashMap::new()"))]
24 pub data_subarrays: HashMap<String, DataArray>,
25}
26
27fn getdatasubarraysresponse_avro_schema() -> Option<Schema> {
28 match Schema::parse_str(AVRO_SCHEMA) {
29 Ok(result) => Some(result),
30 Err(e) => {
31 panic!("{:?}", e);
32 }
33 }
34}
35
36impl Schemable for GetDataSubarraysResponse {
37 fn avro_schema(&self) -> Option<Schema> {
38 getdatasubarraysresponse_avro_schema()
39 }
40 fn avro_schema_str(&self) -> &'static str {
41 AVRO_SCHEMA
42 }
43}
44
45impl AvroSerializable for GetDataSubarraysResponse {}
46
47impl AvroDeserializable for GetDataSubarraysResponse {
48 fn avro_deserialize<R: Read>(input: &mut R) -> AvroResult<GetDataSubarraysResponse> {
49 let record = from_avro_datum(
50 &getdatasubarraysresponse_avro_schema().unwrap(),
51 input,
52 None,
53 )
54 .unwrap();
55 from_value::<GetDataSubarraysResponse>(&record)
56 }
57}
58
59impl ETPMetadata for GetDataSubarraysResponse {
60 fn protocol(&self) -> i32 {
61 9
62 }
63 fn message_type(&self) -> i32 {
64 8
65 }
66 fn sender_role(&self) -> Vec<Role> {
67 vec![Role::Store]
68 }
69 fn protocol_roles(&self) -> Vec<Role> {
70 vec![Role::Store, Role::Customer]
71 }
72 fn multipart_flag(&self) -> bool {
73 true
74 }
75}
76
77impl GetDataSubarraysResponse {
78 pub fn as_protocol_message(&self) -> ProtocolMessage {
79 ProtocolMessage::DataArray_GetDataSubarraysResponse(self.clone())
80 }
81}
82
83impl Default for GetDataSubarraysResponse {
84 /* Protocol 9, MessageType : 8 */
85 fn default() -> GetDataSubarraysResponse {
86 GetDataSubarraysResponse {
87 data_subarrays: HashMap::new(),
88 }
89 }
90}
91
92pub static AVRO_SCHEMA: &'static str = r#"{
93 "type": "record",
94 "namespace": "Energistics.Etp.v12.Protocol.DataArray",
95 "name": "GetDataSubarraysResponse",
96 "protocol": "9",
97 "messageType": "8",
98 "senderRole": "store",
99 "protocolRoles": "store,customer",
100 "multipartFlag": true,
101 "fields": [
102 {
103 "name": "dataSubarrays",
104 "type": {
105 "type": "map",
106 "values": {
107 "type": "record",
108 "namespace": "Energistics.Etp.v12.Datatypes.DataArrayTypes",
109 "name": "DataArray",
110 "fields": [
111 {
112 "name": "dimensions",
113 "type": {
114 "type": "array",
115 "items": "long"
116 }
117 },
118 {
119 "name": "data",
120 "type": {
121 "type": "record",
122 "namespace": "Energistics.Etp.v12.Datatypes",
123 "name": "AnyArray",
124 "fields": [
125 {
126 "name": "item",
127 "type": [
128 {
129 "type": "record",
130 "namespace": "Energistics.Etp.v12.Datatypes",
131 "name": "ArrayOfBoolean",
132 "fields": [
133 {
134 "name": "values",
135 "type": {
136 "type": "array",
137 "items": "boolean"
138 }
139 }
140 ],
141 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
142 "depends": []
143 },
144 {
145 "type": "record",
146 "namespace": "Energistics.Etp.v12.Datatypes",
147 "name": "ArrayOfInt",
148 "fields": [
149 {
150 "name": "values",
151 "type": {
152 "type": "array",
153 "items": "int"
154 }
155 }
156 ],
157 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfInt",
158 "depends": []
159 },
160 {
161 "type": "record",
162 "namespace": "Energistics.Etp.v12.Datatypes",
163 "name": "ArrayOfLong",
164 "fields": [
165 {
166 "name": "values",
167 "type": {
168 "type": "array",
169 "items": "long"
170 }
171 }
172 ],
173 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfLong",
174 "depends": []
175 },
176 {
177 "type": "record",
178 "namespace": "Energistics.Etp.v12.Datatypes",
179 "name": "ArrayOfFloat",
180 "fields": [
181 {
182 "name": "values",
183 "type": {
184 "type": "array",
185 "items": "float"
186 }
187 }
188 ],
189 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
190 "depends": []
191 },
192 {
193 "type": "record",
194 "namespace": "Energistics.Etp.v12.Datatypes",
195 "name": "ArrayOfDouble",
196 "fields": [
197 {
198 "name": "values",
199 "type": {
200 "type": "array",
201 "items": "double"
202 }
203 }
204 ],
205 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
206 "depends": []
207 },
208 {
209 "type": "record",
210 "namespace": "Energistics.Etp.v12.Datatypes",
211 "name": "ArrayOfString",
212 "fields": [
213 {
214 "name": "values",
215 "type": {
216 "type": "array",
217 "items": "string"
218 }
219 }
220 ],
221 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfString",
222 "depends": []
223 },
224 "bytes"
225 ]
226 }
227 ],
228 "fullName": "Energistics.Etp.v12.Datatypes.AnyArray",
229 "depends": [
230 "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
231 "Energistics.Etp.v12.Datatypes.ArrayOfInt",
232 "Energistics.Etp.v12.Datatypes.ArrayOfLong",
233 "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
234 "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
235 "Energistics.Etp.v12.Datatypes.ArrayOfString"
236 ]
237 }
238 }
239 ],
240 "fullName": "Energistics.Etp.v12.Datatypes.DataArrayTypes.DataArray",
241 "depends": [
242 "Energistics.Etp.v12.Datatypes.AnyArray"
243 ]
244 }
245 },
246 "default": {}
247 }
248 ],
249 "fullName": "Energistics.Etp.v12.Protocol.DataArray.GetDataSubarraysResponse",
250 "depends": [
251 "Energistics.Etp.v12.Datatypes.DataArrayTypes.DataArray"
252 ]
253}"#;