1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
extern crate chrono;
#[cfg(feature = "http")]
extern crate hyper;
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate log;
#[macro_use]
extern crate bitflags;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
extern crate time;
extern crate futures;
extern crate tokio;
extern crate tokio_io;
extern crate tokio_codec;
extern crate tokio_timer;
extern crate opcua_client;
#[macro_use]
extern crate opcua_core;
extern crate opcua_types;
type DateTimeUtc = chrono::DateTime<chrono::Utc>;
lazy_static! {
static ref RUNTIME: diagnostics::Runtime = diagnostics::Runtime::default();
}
#[macro_export]
macro_rules! runtime_components {
() => {
{
use crate::RUNTIME;
RUNTIME.components()
}
}
}
#[macro_export]
macro_rules! register_runtime_component {
( $component_name:expr ) => {
use crate::RUNTIME;
RUNTIME.register_component($component_name);
}
}
#[macro_export]
macro_rules! deregister_runtime_component {
( $component_name:expr ) => {
use crate::RUNTIME;
RUNTIME.deregister_component($component_name);
}
}
mod services;
mod session;
mod discovery;
mod completion_pact;
pub mod comms;
pub mod metrics;
pub mod server;
pub mod builder;
pub mod state;
pub mod diagnostics;
pub mod subscriptions;
pub mod config;
pub mod address_space;
pub mod util;
pub mod continuation_point;
#[cfg(feature = "http")]
pub mod http;
pub mod prelude {
pub use opcua_types::status_code::StatusCode;
pub use opcua_types::service_types::*;
pub use opcua_core::prelude::*;
pub use crate::{
config::*,
server::*,
builder::*,
address_space::types::*,
subscriptions::*,
subscriptions::subscription::*,
subscriptions::monitored_item::*,
util::*,
};
}
pub mod constants {
pub const DEFAULT_HELLO_TIMEOUT_SECONDS: u32 = 120;
pub const DEFAULT_RUST_OPC_UA_SERVER_PORT: u16 = 4855;
pub const DEFAULT_MAX_SUBSCRIPTIONS: u32 = 100;
pub const DEFAULT_DISCOVERY_SERVER_URL: &str = "opc.tcp://localhost:4840/UADiscovery";
pub const SUBSCRIPTION_TIMER_RATE_MS: u64 = 100;
pub const MIN_PUBLISHING_INTERVAL: f64 = (SUBSCRIPTION_TIMER_RATE_MS as f64) / 1000.0;
pub const MIN_SAMPLING_INTERVAL: f64 = (SUBSCRIPTION_TIMER_RATE_MS as f64) / 1000.0;
pub const MAX_DATA_CHANGE_QUEUE_SIZE: usize = 10;
pub const DEFAULT_MONITORED_ITEM_CAPACITY: usize = 100;
pub const HELLO_TIMEOUT_POLL_MS: u64 = 500;
pub const SESSION_TIMEOUT: f64 = 50000f64;
pub const MAX_REQUEST_MESSAGE_SIZE: u32 = 32768;
pub const DEFAULT_KEEP_ALIVE_COUNT: u32 = 10;
pub const MAX_KEEP_ALIVE_COUNT: u32 = 30000;
pub const MAX_BROWSE_CONTINUATION_POINTS: usize = 10;
pub const MAX_HISTORY_CONTINUATION_POINTS: usize = 0;
pub const MAX_QUERY_CONTINUATION_POINTS: usize = 0;
pub const MAX_METHOD_CALLS: usize = 10;
}
#[cfg(test)]
mod tests;