stinger-ipc 0.0.26__py3-none-any.whl → 0.0.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stinger-ipc
3
- Version: 0.0.26
3
+ Version: 0.0.27
4
4
  Summary: Tools to create code to do IPC over MQTT
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
@@ -1,4 +1,4 @@
1
- stinger_ipc-0.0.26.dist-info/licenses/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
1
+ stinger_ipc-0.0.27.dist-info/licenses/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
2
2
  stingeripc/__init__.py,sha256=PTr5WfMfB-GL4vp3-XMU8IwGv3Q5RXQ24H7JuEo3hdk,133
3
3
  stingeripc/args.py,sha256=x3P8GRu9-jyiMl62t0FPqbWY18FbhMVN4eSa2UzUv6c,3960
4
4
  stingeripc/asyncapi.py,sha256=yyHDIM2Hm8stAPGmcuCostQ7Tk_YzVOqA2jAiqyp7j4,23445
@@ -47,17 +47,17 @@ stingeripc/templates/rust/payloads/Cargo.toml.jinja2,sha256=t6WQ5BCBvjagCW8AgK4V
47
47
  stingeripc/templates/rust/payloads/examples/pub_and_recv.rs.jinja2,sha256=cIbunwEwYGbkRO1lzi2nGNX2dGdFhAJ2ZZqFhphY7CY,1461
48
48
  stingeripc/templates/rust/payloads/src/lib.rs.jinja2,sha256=3vBn2OGm_j7BoyHRHLcH1e0hKRBiqtbgHsz04rTaVMM,86
49
49
  stingeripc/templates/rust/payloads/src/payloads.rs.jinja2,sha256=1PUSzmHLMBYsVaCR8gOMdHWK8dmODmLM3WSu9iysN-c,4380
50
- stingeripc/templates/rust/server/Cargo.toml.jinja2,sha256=t2MIpoe34RYOtxvpS6ma7W0A9sLlMQBYblpALU805TQ,573
51
- stingeripc/templates/rust/server/examples/server.rs.jinja2,sha256=L8Cgs1Wb1HFLyMqF0EARUtrgqoxXly6u4kaSElaNrHo,4851
52
- stingeripc/templates/rust/server/src/lib.rs.jinja2,sha256=rhackDGeDndEXoNXoldsc-jr7I-nP2uYKTZSnWXOaIU,15675
50
+ stingeripc/templates/rust/server/Cargo.toml.jinja2,sha256=QwPnGhPWvYZit5ldr9hZ2AC9xn9dAVj_3Td-dO-Befw,593
51
+ stingeripc/templates/rust/server/examples/server.rs.jinja2,sha256=WhkHXu45PQyAePv-yQdE_p_xYcuqIMSEAzD4Pn7U1A4,4752
52
+ stingeripc/templates/rust/server/src/lib.rs.jinja2,sha256=0PRSB8OJIlbv1TFM8UjuD3bApbANW8fvUOi-pHJRMlQ,15637
53
53
  stingeripc/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  stingeripc/tools/cli.py,sha256=RqeL6FcoeUCvle86jmox-4A25SL4Br2CSZXPKbaJwlY,3372
55
55
  stingeripc/tools/cpp_generator.py,sha256=jYIRVjykI4corEI65CsA7q42psFxfkgskasYcSXSbqY,3111
56
56
  stingeripc/tools/markdown_generator.py,sha256=HVEWcMjAfVnuWY29kxfAW1mvSxQSF-rdYFA2kWdLOn0,1174
57
57
  stingeripc/tools/python_generator.py,sha256=GJwGI6DntkJPJjHN4xSeTD60KgY32gI43IvIByxWSsw,1845
58
58
  stingeripc/tools/rust_generator.py,sha256=Im0EdNifxkGDnZy2JCuvKzmn1h2suk6EJ_xtpGZazGk,2240
59
- stinger_ipc-0.0.26.dist-info/METADATA,sha256=dIRomA-GKMIZRvcna1tVp-6QoanVoZ4wfRUT6rbu2Yk,6079
60
- stinger_ipc-0.0.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
61
- stinger_ipc-0.0.26.dist-info/entry_points.txt,sha256=bh8k8mvtAog4MKTd82ALSHqQkuD069VrZ-vNlde6XjE,204
62
- stinger_ipc-0.0.26.dist-info/top_level.txt,sha256=mSNwAf83_1qiTP_vu7XEPBrZu-fDusT1FFyQZzCrRcU,11
63
- stinger_ipc-0.0.26.dist-info/RECORD,,
59
+ stinger_ipc-0.0.27.dist-info/METADATA,sha256=523F72GNhrTsIxzv4DuC0F6d3ZTutmCdcSHbMXecnmk,6079
60
+ stinger_ipc-0.0.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
61
+ stinger_ipc-0.0.27.dist-info/entry_points.txt,sha256=bh8k8mvtAog4MKTd82ALSHqQkuD069VrZ-vNlde6XjE,204
62
+ stinger_ipc-0.0.27.dist-info/top_level.txt,sha256=mSNwAf83_1qiTP_vu7XEPBrZu-fDusT1FFyQZzCrRcU,11
63
+ stinger_ipc-0.0.27.dist-info/RECORD,,
@@ -15,6 +15,7 @@ serde = { version = "1.0.219", features = ["derive"] }
15
15
  serde_json = "1.0.142"
