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}"#;