16
16
  log = "0.4"
17
17
  env_logger = "0.10"
18
+ async-trait = "0.1"
18
19
 
19
20
  [[example]]
20
21
  name = "{{stinger.name | snake_case}}_server_demo"
@@ -10,9 +10,10 @@ use mqttier::MqttierClient;
10
10
  use {{stinger.rust.server_package_name}}::{ {{stinger.rust.server_struct_name}}{%if stinger.methods|length>0%}, {{stinger.name | UpperCamelCase }}MethodHandlers{%endif%} };
11
11
  use tokio::time::{sleep, Duration};
12
12
  {%if stinger.methods|length > 0%}
13
- //use {{stinger.rust.server_package_name}}::handler::{{stinger.name | UpperCamelCase }}MethodHandlers;
14
- //use {{stinger.rust.server_package_name}}::init::Initializable;
15
- use std::sync::{Arc, Mutex};{%endif%}
13
+ use std::sync::Arc;
14
+ use tokio::sync::Mutex;
15
+ use async_trait::async_trait;
16
+ {%endif%}
16
17
  #[allow(unused_imports)]
17
18
  use {{stinger.rust.common_package_name}}::payloads::{MethodResultCode, *};
18
19
 
@@ -29,15 +30,16 @@ impl {{stinger.name | UpperCamelCase }}MethodImpl {
29
30
  }
30
31
  }
31
32
 
33
+ #[async_trait]
32
34
  impl {{stinger.name | UpperCamelCase }}MethodHandlers for {{stinger.name | UpperCamelCase }}MethodImpl {
33
35
 
34
- fn initialize(&mut self, server: {{stinger.rust.server_struct_name}}) -> Result<(), MethodResultCode> {
36
+ async fn initialize(&mut self, server: {{stinger.rust.server_struct_name}}) -> Result<(), MethodResultCode> {
35
37
  self.server = Some(server.clone());
36
38
  Ok(())
37
39
  }
38
40
 
39
41
  {%for method_name, method in stinger.methods.items()%}
40
- fn handle_{{method_name|snake_case}}(&self, {%for arg in method.arg_list%}_{{arg.name|snake_case}}: {{arg.rust_type}}{%if not loop.last%}, {%endif%}{%endfor%}) -> Result<{{method.return_value_rust_type}}, MethodResultCode> {
42
+ async fn handle_{{method_name|snake_case}}(&self, {%for arg in method.arg_list%}_{{arg.name|snake_case}}: {{arg.rust_type}}{%if not loop.last%}, {%endif%}{%endfor%}) -> Result<{{method.return_value_rust_type}}, MethodResultCode> {
41
43
  println!("Handling {{method_name}}");
42
44
  {%-if method.return_value_type == 'struct'%}
43
45
  let rv = {{method.return_value_rust_type}} {
@@ -58,12 +60,8 @@ impl {{stinger.name | UpperCamelCase }}MethodHandlers for {{stinger.name | Upper
58
60
  self
59
61
  }
60
62
  }
61
-
62
-
63
63
  {%endif%}
64
64
 
65
-
66
-
67
65
  #[tokio::main]
68
66
  async fn main() {
69
67
  env_logger::Builder::from_default_env()
@@ -13,9 +13,8 @@ use mqttier::{MqttierClient{%if stinger.methods|length > 0 or stinger.properties
13
13
  use {{stinger.rust.common_package_name}}::payloads::{*, MethodResultCode};
14
14
  use std::any::Any;
15
15
  {%if stinger.methods|length > 0 %}
16
- //pub mod handler;
17
- //pub mod init;
18
- //pub use handler::{{stinger.name | UpperCamelCase }}MethodHandlers;
16
+ use async_trait::async_trait;
17
+ use tokio::sync::Mutex as AsyncMutex;
19
18
  use std::sync::{Arc, Mutex};
20
19
  {%endif%}
21
20
  {%if stinger.methods|length > 0 or stinger.properties|length > 0 %}
@@ -68,7 +67,7 @@ pub struct {{stinger.rust.server_struct_name}} {
68
67
  {%endif%}
69
68
  {%if stinger.methods|length > 0 %}
70
69
  /// Struct contains all the method handlers.
71
- method_handlers: Arc<Mutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>>,
70
+ method_handlers: Arc<AsyncMutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>>,
72
71
  {%endif%}
73
72
  {%if stinger.properties|length > 0%}
74
73
  /// Struct contains all the properties.
@@ -85,7 +84,7 @@ pub struct {{stinger.rust.server_struct_name}} {
85
84
  }
86
85
 
87
86
  impl {{stinger.rust.server_struct_name}} {
88
- pub async fn new(connection: &mut MqttierClient{%if stinger.methods|length > 0%}, method_handlers: Arc<Mutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>> {%endif%}) -> Self {
87
+ pub async fn new(connection: &mut MqttierClient{%if stinger.methods|length > 0%}, method_handlers: Arc<AsyncMutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>> {%endif%}) -> Self {
89
88
  {%if stinger.methods|length > 0 or stinger.properties|length > 0 %}
90
89
  // Create a channel for messages to get from the MqttierClient object to this {{stinger.rust.server_struct_name}} object.
91
90
  // The Connection object uses a clone of the tx side of the channel.
@@ -152,7 +151,7 @@ impl {{stinger.rust.server_struct_name}} {
152
151
 
153
152
  {%for method_name, method in stinger.methods.items()-%}
154
153
  /// Handles a request message for the {{method_name}} method.
155
- async fn handle_{{method_name|snake_case}}_request(publisher: MqttierClient, handlers: Arc<Mutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>>, msg: ReceivedMessage) {
154
+ async fn handle_{{method_name|snake_case}}_request(publisher: MqttierClient, handlers: Arc<AsyncMutex<Box<dyn {{stinger.name | UpperCamelCase }}MethodHandlers>>>, msg: ReceivedMessage) {
156
155
  let opt_corr_data = msg.correlation_data;
157
156
  let opt_resp_topic = msg.response_topic;
158
157
  {%if method.arg_list | length > 0 -%}
@@ -161,8 +160,8 @@ impl {{stinger.rust.server_struct_name}} {
161
160
  {%endif%}{# has arg_list #}
162
161
  // call the method handler
163
162
  let rv: Result<{{method.return_value_rust_type}}, MethodResultCode> = {
164
- let handler_guard = handlers.lock().unwrap();
165
- (*handler_guard).handle_{{method_name|snake_case}}({%for arg in method.arg_list%}payload.{{arg.name}}{%if not loop.last%}, {%endif%}{%endfor%})
163
+ let handler_guard = handlers.lock().await;
164
+ handler_guard.handle_{{method_name|snake_case}}({%for arg in method.arg_list%}payload.{{arg.name}}{%if not loop.last%}, {%endif%}{%endfor%}).await
166
165
  };
167
166
 
168
167
  if let Some(resp_topic) = opt_resp_topic {
@@ -267,7 +266,7 @@ impl {{stinger.rust.server_struct_name}} {
267
266
 
268
267
  {%if stinger.methods|length > 0 -%}
269
268
  let method_handlers = self.method_handlers.clone();
270
- self.method_handlers.lock().unwrap().initialize(self.clone()).expect("Failed to initialize method handlers");
269
+ self.method_handlers.lock().await.initialize(self.clone()).await;
271
270
  {%endif-%}
272
271
 
273
272
  let sub_ids = self.subscription_ids.clone();
@@ -304,13 +303,14 @@ impl {{stinger.rust.server_struct_name}} {
304
303
 
305
304
  }
306
305
  {%if stinger.methods|length > 0 %}
306
+ #[async_trait]
307
307
  pub trait {{stinger.name | UpperCamelCase }}MethodHandlers: Send + Sync {
308
308
 
309
- fn initialize(&mut self, server: {{stinger.rust.server_struct_name}}) -> Result<(), MethodResultCode>;
309
+ async fn initialize(&mut self, server: {{stinger.rust.server_struct_name}}) -> Result<(), MethodResultCode>;
310
310
 
311
311
  {%for method_name, method in stinger.methods.items()-%}
312
312
  /// Pointer to a function to handle the {{method_name}} method request.
313
- fn handle_{{method_name|snake_case}}(&self, {%for arg in method.arg_list%}{{arg.name|snake_case}}: {{arg.rust_type}}{%if not loop.last%}, {%endif%}{%endfor%}) -> Result<{{method.return_value_rust_type}}, MethodResultCode>;
313
+ async fn handle_{{method_name|snake_case}}(&self, {%for arg in method.arg_list%}{{arg.name|snake_case}}: {{arg.rust_type}}{%if not loop.last%}, {%endif%}{%endfor%}) -> Result<{{method.return_value_rust_type}}, MethodResultCode>;
314
314
 
315
315
  {%endfor%}
316
316