Coverage Report

Created: 2025-11-16 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/S2OPC/src/ClientServer/services/bgenc/service_mgr.c
Line
Count
Source
1
/*
2
 * Licensed to Systerel under one or more contributor license
3
 * agreements. See the NOTICE file distributed with this work
4
 * for additional information regarding copyright ownership.
5
 * Systerel licenses this file to you under the Apache
6
 * License, Version 2.0 (the "License"); you may not use this
7
 * file except in compliance with the License. You may obtain
8
 * a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
20
/******************************************************************************
21
22
 File Name            : service_mgr.c
23
24
 Date                 : 29/08/2025 12:49:57
25
26
 C Translator Version : tradc Java V1.2 (06/02/2022)
27
28
******************************************************************************/
29
30
/*------------------------
31
   Exported Declarations
32
  ------------------------*/
33
#include "service_mgr.h"
34
35
/*------------------------
36
   INITIALISATION Clause
37
  ------------------------*/
38
0
void service_mgr__INITIALISATION(void) {
39
0
}
40
41
/*--------------------
42
   OPERATIONS Clause
43
  --------------------*/
44
void service_mgr__get_response_type(
45
   const constants__t_msg_type_i service_mgr__req_msg_typ,
46
0
   constants__t_msg_type_i * const service_mgr__resp_msg_typ) {
47
0
   *service_mgr__resp_msg_typ = constants__c_msg_type_indet;
48
0
   switch (service_mgr__req_msg_typ) {
49
0
   case constants__e_msg_discovery_find_servers_req:
50
0
      *service_mgr__resp_msg_typ = constants__e_msg_discovery_find_servers_resp;
51
0
      break;
52
0
   case constants__e_msg_discovery_find_servers_on_network_req:
53
0
      *service_mgr__resp_msg_typ = constants__e_msg_discovery_find_servers_on_network_resp;
54
0
      break;
55
0
   case constants__e_msg_discovery_get_endpoints_req:
56
0
      *service_mgr__resp_msg_typ = constants__e_msg_discovery_get_endpoints_resp;
57
0
      break;
58
0
   case constants__e_msg_discovery_register_server_req:
59
0
      *service_mgr__resp_msg_typ = constants__e_msg_discovery_register_server_resp;
60
0
      break;
61
0
   case constants__e_msg_discovery_register_server2_req:
62
0
      *service_mgr__resp_msg_typ = constants__e_msg_discovery_register_server2_resp;
63
0
      break;
64
0
   case constants__e_msg_session_create_req:
65
0
      *service_mgr__resp_msg_typ = constants__e_msg_session_create_resp;
66
0
      break;
67
0
   case constants__e_msg_session_activate_req:
68
0
      *service_mgr__resp_msg_typ = constants__e_msg_session_activate_resp;
69
0
      break;
70
0
   case constants__e_msg_session_close_req:
71
0
      *service_mgr__resp_msg_typ = constants__e_msg_session_close_resp;
72
0
      break;
73
0
   case constants__e_msg_session_cancel_req:
74
0
      *service_mgr__resp_msg_typ = constants__e_msg_session_cancel_resp;
75
0
      break;
76
0
   case constants__e_msg_node_add_nodes_req:
77
0
      *service_mgr__resp_msg_typ = constants__e_msg_node_add_nodes_resp;
78
0
      break;
79
0
   case constants__e_msg_node_add_references_req:
80
0
      *service_mgr__resp_msg_typ = constants__e_msg_node_add_references_resp;
81
0
      break;
82
0
   case constants__e_msg_node_delete_nodes_req:
83
0
      *service_mgr__resp_msg_typ = constants__e_msg_node_delete_nodes_resp;
84
0
      break;
85
0
   case constants__e_msg_node_delete_references_req:
86
0
      *service_mgr__resp_msg_typ = constants__e_msg_node_delete_references_resp;
87
0
      break;
88
0
   case constants__e_msg_view_browse_req:
89
0
      *service_mgr__resp_msg_typ = constants__e_msg_view_browse_resp;
90
0
      break;
91
0
   case constants__e_msg_view_browse_next_req:
92
0
      *service_mgr__resp_msg_typ = constants__e_msg_view_browse_next_resp;
93
0
      break;
94
0
   case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
95
0
      *service_mgr__resp_msg_typ = constants__e_msg_view_translate_browse_paths_to_node_ids_resp;
96
0
      break;
97
0
   case constants__e_msg_view_register_nodes_req:
98
0
      *service_mgr__resp_msg_typ = constants__e_msg_view_register_nodes_resp;
99
0
      break;
100
0
   case constants__e_msg_view_unregister_nodes_req:
101
0
      *service_mgr__resp_msg_typ = constants__e_msg_view_unregister_nodes_resp;
102
0
      break;
103
0
   case constants__e_msg_query_first_req:
104
0
      *service_mgr__resp_msg_typ = constants__e_msg_query_first_resp;
105
0
      break;
106
0
   case constants__e_msg_query_next_req:
107
0
      *service_mgr__resp_msg_typ = constants__e_msg_query_next_resp;
108
0
      break;
109
0
   case constants__e_msg_attribute_read_req:
110
0
      *service_mgr__resp_msg_typ = constants__e_msg_attribute_read_resp;
111
0
      break;
112
0
   case constants__e_msg_attribute_history_read_req:
113
0
      *service_mgr__resp_msg_typ = constants__e_msg_attribute_history_read_resp;
114
0
      break;
115
0
   case constants__e_msg_attribute_write_req:
116
0
      *service_mgr__resp_msg_typ = constants__e_msg_attribute_write_resp;
117
0
      break;
118
0
   case constants__e_msg_attribute_history_update_req:
119
0
      *service_mgr__resp_msg_typ = constants__e_msg_attribute_history_update_resp;
120
0
      break;
121
0
   case constants__e_msg_method_call_req:
122
0
      *service_mgr__resp_msg_typ = constants__e_msg_method_call_resp;
123
0
      break;
124
0
   case constants__e_msg_monitored_items_create_req:
125
0
      *service_mgr__resp_msg_typ = constants__e_msg_monitored_items_create_resp;
126
0
      break;
127
0
   case constants__e_msg_monitored_items_modify_req:
128
0
      *service_mgr__resp_msg_typ = constants__e_msg_monitored_items_modify_resp;
129
0
      break;
130
0
   case constants__e_msg_monitored_items_set_monitoring_mode_req:
131
0
      *service_mgr__resp_msg_typ = constants__e_msg_monitored_items_set_monitoring_mode_resp;
132
0
      break;
133
0
   case constants__e_msg_monitored_items_set_triggering_req:
134
0
      *service_mgr__resp_msg_typ = constants__e_msg_monitored_items_set_triggering_resp;
135
0
      break;
136
0
   case constants__e_msg_monitored_items_delete_req:
137
0
      *service_mgr__resp_msg_typ = constants__e_msg_monitored_items_delete_resp;
138
0
      break;
139
0
   case constants__e_msg_subscription_create_req:
140
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_create_resp;
141
0
      break;
142
0
   case constants__e_msg_subscription_modify_req:
143
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_modify_resp;
144
0
      break;
145
0
   case constants__e_msg_subscription_set_publishing_mode_req:
146
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_set_publishing_mode_resp;
147
0
      break;
148
0
   case constants__e_msg_subscription_publish_req:
149
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_publish_resp;
150
0
      break;
151
0
   case constants__e_msg_subscription_republish_req:
152
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_republish_resp;
153
0
      break;
154
0
   case constants__e_msg_subscription_transfer_subscriptions_req:
155
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_transfer_subscriptions_resp;
156
0
      break;
157
0
   case constants__e_msg_subscription_delete_subscriptions_req:
158
0
      *service_mgr__resp_msg_typ = constants__e_msg_subscription_delete_subscriptions_resp;
159
0
      break;
160
0
   default:
161
0
      break;
162
0
   }
163
0
}
164
165
void service_mgr__l_get_msg_service_class(
166
   const constants__t_msg_type_i service_mgr__msg_typ,
167
0
   constants__t_msg_service_class_i * const service_mgr__service_class) {
168
0
   switch (service_mgr__msg_typ) {
169
0
   case constants__e_msg_discovery_find_servers_req:
170
0
   case constants__e_msg_discovery_find_servers_resp:
171
0
   case constants__e_msg_discovery_find_servers_on_network_req:
172
0
   case constants__e_msg_discovery_find_servers_on_network_resp:
173
0
   case constants__e_msg_discovery_get_endpoints_req:
174
0
   case constants__e_msg_discovery_get_endpoints_resp:
175
0
   case constants__e_msg_discovery_register_server_req:
176
0
   case constants__e_msg_discovery_register_server_resp:
177
0
   case constants__e_msg_discovery_register_server2_req:
178
0
   case constants__e_msg_discovery_register_server2_resp:
179
0
      *service_mgr__service_class = constants__e_msg_discovery_service_class;
180
0
      break;
181
0
   case constants__e_msg_session_create_req:
182
0
   case constants__e_msg_session_create_resp:
183
0
   case constants__e_msg_session_activate_req:
184
0
   case constants__e_msg_session_activate_resp:
185
0
   case constants__e_msg_session_close_req:
186
0
   case constants__e_msg_session_close_resp:
187
0
   case constants__e_msg_session_cancel_req:
188
0
   case constants__e_msg_session_cancel_resp:
189
0
      *service_mgr__service_class = constants__e_msg_session_treatment_class;
190
0
      break;
191
0
   case constants__e_msg_node_add_nodes_req:
192
0
   case constants__e_msg_node_add_nodes_resp:
193
0
   case constants__e_msg_node_add_references_req:
194
0
   case constants__e_msg_node_add_references_resp:
195
0
   case constants__e_msg_node_delete_nodes_req:
196
0
   case constants__e_msg_node_delete_nodes_resp:
197
0
   case constants__e_msg_node_delete_references_req:
198
0
   case constants__e_msg_node_delete_references_resp:
199
0
   case constants__e_msg_view_browse_req:
200
0
   case constants__e_msg_view_browse_resp:
201
0
   case constants__e_msg_view_browse_next_req:
202
0
   case constants__e_msg_view_browse_next_resp:
203
0
   case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
204
0
   case constants__e_msg_view_translate_browse_paths_to_node_ids_resp:
205
0
   case constants__e_msg_view_register_nodes_req:
206
0
   case constants__e_msg_view_register_nodes_resp:
207
0
   case constants__e_msg_view_unregister_nodes_req:
208
0
   case constants__e_msg_view_unregister_nodes_resp:
209
0
   case constants__e_msg_query_first_req:
210
0
   case constants__e_msg_query_first_resp:
211
0
   case constants__e_msg_query_next_req:
212
0
   case constants__e_msg_query_next_resp:
213
0
   case constants__e_msg_attribute_read_req:
214
0
   case constants__e_msg_attribute_read_resp:
215
0
   case constants__e_msg_attribute_history_read_req:
216
0
   case constants__e_msg_attribute_history_read_resp:
217
0
   case constants__e_msg_attribute_write_req:
218
0
   case constants__e_msg_attribute_write_resp:
219
0
   case constants__e_msg_attribute_history_update_req:
220
0
   case constants__e_msg_attribute_history_update_resp:
221
0
   case constants__e_msg_method_call_req:
222
0
   case constants__e_msg_method_call_resp:
223
0
   case constants__e_msg_monitored_items_create_req:
224
0
   case constants__e_msg_monitored_items_create_resp:
225
0
   case constants__e_msg_monitored_items_modify_req:
226
0
   case constants__e_msg_monitored_items_modify_resp:
227
0
   case constants__e_msg_monitored_items_set_monitoring_mode_req:
228
0
   case constants__e_msg_monitored_items_set_monitoring_mode_resp:
229
0
   case constants__e_msg_monitored_items_set_triggering_req:
230
0
   case constants__e_msg_monitored_items_set_triggering_resp:
231
0
   case constants__e_msg_monitored_items_delete_req:
232
0
   case constants__e_msg_monitored_items_delete_resp:
233
0
   case constants__e_msg_subscription_create_req:
234
0
   case constants__e_msg_subscription_create_resp:
235
0
   case constants__e_msg_subscription_modify_req:
236
0
   case constants__e_msg_subscription_modify_resp:
237
0
   case constants__e_msg_subscription_set_publishing_mode_req:
238
0
   case constants__e_msg_subscription_set_publishing_mode_resp:
239
0
   case constants__e_msg_subscription_publish_req:
240
0
   case constants__e_msg_subscription_publish_resp:
241
0
   case constants__e_msg_subscription_republish_req:
242
0
   case constants__e_msg_subscription_republish_resp:
243
0
   case constants__e_msg_subscription_transfer_subscriptions_req:
244
0
   case constants__e_msg_subscription_transfer_subscriptions_resp:
245
0
   case constants__e_msg_subscription_delete_subscriptions_req:
246
0
   case constants__e_msg_subscription_delete_subscriptions_resp:
247
0
      *service_mgr__service_class = constants__e_msg_session_service_class;
248
0
      break;
249
0
   default:
250
0
      *service_mgr__service_class = constants__e_msg_service_fault_class;
251
0
      break;
252
0
   }
253
0
}
254
255
void service_mgr__get_msg_service_class(
256
   const constants__t_msg_type_i service_mgr__msg_typ,
257
0
   constants__t_msg_service_class_i * const service_mgr__service_class) {
258
0
   service_mgr__l_get_msg_service_class(service_mgr__msg_typ,
259
0
      service_mgr__service_class);
260
0
}
261
262
void service_mgr__treat_session_local_service_req(
263
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
264
   const constants__t_msg_type_i service_mgr__req_typ,
265
   const constants__t_msg_i service_mgr__req_msg,
266
   const constants__t_msg_i service_mgr__resp_msg,
267
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service) {
268
0
   {
269
0
      constants__t_user_i service_mgr__l_user;
270
0
      constants__t_LocaleIds_i service_mgr__l_supported_locales;
271
0
      t_bool service_mgr__l_node_management_done;
272
      
273
0
      service_mgr__l_node_management_done = false;
274
0
      switch (service_mgr__req_typ) {
275
0
      case constants__e_msg_attribute_read_req:
276
0
         session_mgr__get_local_user(service_mgr__endpoint_config_idx,
277
0
            &service_mgr__l_user);
278
0
         constants__get_SupportedLocales(service_mgr__endpoint_config_idx,
279
0
            &service_mgr__l_supported_locales);
280
0
         service_read__treat_read_request(service_mgr__l_user,
281
0
            service_mgr__l_supported_locales,
282
0
            service_mgr__req_msg,
283
0
            service_mgr__resp_msg,
284
0
            service_mgr__StatusCode_service);
285
0
         break;
286
0
      case constants__e_msg_attribute_write_req:
287
0
         session_mgr__get_local_user(service_mgr__endpoint_config_idx,
288
0
            &service_mgr__l_user);
289
0
         constants__get_SupportedLocales(service_mgr__endpoint_config_idx,
290
0
            &service_mgr__l_supported_locales);
291
0
         address_space_itf__treat_write_request(service_mgr__l_user,
292
0
            service_mgr__l_supported_locales,
293
0
            service_mgr__req_msg,
294
0
            service_mgr__resp_msg,
295
0
            service_mgr__StatusCode_service);
296
0
         break;
297
0
      case constants__e_msg_view_browse_req:
298
0
         service_set_view__treat_browse_request(constants__c_session_indet,
299
0
            service_mgr__req_msg,
300
0
            service_mgr__resp_msg,
301
0
            service_mgr__StatusCode_service);
302
0
         break;
303
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
304
0
         service_set_view__treat_translate_browse_paths_request(service_mgr__req_msg,
305
0
            service_mgr__resp_msg,
306
0
            service_mgr__StatusCode_service);
307
0
         break;
308
0
      case constants__e_msg_node_add_nodes_req:
309
0
         session_mgr__get_local_user(service_mgr__endpoint_config_idx,
310
0
            &service_mgr__l_user);
311
0
         address_space_itf__treat_add_nodes_request(service_mgr__l_user,
312
0
            service_mgr__req_msg,
313
0
            service_mgr__resp_msg,
314
0
            service_mgr__StatusCode_service);
315
0
         service_mgr__l_node_management_done = (*service_mgr__StatusCode_service == constants_statuscodes_bs__e_sc_ok);
316
0
         break;
317
0
      case constants__e_msg_node_delete_nodes_req:
318
0
         session_mgr__get_local_user(service_mgr__endpoint_config_idx,
319
0
            &service_mgr__l_user);
320
0
         address_space_itf__treat_delete_nodes_request(service_mgr__l_user,
321
0
            service_mgr__req_msg,
322
0
            service_mgr__resp_msg,
323
0
            service_mgr__StatusCode_service);
324
0
         service_mgr__l_node_management_done = (*service_mgr__StatusCode_service == constants_statuscodes_bs__e_sc_ok);
325
0
         break;
326
0
      default:
327
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
328
0
         break;
329
0
      }
330
0
      if (service_mgr__l_node_management_done == true) {
331
0
         service_set_view__service_set_view_service_node_management_used();
332
0
      }
333
0
   }
334
0
}
335
336
void service_mgr__treat_session_nano_service_req(
337
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
338
   const constants__t_session_i service_mgr__session,
339
   const constants__t_msg_type_i service_mgr__req_typ,
340
   const constants__t_msg_i service_mgr__req_msg,
341
   const constants__t_msg_i service_mgr__resp_msg,
342
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service) {
343
0
   {
344
0
      constants__t_user_i service_mgr__l_user;
345
0
      constants__t_LocaleIds_i service_mgr__l_locales;
346
      
347
0
      switch (service_mgr__req_typ) {
348
0
      case constants__e_msg_attribute_read_req:
349
0
         session_mgr__get_session_user_server(service_mgr__session,
350
0
            &service_mgr__l_user);
351
0
         session_mgr__get_server_session_preferred_locales(service_mgr__session,
352
0
            &service_mgr__l_locales);
353
0
         service_read__treat_read_request(service_mgr__l_user,
354
0
            service_mgr__l_locales,
355
0
            service_mgr__req_msg,
356
0
            service_mgr__resp_msg,
357
0
            service_mgr__StatusCode_service);
358
0
         break;
359
0
      case constants__e_msg_attribute_write_req:
360
0
         session_mgr__get_session_user_server(service_mgr__session,
361
0
            &service_mgr__l_user);
362
0
         constants__get_SupportedLocales(service_mgr__endpoint_config_idx,
363
0
            &service_mgr__l_locales);
364
0
         address_space_itf__treat_write_request(service_mgr__l_user,
365
0
            service_mgr__l_locales,
366
0
            service_mgr__req_msg,
367
0
            service_mgr__resp_msg,
368
0
            service_mgr__StatusCode_service);
369
0
         break;
370
0
      case constants__e_msg_view_browse_req:
371
0
         service_set_view__treat_browse_request(service_mgr__session,
372
0
            service_mgr__req_msg,
373
0
            service_mgr__resp_msg,
374
0
            service_mgr__StatusCode_service);
375
0
         break;
376
0
      case constants__e_msg_view_browse_next_req:
377
0
         service_set_view__treat_browse_next_request(service_mgr__session,
378
0
            service_mgr__req_msg,
379
0
            service_mgr__resp_msg,
380
0
            service_mgr__StatusCode_service);
381
0
         break;
382
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
383
0
         service_set_view__treat_translate_browse_paths_request(service_mgr__req_msg,
384
0
            service_mgr__resp_msg,
385
0
            service_mgr__StatusCode_service);
386
0
         break;
387
0
      case constants__e_msg_view_register_nodes_req:
388
0
         service_register_nodes__treat_register_nodes_request(service_mgr__req_msg,
389
0
            service_mgr__resp_msg,
390
0
            service_mgr__StatusCode_service);
391
0
         break;
392
0
      case constants__e_msg_view_unregister_nodes_req:
393
0
         service_unregister_nodes__treat_unregister_nodes_request(service_mgr__req_msg,
394
0
            service_mgr__StatusCode_service);
395
0
         break;
396
0
      default:
397
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
398
0
         break;
399
0
      }
400
0
   }
401
0
}
402
403
void service_mgr__treat_session_nano_extended_service_req(
404
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
405
   const constants__t_session_i service_mgr__session,
406
   const constants__t_msg_type_i service_mgr__req_typ,
407
   const constants__t_server_request_handle_i service_mgr__req_handle,
408
   const constants__t_request_context_i service_mgr__req_ctx,
409
   const constants__t_msg_header_i service_mgr__req_header,
410
   const constants__t_msg_i service_mgr__req_msg,
411
   const constants__t_msg_i service_mgr__resp_msg,
412
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service,
413
0
   t_bool * const service_mgr__async_resp_msg) {
414
0
   {
415
0
      constants__t_user_i service_mgr__l_user;
416
0
      t_bool service_mgr__l_node_management_done;
417
0
      t_bool service_mgr__l_bres;
418
      
419
0
      service_mgr__l_node_management_done = false;
420
0
      *service_mgr__async_resp_msg = false;
421
0
      switch (service_mgr__req_typ) {
422
0
      case constants__e_msg_attribute_read_req:
423
0
      case constants__e_msg_attribute_write_req:
424
0
      case constants__e_msg_view_browse_req:
425
0
      case constants__e_msg_view_browse_next_req:
426
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
427
0
      case constants__e_msg_view_register_nodes_req:
428
0
      case constants__e_msg_view_unregister_nodes_req:
429
0
         service_mgr__treat_session_nano_service_req(service_mgr__endpoint_config_idx,
430
0
            service_mgr__session,
431
0
            service_mgr__req_typ,
432
0
            service_mgr__req_msg,
433
0
            service_mgr__resp_msg,
434
0
            service_mgr__StatusCode_service);
435
0
         break;
436
0
      case constants__e_msg_subscription_create_req:
437
0
         subscription_mgr__treat_create_subscription_request(service_mgr__session,
438
0
            service_mgr__req_msg,
439
0
            service_mgr__resp_msg,
440
0
            service_mgr__StatusCode_service);
441
0
         break;
442
0
      case constants__e_msg_subscription_modify_req:
443
0
         subscription_mgr__treat_modify_subscription_request(service_mgr__session,
444
0
            service_mgr__req_msg,
445
0
            service_mgr__resp_msg,
446
0
            service_mgr__StatusCode_service);
447
0
         break;
448
0
      case constants__e_msg_subscription_delete_subscriptions_req:
449
0
         subscription_mgr__treat_delete_subscriptions_request(service_mgr__session,
450
0
            service_mgr__req_msg,
451
0
            service_mgr__resp_msg,
452
0
            service_mgr__StatusCode_service);
453
0
         break;
454
0
      case constants__e_msg_subscription_set_publishing_mode_req:
455
0
         subscription_mgr__treat_publishing_mode_request(service_mgr__session,
456
0
            service_mgr__req_msg,
457
0
            service_mgr__resp_msg,
458
0
            service_mgr__StatusCode_service);
459
0
         break;
460
0
      case constants__e_msg_subscription_publish_req:
461
0
         subscription_mgr__treat_subscription_publish_request(service_mgr__session,
462
0
            service_mgr__req_header,
463
0
            service_mgr__req_msg,
464
0
            service_mgr__req_handle,
465
0
            service_mgr__req_ctx,
466
0
            service_mgr__resp_msg,
467
0
            service_mgr__StatusCode_service,
468
0
            service_mgr__async_resp_msg);
469
0
         break;
470
0
      case constants__e_msg_subscription_republish_req:
471
0
         subscription_mgr__treat_subscription_republish_request(service_mgr__session,
472
0
            service_mgr__req_msg,
473
0
            service_mgr__resp_msg,
474
0
            service_mgr__StatusCode_service);
475
0
         break;
476
0
      case constants__e_msg_monitored_items_create_req:
477
0
         session_mgr__get_session_user_server(service_mgr__session,
478
0
            &service_mgr__l_user);
479
0
         subscription_mgr__treat_subscription_create_monitored_items_req(service_mgr__session,
480
0
            service_mgr__l_user,
481
0
            service_mgr__req_msg,
482
0
            service_mgr__resp_msg,
483
0
            service_mgr__StatusCode_service);
484
0
         break;
485
0
      case constants__e_msg_monitored_items_modify_req:
486
0
         subscription_mgr__treat_subscription_modify_monitored_items_req(service_mgr__session,
487
0
            service_mgr__req_msg,
488
0
            service_mgr__resp_msg,
489
0
            service_mgr__StatusCode_service);
490
0
         break;
491
0
      case constants__e_msg_monitored_items_delete_req:
492
0
         subscription_mgr__treat_subscription_delete_monitored_items_req(service_mgr__session,
493
0
            service_mgr__req_msg,
494
0
            service_mgr__resp_msg,
495
0
            service_mgr__StatusCode_service);
496
0
         break;
497
0
      case constants__e_msg_monitored_items_set_monitoring_mode_req:
498
0
         subscription_mgr__treat_subscription_set_monit_mode_monitored_items_req(service_mgr__session,
499
0
            service_mgr__req_msg,
500
0
            service_mgr__resp_msg,
501
0
            service_mgr__StatusCode_service);
502
0
         break;
503
0
      case constants__e_msg_method_call_req:
504
0
         session_mgr__get_session_user_server(service_mgr__session,
505
0
            &service_mgr__l_user);
506
0
         address_space_itf__treat_method_call_request(service_mgr__l_user,
507
0
            service_mgr__endpoint_config_idx,
508
0
            service_mgr__req_msg,
509
0
            service_mgr__resp_msg,
510
0
            service_mgr__StatusCode_service);
511
0
         break;
512
0
      case constants__e_msg_attribute_history_read_req:
513
0
         constants__is_ExternalHistoryRawReadServiceActive(&service_mgr__l_bres);
514
0
         if (service_mgr__l_bres == true) {
515
0
            session_mgr__get_session_user_server(service_mgr__session,
516
0
               &service_mgr__l_user);
517
0
            service_history_read__treat_history_read_request(service_mgr__req_msg,
518
0
               service_mgr__resp_msg,
519
0
               service_mgr__l_user,
520
0
               service_mgr__StatusCode_service);
521
0
         }
522
0
         else {
523
0
            *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
524
0
         }
525
0
         break;
526
0
      case constants__e_msg_node_add_nodes_req:
527
0
         constants__is_ClientNodeManagementActive(&service_mgr__l_bres);
528
0
         if (service_mgr__l_bres == true) {
529
0
            session_mgr__get_session_user_server(service_mgr__session,
530
0
               &service_mgr__l_user);
531
0
            address_space_itf__treat_add_nodes_request(service_mgr__l_user,
532
0
               service_mgr__req_msg,
533
0
               service_mgr__resp_msg,
534
0
               service_mgr__StatusCode_service);
535
0
            service_mgr__l_node_management_done = (*service_mgr__StatusCode_service == constants_statuscodes_bs__e_sc_ok);
536
0
         }
537
0
         else {
538
0
            *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
539
0
         }
540
0
         break;
541
0
      case constants__e_msg_node_delete_nodes_req:
542
0
         constants__is_ClientNodeManagementActive(&service_mgr__l_bres);
543
0
         if (service_mgr__l_bres == true) {
544
0
            session_mgr__get_session_user_server(service_mgr__session,
545
0
               &service_mgr__l_user);
546
0
            address_space_itf__treat_delete_nodes_request(service_mgr__l_user,
547
0
               service_mgr__req_msg,
548
0
               service_mgr__resp_msg,
549
0
               service_mgr__StatusCode_service);
550
0
            service_mgr__l_node_management_done = (*service_mgr__StatusCode_service == constants_statuscodes_bs__e_sc_ok);
551
0
         }
552
0
         else {
553
0
            *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
554
0
         }
555
0
         break;
556
0
      default:
557
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
558
0
         break;
559
0
      }
560
0
      if (service_mgr__l_node_management_done == true) {
561
0
         service_set_view__service_set_view_service_node_management_used();
562
0
      }
563
0
   }
564
0
}
565
566
void service_mgr__decode_and_treat_session_service_req(
567
   const constants__t_channel_i service_mgr__p_channel,
568
   const constants__t_msg_type_i service_mgr__p_req_typ,
569
   const constants__t_request_context_i service_mgr__p_req_context,
570
   const constants__t_byte_buffer_i service_mgr__p_msg_buffer,
571
   const constants__t_msg_header_i service_mgr__p_req_header,
572
   const constants__t_server_request_handle_i service_mgr__p_req_handle,
573
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
574
   t_bool * const service_mgr__p_valid_req,
575
   t_bool * const service_mgr__p_async,
576
   constants__t_msg_type_i * const service_mgr__p_resp_typ,
577
   constants__t_msg_header_i * const service_mgr__p_resp_header,
578
0
   constants__t_msg_i * const service_mgr__p_resp_msg) {
579
0
   {
580
0
      constants__t_session_token_i service_mgr__l_session_token;
581
0
      t_bool service_mgr__l_is_valid_req_on_session;
582
0
      constants__t_session_i service_mgr__l_session;
583
0
      constants__t_endpoint_config_idx_i service_mgr__l_endpoint_config_idx;
584
0
      t_bool service_mgr__l_is_valid_ep_config_idx;
585
0
      constants__t_msg_i service_mgr__l_req_msg;
586
      
587
0
      *service_mgr__p_resp_typ = constants__c_msg_type_indet;
588
0
      *service_mgr__p_resp_header = constants__c_msg_header_indet;
589
0
      *service_mgr__p_resp_msg = constants__c_msg_indet;
590
0
      *service_mgr__p_async = false;
591
0
      message_in_bs__read_msg_req_header_session_token(service_mgr__p_req_header,
592
0
         &service_mgr__l_session_token);
593
0
      session_mgr__server_validate_session_service_req(service_mgr__p_channel,
594
0
         service_mgr__l_session_token,
595
0
         &service_mgr__l_is_valid_req_on_session,
596
0
         &service_mgr__l_session,
597
0
         service_mgr__p_sc);
598
0
      channel_mgr__server_get_endpoint_config(service_mgr__p_channel,
599
0
         &service_mgr__l_endpoint_config_idx);
600
0
      channel_mgr__is_valid_endpoint_config_idx(service_mgr__l_endpoint_config_idx,
601
0
         &service_mgr__l_is_valid_ep_config_idx);
602
0
      if ((service_mgr__l_is_valid_req_on_session == true) &&
603
0
         (service_mgr__l_is_valid_ep_config_idx == true)) {
604
0
         message_in_bs__decode_msg(service_mgr__p_req_typ,
605
0
            service_mgr__p_msg_buffer,
606
0
            service_mgr__p_valid_req,
607
0
            &service_mgr__l_req_msg);
608
0
         if (*service_mgr__p_valid_req == true) {
609
0
            service_mgr__get_response_type(service_mgr__p_req_typ,
610
0
               service_mgr__p_resp_typ);
611
0
            message_out_bs__alloc_resp_msg(*service_mgr__p_resp_typ,
612
0
               service_mgr__p_resp_header,
613
0
               service_mgr__p_resp_msg);
614
0
            if (*service_mgr__p_resp_msg != constants__c_msg_indet) {
615
0
               service_mgr__treat_session_service_req(service_mgr__l_endpoint_config_idx,
616
0
                  service_mgr__l_session,
617
0
                  service_mgr__p_req_typ,
618
0
                  service_mgr__p_req_handle,
619
0
                  service_mgr__p_req_context,
620
0
                  service_mgr__p_req_header,
621
0
                  service_mgr__l_req_msg,
622
0
                  *service_mgr__p_resp_msg,
623
0
                  service_mgr__p_sc,
624
0
                  service_mgr__p_async);
625
0
            }
626
0
            else {
627
0
               *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
628
0
            }
629
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
630
0
         }
631
0
         else {
632
0
            *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_decoding_error;
633
0
         }
634
0
      }
635
0
      else {
636
0
         *service_mgr__p_valid_req = true;
637
0
      }
638
0
   }
639
0
}
640
641
void service_mgr__treat_session_service_req(
642
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
643
   const constants__t_session_i service_mgr__session,
644
   const constants__t_msg_type_i service_mgr__req_typ,
645
   const constants__t_server_request_handle_i service_mgr__req_handle,
646
   const constants__t_request_context_i service_mgr__req_ctx,
647
   const constants__t_msg_header_i service_mgr__req_header,
648
   const constants__t_msg_i service_mgr__req_msg,
649
   const constants__t_msg_i service_mgr__resp_msg,
650
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service,
651
0
   t_bool * const service_mgr__async_resp_msg) {
652
0
   {
653
0
      constants__t_user_i service_mgr__l_user;
654
0
      constants__t_sessionRoles_i service_mgr__l_roles;
655
      
656
0
      *service_mgr__async_resp_msg = false;
657
0
      session_mgr__get_session_user_server(service_mgr__session,
658
0
         &service_mgr__l_user);
659
0
      session_mgr__get_session_roles(service_mgr__session,
660
0
         &service_mgr__l_roles);
661
0
      address_space_itf__set_user_roles(service_mgr__l_user,
662
0
         service_mgr__l_roles);
663
0
      if (constants__c_Server_Nano_Extended == true) {
664
0
         service_mgr__treat_session_nano_extended_service_req(service_mgr__endpoint_config_idx,
665
0
            service_mgr__session,
666
0
            service_mgr__req_typ,
667
0
            service_mgr__req_handle,
668
0
            service_mgr__req_ctx,
669
0
            service_mgr__req_header,
670
0
            service_mgr__req_msg,
671
0
            service_mgr__resp_msg,
672
0
            service_mgr__StatusCode_service,
673
0
            service_mgr__async_resp_msg);
674
0
      }
675
0
      else {
676
0
         service_mgr__treat_session_nano_service_req(service_mgr__endpoint_config_idx,
677
0
            service_mgr__session,
678
0
            service_mgr__req_typ,
679
0
            service_mgr__req_msg,
680
0
            service_mgr__resp_msg,
681
0
            service_mgr__StatusCode_service);
682
0
      }
683
0
      address_space_itf__clear_user_roles();
684
0
   }
685
0
}
686
687
void service_mgr__encode_session_service_resp(
688
   const constants__t_server_request_handle_i service_mgr__p_request_handle,
689
   const constants__t_channel_i service_mgr__p_channel,
690
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__p_msg_sc,
691
   const constants__t_msg_type_i service_mgr__p_msg_type,
692
   const constants__t_msg_header_i service_mgr__p_msg_header,
693
   const constants__t_msg_i service_mgr__p_msg,
694
   const t_bool service_mgr__p_async,
695
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
696
0
   constants__t_byte_buffer_i * const service_mgr__p_buffer_out) {
697
0
   {
698
0
      constants__t_msg_type_i service_mgr__l_msg_type;
699
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
700
      
701
0
      *service_mgr__p_sc = constants_statuscodes_bs__c_StatusCode_indet;
702
0
      *service_mgr__p_buffer_out = constants__c_byte_buffer_indet;
703
0
      if (service_mgr__p_async == false) {
704
0
         if (service_mgr__p_msg_sc == constants_statuscodes_bs__e_sc_ok) {
705
0
            service_mgr__l_msg_type = service_mgr__p_msg_type;
706
0
         }
707
0
         else {
708
0
            service_mgr__l_msg_type = constants__e_msg_service_fault_resp;
709
0
         }
710
0
         message_out_bs__server_write_msg_out_header_req_handle(service_mgr__p_msg_header,
711
0
            service_mgr__p_request_handle);
712
0
         message_out_bs__write_msg_resp_header_service_status(service_mgr__p_msg_header,
713
0
            service_mgr__p_msg_sc);
714
0
         channel_mgr__get_channel_info(service_mgr__p_channel,
715
0
            &service_mgr__l_channel_cfg);
716
0
         message_out_bs__encode_msg(service_mgr__l_channel_cfg,
717
0
            constants__e_msg_response_type,
718
0
            service_mgr__l_msg_type,
719
0
            service_mgr__p_msg_header,
720
0
            service_mgr__p_msg,
721
0
            service_mgr__p_sc,
722
0
            service_mgr__p_buffer_out);
723
0
         message_out_bs__dealloc_msg_header_out(service_mgr__p_msg_header);
724
0
         message_out_bs__dealloc_msg_out(service_mgr__p_msg);
725
0
      }
726
0
      else {
727
0
         message_out_bs__dealloc_msg_header_out(service_mgr__p_msg_header);
728
0
         message_out_bs__forget_msg_out(service_mgr__p_msg);
729
0
      }
730
0
   }
731
0
}
732
733
void service_mgr__alloc_and_encode_session_service_fault_resp(
734
   const constants__t_server_request_handle_i service_mgr__p_request_handle,
735
   const constants__t_channel_i service_mgr__p_channel,
736
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__p_msg_sc,
737
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
738
0
   constants__t_byte_buffer_i * const service_mgr__p_buffer_out) {
739
0
   {
740
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
741
0
      constants__t_msg_i service_mgr__l_resp_msg;
742
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
743
      
744
0
      *service_mgr__p_buffer_out = constants__c_byte_buffer_indet;
745
0
      service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
746
0
      message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
747
0
         &service_mgr__l_resp_msg_header,
748
0
         &service_mgr__l_resp_msg);
749
0
      if (service_mgr__l_resp_msg != constants__c_msg_indet) {
750
0
         service_mgr__encode_session_service_resp(service_mgr__p_request_handle,
751
0
            service_mgr__p_channel,
752
0
            service_mgr__p_msg_sc,
753
0
            service_mgr__l_resp_msg_typ,
754
0
            service_mgr__l_resp_msg_header,
755
0
            service_mgr__l_resp_msg,
756
0
            false,
757
0
            service_mgr__p_sc,
758
0
            service_mgr__p_buffer_out);
759
0
      }
760
0
      else {
761
0
         *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
762
0
      }
763
0
   }
764
0
}
765
766
void service_mgr__treat_discovery_service_req(
767
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
768
   const constants__t_msg_type_i service_mgr__req_typ,
769
   const constants__t_msg_i service_mgr__req_msg,
770
   const constants__t_msg_i service_mgr__resp_msg,
771
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service) {
772
0
   {
773
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
774
0
      constants__t_ApplicationDescription_i service_mgr__l_app_desc;
775
0
      t_bool service_mgr__l_is_discovery_server;
776
      
777
0
      service_set_discovery_server__get_ApplicationDescription(service_mgr__endpoint_config_idx,
778
0
         &service_mgr__l_app_desc);
779
0
      service_set_discovery_server__is_ApplicationDescription_DiscoveryServerType(service_mgr__l_app_desc,
780
0
         &service_mgr__l_is_discovery_server);
781
0
      switch (service_mgr__req_typ) {
782
0
      case constants__e_msg_discovery_get_endpoints_req:
783
0
         service_get_endpoints_bs__treat_get_endpoints_request(service_mgr__req_msg,
784
0
            service_mgr__resp_msg,
785
0
            service_mgr__endpoint_config_idx,
786
0
            &service_mgr__l_ret);
787
0
         break;
788
0
      case constants__e_msg_discovery_find_servers_req:
789
0
         service_set_discovery_server__treat_find_servers_request(service_mgr__req_msg,
790
0
            service_mgr__resp_msg,
791
0
            service_mgr__endpoint_config_idx,
792
0
            &service_mgr__l_ret);
793
0
         break;
794
0
      default:
795
0
         if (service_mgr__l_is_discovery_server == true) {
796
0
            switch (service_mgr__req_typ) {
797
0
            case constants__e_msg_discovery_find_servers_on_network_req:
798
0
               service_set_discovery_server__treat_find_servers_on_network_request(service_mgr__req_msg,
799
0
                  service_mgr__resp_msg,
800
0
                  &service_mgr__l_ret);
801
0
               break;
802
0
            case constants__e_msg_discovery_register_server2_req:
803
0
               service_set_discovery_server__treat_register_server2_request(service_mgr__req_msg,
804
0
                  service_mgr__resp_msg,
805
0
                  &service_mgr__l_ret);
806
0
               break;
807
0
            default:
808
0
               service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
809
0
               break;
810
0
            }
811
0
         }
812
0
         else {
813
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
814
0
         }
815
0
         break;
816
0
      }
817
0
      *service_mgr__StatusCode_service = service_mgr__l_ret;
818
0
   }
819
0
}
820
821
void service_mgr__local_client_discovery_service_request(
822
   const constants__t_channel_i service_mgr__channel,
823
   const constants__t_msg_type_i service_mgr__req_typ,
824
   const constants__t_msg_i service_mgr__req_msg,
825
   const constants__t_application_context_i service_mgr__app_context,
826
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
827
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
828
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
829
0
   {
830
0
      constants__t_msg_header_i service_mgr__l_msg_header;
831
0
      constants__t_msg_type_i service_mgr__l_resp_typ;
832
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
833
0
      t_bool service_mgr__l_valid_req_handle;
834
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
835
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
836
      
837
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
838
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
839
0
      switch (service_mgr__req_typ) {
840
0
      case constants__e_msg_discovery_find_servers_req:
841
0
      case constants__e_msg_discovery_find_servers_on_network_req:
842
0
      case constants__e_msg_discovery_get_endpoints_req:
843
0
      case constants__e_msg_discovery_register_server_req:
844
0
      case constants__e_msg_discovery_register_server2_req:
845
0
         service_mgr__get_response_type(service_mgr__req_typ,
846
0
            &service_mgr__l_resp_typ);
847
0
         message_out_bs__alloc_msg_header(true,
848
0
            &service_mgr__l_msg_header);
849
0
         request_handle_bs__client_fresh_req_handle(service_mgr__req_typ,
850
0
            service_mgr__l_resp_typ,
851
0
            true,
852
0
            service_mgr__app_context,
853
0
            &service_mgr__l_req_handle);
854
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
855
0
            &service_mgr__l_valid_req_handle);
856
0
         if ((service_mgr__l_valid_req_handle == true) &&
857
0
            (service_mgr__l_msg_header != constants__c_msg_header_indet)) {
858
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
859
0
               service_mgr__channel);
860
0
            message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
861
0
               service_mgr__l_req_handle);
862
0
            channel_mgr__get_channel_info(service_mgr__channel,
863
0
               &service_mgr__l_channel_cfg);
864
0
            message_out_bs__encode_msg(service_mgr__l_channel_cfg,
865
0
               constants__e_msg_request_type,
866
0
               service_mgr__req_typ,
867
0
               service_mgr__l_msg_header,
868
0
               service_mgr__req_msg,
869
0
               service_mgr__ret,
870
0
               &service_mgr__l_buffer);
871
0
            if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
872
0
               service_mgr__l_req_handle = constants__c_client_request_handle_indet;
873
0
            }
874
0
         }
875
0
         else {
876
0
            service_mgr__l_req_handle = constants__c_client_request_handle_indet;
877
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
878
0
         }
879
0
         if (service_mgr__l_msg_header != constants__c_msg_header_indet) {
880
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
881
0
         }
882
0
         break;
883
0
      default:
884
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
885
0
         break;
886
0
      }
887
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
888
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
889
0
   }
890
0
}
891
892
void service_mgr__client_service_fault_to_resp_type(
893
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
894
   t_bool * const service_mgr__valid,
895
0
   constants__t_msg_type_i * const service_mgr__resp_typ) {
896
0
   {
897
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
898
      
899
0
      message_in_bs__decode_service_fault_msg_req_handle(service_mgr__msg_buffer,
900
0
         &service_mgr__l_request_handle);
901
0
      request_handle_bs__is_valid_req_handle(service_mgr__l_request_handle,
902
0
         service_mgr__valid);
903
0
      if (*service_mgr__valid == true) {
904
0
         request_handle_bs__get_req_handle_resp_typ(service_mgr__l_request_handle,
905
0
            service_mgr__resp_typ);
906
0
      }
907
0
      else {
908
0
         *service_mgr__resp_typ = constants__c_msg_type_indet;
909
0
      }
910
0
   }
911
0
}
912
913
void service_mgr__server_receive_session_treatment_req(
914
   const constants__t_channel_i service_mgr__channel,
915
   const constants__t_msg_type_i service_mgr__req_typ,
916
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
917
   t_bool * const service_mgr__valid_req_header,
918
   t_bool * const service_mgr__valid_req,
919
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
920
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
921
0
   {
922
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
923
0
      constants__t_msg_i service_mgr__l_req_msg;
924
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
925
0
      constants__t_session_token_i service_mgr__l_session_token;
926
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
927
0
      constants__t_msg_i service_mgr__l_resp_msg;
928
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
929
0
      constants__t_session_i service_mgr__l_session;
930
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
931
0
      t_bool service_mgr__l_secu_failed;
932
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
933
      
934
0
      *service_mgr__valid_req = false;
935
0
      *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_decoding_error;
936
0
      service_mgr__l_buffer_out = constants__c_byte_buffer_indet;
937
0
      message_in_bs__decode_msg_header(true,
938
0
         service_mgr__msg_buffer,
939
0
         service_mgr__valid_req_header,
940
0
         &service_mgr__l_req_msg_header);
941
0
      if (*service_mgr__valid_req_header == true) {
942
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
943
0
            &service_mgr__l_request_handle);
944
0
         message_in_bs__read_msg_req_header_session_token(service_mgr__l_req_msg_header,
945
0
            &service_mgr__l_session_token);
946
0
         message_in_bs__decode_msg(service_mgr__req_typ,
947
0
            service_mgr__msg_buffer,
948
0
            service_mgr__valid_req,
949
0
            &service_mgr__l_req_msg);
950
0
         if (*service_mgr__valid_req == true) {
951
0
            service_mgr__get_response_type(service_mgr__req_typ,
952
0
               &service_mgr__l_resp_msg_typ);
953
0
            message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
954
0
               &service_mgr__l_resp_msg_header,
955
0
               &service_mgr__l_resp_msg);
956
0
            if (service_mgr__l_resp_msg != constants__c_msg_indet) {
957
0
               session_mgr__server_receive_session_req(service_mgr__channel,
958
0
                  service_mgr__l_session_token,
959
0
                  service_mgr__l_req_msg,
960
0
                  service_mgr__req_typ,
961
0
                  service_mgr__l_resp_msg,
962
0
                  &service_mgr__l_session,
963
0
                  &service_mgr__l_ret,
964
0
                  &service_mgr__l_secu_failed);
965
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
966
0
                  service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
967
0
               }
968
0
               service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
969
0
                  service_mgr__channel,
970
0
                  service_mgr__l_ret,
971
0
                  service_mgr__l_resp_msg_typ,
972
0
                  service_mgr__l_resp_msg_header,
973
0
                  service_mgr__l_resp_msg,
974
0
                  false,
975
0
                  service_mgr__sc,
976
0
                  &service_mgr__l_buffer_out);
977
0
               if (*service_mgr__sc != constants_statuscodes_bs__e_sc_ok) {
978
0
                  session_mgr__server_close_session(service_mgr__l_session,
979
0
                     constants_statuscodes_bs__e_sc_bad_encoding_error);
980
0
               }
981
0
               if (service_mgr__l_secu_failed == true) {
982
0
                  *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_security_checks_failed;
983
0
               }
984
0
            }
985
0
            else {
986
0
               *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
987
0
            }
988
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
989
0
         }
990
0
         else {
991
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
992
0
               service_mgr__channel,
993
0
               constants_statuscodes_bs__e_sc_bad_decoding_error,
994
0
               service_mgr__sc,
995
0
               &service_mgr__l_buffer_out);
996
0
         }
997
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
998
0
      }
999
0
      *service_mgr__buffer_out = service_mgr__l_buffer_out;
1000
0
   }
1001
0
}
1002
1003
void service_mgr__client_receive_session_treatment_resp(
1004
   const constants__t_channel_i service_mgr__channel,
1005
   const constants__t_msg_type_i service_mgr__resp_typ,
1006
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1007
0
   t_bool * const service_mgr__valid_resp) {
1008
0
   {
1009
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1010
0
      t_bool service_mgr__l_valid_resp_header;
1011
0
      constants__t_msg_i service_mgr__l_resp_msg;
1012
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
1013
0
      t_bool service_mgr__l_validated_req_handle;
1014
0
      constants__t_session_i service_mgr__l_session;
1015
      
1016
0
      *service_mgr__valid_resp = false;
1017
0
      message_in_bs__decode_msg_header(false,
1018
0
         service_mgr__msg_buffer,
1019
0
         &service_mgr__l_valid_resp_header,
1020
0
         &service_mgr__l_resp_msg_header);
1021
0
      if (service_mgr__l_valid_resp_header == true) {
1022
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
1023
0
            &service_mgr__l_request_handle);
1024
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
1025
0
            service_mgr__l_request_handle,
1026
0
            service_mgr__resp_typ,
1027
0
            &service_mgr__l_validated_req_handle);
1028
0
         if (service_mgr__l_validated_req_handle == true) {
1029
0
            message_in_bs__decode_msg(service_mgr__resp_typ,
1030
0
               service_mgr__msg_buffer,
1031
0
               service_mgr__valid_resp,
1032
0
               &service_mgr__l_resp_msg);
1033
0
            if (*service_mgr__valid_resp == true) {
1034
0
               session_mgr__client_receive_session_resp(service_mgr__channel,
1035
0
                  service_mgr__l_request_handle,
1036
0
                  service_mgr__resp_typ,
1037
0
                  service_mgr__l_resp_msg_header,
1038
0
                  service_mgr__l_resp_msg,
1039
0
                  &service_mgr__l_session);
1040
0
               message_in_bs__dealloc_msg_in(service_mgr__l_resp_msg);
1041
0
            }
1042
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1043
0
         }
1044
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1045
0
      }
1046
0
   }
1047
0
}
1048
1049
void service_mgr__server_receive_session_service_req(
1050
   const constants__t_channel_i service_mgr__channel,
1051
   const constants__t_msg_type_i service_mgr__req_typ,
1052
   const constants__t_request_context_i service_mgr__req_context,
1053
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1054
   t_bool * const service_mgr__valid_req_header,
1055
   t_bool * const service_mgr__valid_req,
1056
   t_bool * const service_mgr__async_resp,
1057
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1058
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
1059
0
   {
1060
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
1061
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
1062
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1063
0
      constants__t_msg_i service_mgr__l_resp_msg;
1064
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1065
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1066
      
1067
0
      *service_mgr__sc = constants_statuscodes_bs__c_StatusCode_indet;
1068
0
      *service_mgr__valid_req = false;
1069
0
      service_mgr__l_resp_msg_typ = constants__c_msg_type_indet;
1070
0
      service_mgr__l_resp_msg_header = constants__c_msg_header_indet;
1071
0
      service_mgr__l_resp_msg = constants__c_msg_indet;
1072
0
      *service_mgr__async_resp = false;
1073
0
      *service_mgr__buffer_out = constants__c_byte_buffer_indet;
1074
0
      message_in_bs__decode_msg_header(true,
1075
0
         service_mgr__msg_buffer,
1076
0
         service_mgr__valid_req_header,
1077
0
         &service_mgr__l_req_msg_header);
1078
0
      if (*service_mgr__valid_req_header == true) {
1079
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
1080
0
            &service_mgr__l_request_handle);
1081
0
         service_mgr__decode_and_treat_session_service_req(service_mgr__channel,
1082
0
            service_mgr__req_typ,
1083
0
            service_mgr__req_context,
1084
0
            service_mgr__msg_buffer,
1085
0
            service_mgr__l_req_msg_header,
1086
0
            service_mgr__l_request_handle,
1087
0
            &service_mgr__l_ret,
1088
0
            service_mgr__valid_req,
1089
0
            service_mgr__async_resp,
1090
0
            &service_mgr__l_resp_msg_typ,
1091
0
            &service_mgr__l_resp_msg_header,
1092
0
            &service_mgr__l_resp_msg);
1093
0
         if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1094
0
            service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
1095
0
               service_mgr__channel,
1096
0
               service_mgr__l_ret,
1097
0
               service_mgr__l_resp_msg_typ,
1098
0
               service_mgr__l_resp_msg_header,
1099
0
               service_mgr__l_resp_msg,
1100
0
               *service_mgr__async_resp,
1101
0
               service_mgr__sc,
1102
0
               service_mgr__buffer_out);
1103
0
         }
1104
0
         else {
1105
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
1106
0
               service_mgr__channel,
1107
0
               service_mgr__l_ret,
1108
0
               service_mgr__sc,
1109
0
               service_mgr__buffer_out);
1110
0
         }
1111
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
1112
0
      }
1113
0
   }
1114
0
}
1115
1116
void service_mgr__client_receive_session_service_resp(
1117
   const constants__t_channel_i service_mgr__channel,
1118
   const constants__t_msg_type_i service_mgr__resp_typ,
1119
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1120
0
   t_bool * const service_mgr__valid_resp) {
1121
0
   {
1122
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1123
0
      t_bool service_mgr__l_valid_resp_header;
1124
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
1125
0
      t_bool service_mgr__l_validated_req_handle;
1126
0
      constants__t_application_context_i service_mgr__l_user_app_context;
1127
0
      t_bool service_mgr__l_is_applicative_response;
1128
0
      t_bool service_mgr__l_is_valid_session_resp;
1129
0
      constants__t_session_i service_mgr__l_session;
1130
0
      constants__t_msg_i service_mgr__l_resp_msg;
1131
      
1132
0
      *service_mgr__valid_resp = false;
1133
0
      message_in_bs__decode_msg_header(false,
1134
0
         service_mgr__msg_buffer,
1135
0
         &service_mgr__l_valid_resp_header,
1136
0
         &service_mgr__l_resp_msg_header);
1137
0
      if (service_mgr__l_valid_resp_header == true) {
1138
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
1139
0
            &service_mgr__l_request_handle);
1140
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
1141
0
            service_mgr__l_request_handle,
1142
0
            service_mgr__resp_typ,
1143
0
            &service_mgr__l_validated_req_handle);
1144
0
         if (service_mgr__l_validated_req_handle == true) {
1145
0
            request_handle_bs__get_req_handle_app_context(service_mgr__l_request_handle,
1146
0
               &service_mgr__l_is_applicative_response,
1147
0
               &service_mgr__l_user_app_context);
1148
0
            session_mgr__client_validate_session_service_resp(service_mgr__channel,
1149
0
               service_mgr__l_request_handle,
1150
0
               &service_mgr__l_is_valid_session_resp,
1151
0
               &service_mgr__l_session);
1152
0
            if (service_mgr__l_is_valid_session_resp == true) {
1153
0
               message_in_bs__decode_msg(service_mgr__resp_typ,
1154
0
                  service_mgr__msg_buffer,
1155
0
                  service_mgr__valid_resp,
1156
0
                  &service_mgr__l_resp_msg);
1157
0
               if ((*service_mgr__valid_resp == true) &&
1158
0
                  (service_mgr__l_is_applicative_response == true)) {
1159
0
                  message_in_bs__copy_msg_resp_header_into_msg(service_mgr__l_resp_msg_header,
1160
0
                     service_mgr__l_resp_msg);
1161
0
                  service_response_cb_bs__cli_service_response(service_mgr__l_session,
1162
0
                     service_mgr__l_resp_msg,
1163
0
                     service_mgr__l_user_app_context);
1164
0
                  message_in_bs__forget_msg_in(service_mgr__l_resp_msg);
1165
0
               }
1166
0
            }
1167
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1168
0
         }
1169
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1170
0
      }
1171
0
   }
1172
0
}
1173
1174
void service_mgr__server_receive_discovery_service_req(
1175
   const constants__t_channel_i service_mgr__channel,
1176
   const constants__t_msg_type_i service_mgr__req_typ,
1177
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1178
   t_bool * const service_mgr__valid_req_header,
1179
   t_bool * const service_mgr__valid_req,
1180
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1181
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
1182
0
   {
1183
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
1184
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
1185
0
      constants__t_msg_i service_mgr__l_req_msg;
1186
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1187
0
      constants__t_msg_i service_mgr__l_resp_msg;
1188
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1189
0
      constants__t_endpoint_config_idx_i service_mgr__l_endpoint_config_idx;
1190
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1191
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
1192
      
1193
0
      *service_mgr__sc = constants_statuscodes_bs__c_StatusCode_indet;
1194
0
      *service_mgr__valid_req = false;
1195
0
      service_mgr__l_buffer_out = constants__c_byte_buffer_indet;
1196
0
      message_in_bs__decode_msg_header(true,
1197
0
         service_mgr__msg_buffer,
1198
0
         service_mgr__valid_req_header,
1199
0
         &service_mgr__l_req_msg_header);
1200
0
      if (*service_mgr__valid_req_header == true) {
1201
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
1202
0
            &service_mgr__l_request_handle);
1203
0
         message_in_bs__decode_msg(service_mgr__req_typ,
1204
0
            service_mgr__msg_buffer,
1205
0
            service_mgr__valid_req,
1206
0
            &service_mgr__l_req_msg);
1207
0
         if (*service_mgr__valid_req == true) {
1208
0
            service_mgr__get_response_type(service_mgr__req_typ,
1209
0
               &service_mgr__l_resp_msg_typ);
1210
0
            message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
1211
0
               &service_mgr__l_resp_msg_header,
1212
0
               &service_mgr__l_resp_msg);
1213
0
            if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1214
0
               channel_mgr__server_get_endpoint_config(service_mgr__channel,
1215
0
                  &service_mgr__l_endpoint_config_idx);
1216
0
               service_mgr__treat_discovery_service_req(service_mgr__l_endpoint_config_idx,
1217
0
                  service_mgr__req_typ,
1218
0
                  service_mgr__l_req_msg,
1219
0
                  service_mgr__l_resp_msg,
1220
0
                  &service_mgr__l_ret);
1221
0
               message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1222
0
                  service_mgr__l_ret);
1223
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
1224
0
                  service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
1225
0
               }
1226
0
               service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
1227
0
                  service_mgr__channel,
1228
0
                  service_mgr__l_ret,
1229
0
                  service_mgr__l_resp_msg_typ,
1230
0
                  service_mgr__l_resp_msg_header,
1231
0
                  service_mgr__l_resp_msg,
1232
0
                  false,
1233
0
                  service_mgr__sc,
1234
0
                  &service_mgr__l_buffer_out);
1235
0
            }
1236
0
            else {
1237
0
               *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1238
0
            }
1239
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
1240
0
         }
1241
0
         else {
1242
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
1243
0
               service_mgr__channel,
1244
0
               constants_statuscodes_bs__e_sc_bad_decoding_error,
1245
0
               service_mgr__sc,
1246
0
               &service_mgr__l_buffer_out);
1247
0
         }
1248
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
1249
0
      }
1250
0
      *service_mgr__buffer_out = service_mgr__l_buffer_out;
1251
0
   }
1252
0
}
1253
1254
void service_mgr__client_receive_discovery_service_resp(
1255
   const constants__t_channel_i service_mgr__channel,
1256
   const constants__t_msg_type_i service_mgr__resp_typ,
1257
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1258
0
   t_bool * const service_mgr__valid_resp) {
1259
0
   {
1260
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1261
0
      t_bool service_mgr__l_valid_resp_header;
1262
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
1263
0
      t_bool service_mgr__l_validated_req_handle;
1264
0
      t_bool service_mgr__l_is_applicative_response;
1265
0
      constants__t_application_context_i service_mgr__l_user_app_context;
1266
0
      constants__t_msg_i service_mgr__l_resp_msg;
1267
      
1268
0
      *service_mgr__valid_resp = false;
1269
0
      message_in_bs__decode_msg_header(false,
1270
0
         service_mgr__msg_buffer,
1271
0
         &service_mgr__l_valid_resp_header,
1272
0
         &service_mgr__l_resp_msg_header);
1273
0
      if (service_mgr__l_valid_resp_header == true) {
1274
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
1275
0
            &service_mgr__l_request_handle);
1276
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
1277
0
            service_mgr__l_request_handle,
1278
0
            service_mgr__resp_typ,
1279
0
            &service_mgr__l_validated_req_handle);
1280
0
         if (service_mgr__l_validated_req_handle == true) {
1281
0
            request_handle_bs__get_req_handle_app_context(service_mgr__l_request_handle,
1282
0
               &service_mgr__l_is_applicative_response,
1283
0
               &service_mgr__l_user_app_context);
1284
0
            message_in_bs__decode_msg(service_mgr__resp_typ,
1285
0
               service_mgr__msg_buffer,
1286
0
               service_mgr__valid_resp,
1287
0
               &service_mgr__l_resp_msg);
1288
0
            if ((*service_mgr__valid_resp == true) &&
1289
0
               (service_mgr__l_is_applicative_response == true)) {
1290
0
               message_in_bs__copy_msg_resp_header_into_msg(service_mgr__l_resp_msg_header,
1291
0
                  service_mgr__l_resp_msg);
1292
0
               service_response_cb_bs__cli_service_response(constants__c_session_indet,
1293
0
                  service_mgr__l_resp_msg,
1294
0
                  service_mgr__l_user_app_context);
1295
0
               message_in_bs__forget_msg_in(service_mgr__l_resp_msg);
1296
0
            }
1297
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1298
0
         }
1299
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1300
0
      }
1301
0
   }
1302
0
}
1303
1304
void service_mgr__server_receive_local_service_req(
1305
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
1306
   const constants__t_msg_service_class_i service_mgr__req_class,
1307
   const constants__t_msg_type_i service_mgr__req_typ,
1308
   const constants__t_msg_i service_mgr__req_msg,
1309
   const constants__t_application_context_i service_mgr__app_context,
1310
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret) {
1311
0
   {
1312
0
      t_bool service_mgr__l_prev_local_treatment;
1313
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1314
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1315
0
      constants__t_msg_i service_mgr__l_resp_msg;
1316
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1317
      
1318
0
      address_space_itf__is_local_service_treatment(&service_mgr__l_prev_local_treatment);
1319
0
      address_space_itf__set_local_service_treatment(true);
1320
0
      switch (service_mgr__req_class) {
1321
0
      case constants__e_msg_session_service_class:
1322
0
      case constants__e_msg_discovery_service_class:
1323
0
         service_mgr__get_response_type(service_mgr__req_typ,
1324
0
            &service_mgr__l_resp_msg_typ);
1325
0
         message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
1326
0
            &service_mgr__l_resp_msg_header,
1327
0
            &service_mgr__l_resp_msg);
1328
0
         break;
1329
0
      default:
1330
0
         message_out_bs__alloc_resp_msg(constants__e_msg_service_fault_resp,
1331
0
            &service_mgr__l_resp_msg_header,
1332
0
            &service_mgr__l_resp_msg);
1333
0
         break;
1334
0
      }
1335
0
      if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1336
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_ok;
1337
0
         switch (service_mgr__req_class) {
1338
0
         case constants__e_msg_session_service_class:
1339
0
            service_mgr__treat_session_local_service_req(service_mgr__endpoint_config_idx,
1340
0
               service_mgr__req_typ,
1341
0
               service_mgr__req_msg,
1342
0
               service_mgr__l_resp_msg,
1343
0
               &service_mgr__l_ret);
1344
0
            break;
1345
0
         case constants__e_msg_discovery_service_class:
1346
0
            service_mgr__treat_discovery_service_req(service_mgr__endpoint_config_idx,
1347
0
               service_mgr__req_typ,
1348
0
               service_mgr__req_msg,
1349
0
               service_mgr__l_resp_msg,
1350
0
               &service_mgr__l_ret);
1351
0
            break;
1352
0
         default:
1353
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
1354
0
            break;
1355
0
         }
1356
0
         message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1357
0
            service_mgr__l_ret);
1358
0
         message_out_bs__copy_msg_resp_header_into_msg_out(service_mgr__l_resp_msg_header,
1359
0
            service_mgr__l_resp_msg);
1360
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_resp_msg_header);
1361
0
         service_response_cb_bs__srv_service_response(service_mgr__endpoint_config_idx,
1362
0
            service_mgr__l_resp_msg,
1363
0
            service_mgr__app_context);
1364
0
         message_out_bs__forget_msg_out(service_mgr__l_resp_msg);
1365
0
      }
1366
0
      else {
1367
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1368
0
      }
1369
0
      address_space_itf__set_local_service_treatment(service_mgr__l_prev_local_treatment);
1370
0
   }
1371
0
}
1372
1373
void service_mgr__client_service_create_session(
1374
   const constants__t_session_i service_mgr__session,
1375
   const constants__t_channel_i service_mgr__channel,
1376
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1377
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1378
0
   {
1379
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1380
0
      constants__t_msg_i service_mgr__l_req_msg;
1381
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1382
0
      t_bool service_mgr__l_valid_req_handle;
1383
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1384
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_sc;
1385
0
      t_bool service_mgr__l_bret;
1386
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1387
      
1388
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1389
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1390
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_create_req,
1391
0
         &service_mgr__l_msg_header,
1392
0
         &service_mgr__l_req_msg);
1393
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1394
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_create_req,
1395
0
            constants__e_msg_session_create_resp,
1396
0
            false,
1397
0
            constants__c_no_application_context,
1398
0
            &service_mgr__l_req_handle);
1399
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1400
0
            &service_mgr__l_valid_req_handle);
1401
0
         if (service_mgr__l_valid_req_handle == true) {
1402
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1403
0
               service_mgr__channel);
1404
0
            session_mgr__client_create_session_req(service_mgr__session,
1405
0
               service_mgr__channel,
1406
0
               service_mgr__l_req_handle,
1407
0
               service_mgr__l_req_msg,
1408
0
               &service_mgr__l_bret);
1409
0
            if (service_mgr__l_bret == true) {
1410
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1411
0
                  service_mgr__l_req_handle);
1412
0
               channel_mgr__get_channel_info(service_mgr__channel,
1413
0
                  &service_mgr__l_channel_cfg);
1414
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1415
0
                  constants__e_msg_request_type,
1416
0
                  constants__e_msg_session_create_req,
1417
0
                  service_mgr__l_msg_header,
1418
0
                  service_mgr__l_req_msg,
1419
0
                  &service_mgr__l_sc,
1420
0
                  &service_mgr__l_buffer);
1421
0
               if (service_mgr__l_sc != constants_statuscodes_bs__e_sc_ok) {
1422
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1423
0
                  session_mgr__client_close_session(service_mgr__session,
1424
0
                     service_mgr__l_sc);
1425
0
               }
1426
0
            }
1427
0
            else {
1428
0
               request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1429
0
               session_mgr__client_close_session(service_mgr__session,
1430
0
                  constants_statuscodes_bs__e_sc_bad_internal_error);
1431
0
            }
1432
0
         }
1433
0
         else {
1434
0
            session_mgr__client_close_session(service_mgr__session,
1435
0
               constants_statuscodes_bs__e_sc_bad_out_of_memory);
1436
0
         }
1437
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1438
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1439
0
      }
1440
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1441
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1442
0
   }
1443
0
}
1444
1445
void service_mgr__client_service_activate_orphaned_session(
1446
   const constants__t_session_i service_mgr__session,
1447
   const constants__t_channel_i service_mgr__channel,
1448
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1449
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1450
0
   {
1451
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1452
0
      constants__t_msg_i service_mgr__l_req_msg;
1453
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1454
0
      t_bool service_mgr__l_valid_req_handle;
1455
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1456
0
      constants__t_session_token_i service_mgr__l_session_token;
1457
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1458
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_sc;
1459
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1460
      
1461
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1462
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1463
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_activate_req,
1464
0
         &service_mgr__l_msg_header,
1465
0
         &service_mgr__l_req_msg);
1466
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1467
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_activate_req,
1468
0
            constants__e_msg_session_activate_resp,
1469
0
            false,
1470
0
            constants__c_no_application_context,
1471
0
            &service_mgr__l_req_handle);
1472
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1473
0
            &service_mgr__l_valid_req_handle);
1474
0
         if (service_mgr__l_valid_req_handle == true) {
1475
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1476
0
               service_mgr__channel);
1477
0
            session_mgr__client_sc_activate_session_req(service_mgr__session,
1478
0
               service_mgr__l_req_handle,
1479
0
               service_mgr__channel,
1480
0
               service_mgr__l_req_msg,
1481
0
               &service_mgr__l_ret,
1482
0
               &service_mgr__l_session_token);
1483
0
            if (service_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
1484
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1485
0
                  service_mgr__l_req_handle);
1486
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1487
0
                  service_mgr__l_session_token);
1488
0
               channel_mgr__get_channel_info(service_mgr__channel,
1489
0
                  &service_mgr__l_channel_cfg);
1490
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1491
0
                  constants__e_msg_request_type,
1492
0
                  constants__e_msg_session_activate_req,
1493
0
                  service_mgr__l_msg_header,
1494
0
                  service_mgr__l_req_msg,
1495
0
                  &service_mgr__l_sc,
1496
0
                  &service_mgr__l_buffer);
1497
0
               if (service_mgr__l_sc != constants_statuscodes_bs__e_sc_ok) {
1498
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1499
0
                  session_mgr__client_close_session(service_mgr__session,
1500
0
                     service_mgr__l_sc);
1501
0
               }
1502
0
            }
1503
0
         }
1504
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1505
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1506
0
      }
1507
0
      else {
1508
0
         session_mgr__client_close_session(service_mgr__session,
1509
0
            constants_statuscodes_bs__e_sc_bad_out_of_memory);
1510
0
      }
1511
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1512
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1513
0
   }
1514
0
}
1515
1516
void service_mgr__client_service_activate_session(
1517
   const constants__t_session_i service_mgr__session,
1518
   const constants__t_user_token_i service_mgr__p_user_token,
1519
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1520
   constants__t_channel_i * const service_mgr__channel,
1521
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1522
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1523
0
   {
1524
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1525
0
      constants__t_msg_i service_mgr__l_req_msg;
1526
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1527
0
      constants__t_channel_i service_mgr__l_channel;
1528
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1529
0
      t_bool service_mgr__l_valid_req_handle;
1530
0
      constants__t_session_token_i service_mgr__l_session_token;
1531
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1532
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1533
      
1534
0
      service_mgr__l_channel = constants__c_channel_indet;
1535
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1536
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1537
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_activate_req,
1538
0
         &service_mgr__l_msg_header,
1539
0
         &service_mgr__l_req_msg);
1540
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1541
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_activate_req,
1542
0
            constants__e_msg_session_activate_resp,
1543
0
            false,
1544
0
            constants__c_no_application_context,
1545
0
            &service_mgr__l_req_handle);
1546
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1547
0
            &service_mgr__l_valid_req_handle);
1548
0
         if (service_mgr__l_valid_req_handle == true) {
1549
0
            session_mgr__client_user_activate_session_req(service_mgr__session,
1550
0
               service_mgr__l_req_handle,
1551
0
               service_mgr__p_user_token,
1552
0
               service_mgr__l_req_msg,
1553
0
               &service_mgr__l_ret,
1554
0
               &service_mgr__l_channel,
1555
0
               &service_mgr__l_session_token);
1556
0
            if (service_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
1557
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1558
0
                  service_mgr__l_channel);
1559
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1560
0
                  service_mgr__l_req_handle);
1561
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1562
0
                  service_mgr__l_session_token);
1563
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1564
0
                  &service_mgr__l_channel_cfg);
1565
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1566
0
                  constants__e_msg_request_type,
1567
0
                  constants__e_msg_session_activate_req,
1568
0
                  service_mgr__l_msg_header,
1569
0
                  service_mgr__l_req_msg,
1570
0
                  &service_mgr__l_ret,
1571
0
                  &service_mgr__l_buffer);
1572
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
1573
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1574
0
                  service_mgr__l_channel = constants__c_channel_indet;
1575
0
                  session_mgr__client_close_session(service_mgr__session,
1576
0
                     service_mgr__l_ret);
1577
0
               }
1578
0
            }
1579
0
            else {
1580
0
               session_mgr__client_close_session(service_mgr__session,
1581
0
                  service_mgr__l_ret);
1582
0
            }
1583
0
         }
1584
0
         else {
1585
0
            session_mgr__client_close_session(service_mgr__session,
1586
0
               constants_statuscodes_bs__e_sc_bad_out_of_memory);
1587
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1588
0
         }
1589
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1590
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1591
0
      }
1592
0
      else {
1593
0
         session_mgr__client_close_session(service_mgr__session,
1594
0
            constants_statuscodes_bs__e_sc_bad_out_of_memory);
1595
0
         service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1596
0
      }
1597
0
      *service_mgr__ret = service_mgr__l_ret;
1598
0
      *service_mgr__channel = service_mgr__l_channel;
1599
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1600
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1601
0
   }
1602
0
}
1603
1604
void service_mgr__client_service_close_session(
1605
   const constants__t_session_i service_mgr__session,
1606
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1607
   constants__t_channel_i * const service_mgr__channel,
1608
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1609
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1610
0
   {
1611
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1612
0
      constants__t_msg_i service_mgr__l_req_msg;
1613
0
      constants__t_channel_i service_mgr__l_channel;
1614
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1615
0
      t_bool service_mgr__l_valid_req_handle;
1616
0
      constants__t_session_token_i service_mgr__l_session_token;
1617
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1618
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1619
      
1620
0
      service_mgr__l_channel = constants__c_channel_indet;
1621
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1622
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1623
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_close_req,
1624
0
         &service_mgr__l_msg_header,
1625
0
         &service_mgr__l_req_msg);
1626
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1627
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_close_req,
1628
0
            constants__e_msg_session_close_resp,
1629
0
            false,
1630
0
            constants__c_no_application_context,
1631
0
            &service_mgr__l_req_handle);
1632
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1633
0
            &service_mgr__l_valid_req_handle);
1634
0
         if (service_mgr__l_valid_req_handle == true) {
1635
0
            session_mgr__client_close_session_req(service_mgr__session,
1636
0
               service_mgr__l_req_handle,
1637
0
               service_mgr__l_req_msg,
1638
0
               service_mgr__ret,
1639
0
               &service_mgr__l_channel,
1640
0
               &service_mgr__l_session_token);
1641
0
            if (*service_mgr__ret == constants_statuscodes_bs__e_sc_ok) {
1642
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1643
0
                  service_mgr__l_channel);
1644
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1645
0
                  service_mgr__l_req_handle);
1646
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1647
0
                  service_mgr__l_session_token);
1648
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1649
0
                  &service_mgr__l_channel_cfg);
1650
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1651
0
                  constants__e_msg_request_type,
1652
0
                  constants__e_msg_session_close_req,
1653
0
                  service_mgr__l_msg_header,
1654
0
                  service_mgr__l_req_msg,
1655
0
                  service_mgr__ret,
1656
0
                  &service_mgr__l_buffer);
1657
0
               if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1658
0
                  service_mgr__l_channel = constants__c_channel_indet;
1659
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1660
0
                  session_mgr__client_close_session(service_mgr__session,
1661
0
                     *service_mgr__ret);
1662
0
               }
1663
0
            }
1664
0
         }
1665
0
         else {
1666
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1667
0
         }
1668
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1669
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1670
0
      }
1671
0
      else {
1672
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1673
0
      }
1674
0
      *service_mgr__channel = service_mgr__l_channel;
1675
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1676
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1677
0
   }
1678
0
}
1679
1680
void service_mgr__client_service_request(
1681
   const constants__t_session_i service_mgr__session,
1682
   const constants__t_msg_type_i service_mgr__req_typ,
1683
   const constants__t_msg_i service_mgr__req_msg,
1684
   const constants__t_application_context_i service_mgr__app_context,
1685
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1686
   constants__t_channel_i * const service_mgr__channel,
1687
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1688
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1689
0
   {
1690
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1691
0
      constants__t_msg_type_i service_mgr__l_resp_typ;
1692
0
      constants__t_channel_i service_mgr__l_channel;
1693
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1694
0
      t_bool service_mgr__l_valid_req_handle;
1695
0
      constants__t_session_token_i service_mgr__l_session_token;
1696
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1697
0
      t_bool service_mgr__l_valid_channel;
1698
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1699
      
1700
0
      service_mgr__l_channel = constants__c_channel_indet;
1701
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1702
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1703
0
      switch (service_mgr__req_typ) {
1704
0
      case constants__e_msg_node_add_nodes_req:
1705
0
      case constants__e_msg_node_add_references_req:
1706
0
      case constants__e_msg_node_delete_nodes_req:
1707
0
      case constants__e_msg_node_delete_references_req:
1708
0
      case constants__e_msg_view_browse_req:
1709
0
      case constants__e_msg_view_browse_next_req:
1710
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
1711
0
      case constants__e_msg_view_register_nodes_req:
1712
0
      case constants__e_msg_view_unregister_nodes_req:
1713
0
      case constants__e_msg_query_first_req:
1714
0
      case constants__e_msg_query_next_req:
1715
0
      case constants__e_msg_attribute_read_req:
1716
0
      case constants__e_msg_attribute_history_read_req:
1717
0
      case constants__e_msg_attribute_write_req:
1718
0
      case constants__e_msg_attribute_history_update_req:
1719
0
      case constants__e_msg_method_call_req:
1720
0
      case constants__e_msg_monitored_items_create_req:
1721
0
      case constants__e_msg_monitored_items_modify_req:
1722
0
      case constants__e_msg_monitored_items_set_monitoring_mode_req:
1723
0
      case constants__e_msg_monitored_items_set_monitoring_mode_resp:
1724
0
      case constants__e_msg_monitored_items_set_triggering_req:
1725
0
      case constants__e_msg_monitored_items_delete_req:
1726
0
      case constants__e_msg_subscription_create_req:
1727
0
      case constants__e_msg_subscription_modify_req:
1728
0
      case constants__e_msg_subscription_set_publishing_mode_req:
1729
0
      case constants__e_msg_subscription_publish_req:
1730
0
      case constants__e_msg_subscription_republish_req:
1731
0
      case constants__e_msg_subscription_transfer_subscriptions_req:
1732
0
      case constants__e_msg_subscription_delete_subscriptions_req:
1733
0
         service_mgr__get_response_type(service_mgr__req_typ,
1734
0
            &service_mgr__l_resp_typ);
1735
0
         message_out_bs__alloc_msg_header(true,
1736
0
            &service_mgr__l_msg_header);
1737
0
         request_handle_bs__client_fresh_req_handle(service_mgr__req_typ,
1738
0
            service_mgr__l_resp_typ,
1739
0
            true,
1740
0
            service_mgr__app_context,
1741
0
            &service_mgr__l_req_handle);
1742
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1743
0
            &service_mgr__l_valid_req_handle);
1744
0
         if ((service_mgr__l_valid_req_handle == true) &&
1745
0
            (service_mgr__l_msg_header != constants__c_msg_header_indet)) {
1746
0
            session_mgr__client_validate_session_service_req(service_mgr__session,
1747
0
               service_mgr__l_req_handle,
1748
0
               service_mgr__ret,
1749
0
               &service_mgr__l_channel,
1750
0
               &service_mgr__l_session_token);
1751
0
            if (*service_mgr__ret == constants_statuscodes_bs__e_sc_ok) {
1752
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1753
0
                  service_mgr__l_channel);
1754
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1755
0
                  service_mgr__l_req_handle);
1756
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1757
0
                  service_mgr__l_session_token);
1758
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1759
0
                  &service_mgr__l_channel_cfg);
1760
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1761
0
                  constants__e_msg_request_type,
1762
0
                  constants__e_msg_session_close_req,
1763
0
                  service_mgr__l_msg_header,
1764
0
                  service_mgr__req_msg,
1765
0
                  service_mgr__ret,
1766
0
                  &service_mgr__l_buffer);
1767
0
               if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1768
0
                  service_mgr__l_channel = constants__c_channel_indet;
1769
0
               }
1770
0
            }
1771
0
         }
1772
0
         else {
1773
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1774
0
         }
1775
0
         if (service_mgr__l_msg_header != constants__c_msg_header_indet) {
1776
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1777
0
         }
1778
0
         break;
1779
0
      case constants__e_msg_discovery_find_servers_req:
1780
0
      case constants__e_msg_discovery_find_servers_on_network_req:
1781
0
      case constants__e_msg_discovery_get_endpoints_req:
1782
0
      case constants__e_msg_discovery_register_server_req:
1783
0
      case constants__e_msg_discovery_register_server2_req:
1784
0
         session_mgr__getall_valid_session_channel(service_mgr__session,
1785
0
            &service_mgr__l_valid_channel,
1786
0
            &service_mgr__l_channel);
1787
0
         if (service_mgr__l_valid_channel == true) {
1788
0
            service_mgr__local_client_discovery_service_request(service_mgr__l_channel,
1789
0
               service_mgr__req_typ,
1790
0
               service_mgr__req_msg,
1791
0
               service_mgr__app_context,
1792
0
               service_mgr__ret,
1793
0
               &service_mgr__l_buffer,
1794
0
               &service_mgr__l_req_handle);
1795
0
            if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1796
0
               service_mgr__l_channel = constants__c_channel_indet;
1797
0
            }
1798
0
         }
1799
0
         else {
1800
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
1801
0
         }
1802
0
         break;
1803
0
      default:
1804
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
1805
0
         break;
1806
0
      }
1807
0
      *service_mgr__channel = service_mgr__l_channel;
1808
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1809
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1810
0
   }
1811
0
}
1812
1813
void service_mgr__client_discovery_service_request(
1814
   const constants__t_channel_i service_mgr__channel,
1815
   const constants__t_msg_type_i service_mgr__req_typ,
1816
   const constants__t_msg_i service_mgr__req_msg,
1817
   const constants__t_application_context_i service_mgr__app_context,
1818
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1819
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1820
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1821
0
   service_mgr__local_client_discovery_service_request(service_mgr__channel,
1822
0
      service_mgr__req_typ,
1823
0
      service_mgr__req_msg,
1824
0
      service_mgr__app_context,
1825
0
      service_mgr__ret,
1826
0
      service_mgr__buffer_out,
1827
0
      service_mgr__req_handle);
1828
0
}
1829
1830
void service_mgr__client_snd_msg_failure(
1831
   const constants__t_channel_i service_mgr__channel,
1832
   const constants__t_client_request_handle_i service_mgr__request_handle,
1833
0
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__error_status) {
1834
0
   {
1835
0
      t_bool service_mgr__l_valid_req_handle;
1836
0
      constants__t_channel_i service_mgr__l_req_handle_channel;
1837
0
      constants__t_msg_type_i service_mgr__l_req_typ;
1838
0
      t_bool service_mgr__l_is_applicative;
1839
0
      constants__t_application_context_i service_mgr__l_app_context;
1840
0
      constants__t_msg_type_i service_mgr__l_exp_resp_msg_typ;
1841
0
      constants__t_msg_service_class_i service_mgr__l_exp_resp_msg_class;
1842
0
      t_bool service_mgr__l_trigger_app_treatment;
1843
0
      t_bool service_mgr__l_bres;
1844
0
      constants__t_session_i service_mgr__l_session;
1845
      
1846
0
      service_mgr__l_trigger_app_treatment = false;
1847
0
      request_handle_bs__is_valid_req_handle(service_mgr__request_handle,
1848
0
         &service_mgr__l_valid_req_handle);
1849
0
      request_handle_bs__get_req_handle_channel(service_mgr__request_handle,
1850
0
         &service_mgr__l_req_handle_channel);
1851
0
      if ((service_mgr__l_valid_req_handle == true) &&
1852
0
         (service_mgr__l_req_handle_channel == service_mgr__channel)) {
1853
0
         request_handle_bs__get_req_handle_resp_typ(service_mgr__request_handle,
1854
0
            &service_mgr__l_exp_resp_msg_typ);
1855
0
         service_mgr__l_get_msg_service_class(service_mgr__l_exp_resp_msg_typ,
1856
0
            &service_mgr__l_exp_resp_msg_class);
1857
0
         switch (service_mgr__l_exp_resp_msg_class) {
1858
0
         case constants__e_msg_session_treatment_class:
1859
0
            session_mgr__client_validate_session_service_resp(service_mgr__channel,
1860
0
               service_mgr__request_handle,
1861
0
               &service_mgr__l_bres,
1862
0
               &service_mgr__l_session);
1863
0
            if (service_mgr__l_bres == true) {
1864
0
               session_mgr__client_close_session(service_mgr__l_session,
1865
0
                  constants_statuscodes_bs__e_sc_bad_request_interrupted);
1866
0
            }
1867
0
            break;
1868
0
         case constants__e_msg_session_service_class:
1869
0
            session_mgr__client_validate_session_service_req_failed(service_mgr__channel,
1870
0
               service_mgr__request_handle,
1871
0
               &service_mgr__l_trigger_app_treatment);
1872
0
            break;
1873
0
         case constants__e_msg_discovery_service_class:
1874
0
            service_mgr__l_trigger_app_treatment = true;
1875
0
            break;
1876
0
         default:
1877
0
            service_mgr__l_trigger_app_treatment = false;
1878
0
            break;
1879
0
         }
1880
0
         if (service_mgr__l_trigger_app_treatment == true) {
1881
0
            request_handle_bs__get_req_handle_app_context(service_mgr__request_handle,
1882
0
               &service_mgr__l_is_applicative,
1883
0
               &service_mgr__l_app_context);
1884
0
            request_handle_bs__get_req_handle_req_typ(service_mgr__request_handle,
1885
0
               &service_mgr__l_req_typ);
1886
0
            if (service_mgr__l_is_applicative == true) {
1887
0
               service_response_cb_bs__cli_snd_failure(service_mgr__l_req_typ,
1888
0
                  service_mgr__l_app_context,
1889
0
                  service_mgr__error_status);
1890
0
            }
1891
0
         }
1892
0
         request_handle_bs__client_remove_req_handle(service_mgr__request_handle);
1893
0
      }
1894
0
   }
1895
0
}
1896
1897
void service_mgr__server_send_publish_response(
1898
   const constants__t_session_i service_mgr__session,
1899
   const constants__t_server_request_handle_i service_mgr__req_handle,
1900
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__statusCode,
1901
   const constants__t_msg_type_i service_mgr__resp_typ,
1902
   const constants__t_msg_i service_mgr__publish_resp_msg,
1903
   t_bool * const service_mgr__bres,
1904
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1905
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1906
0
   constants__t_channel_i * const service_mgr__channel) {
1907
0
   {
1908
0
      t_bool service_mgr__l_is_valid_resp;
1909
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1910
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1911
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
1912
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1913
      
1914
0
      *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
1915
0
      *service_mgr__bres = false;
1916
0
      *service_mgr__buffer_out = constants__c_byte_buffer_indet;
1917
0
      *service_mgr__channel = constants__c_channel_indet;
1918
0
      session_mgr__server_validate_async_session_service_resp(service_mgr__session,
1919
0
         &service_mgr__l_is_valid_resp,
1920
0
         &service_mgr__l_ret,
1921
0
         service_mgr__channel);
1922
0
      if (service_mgr__l_is_valid_resp == true) {
1923
0
         message_out_bs__alloc_msg_header(false,
1924
0
            &service_mgr__l_resp_msg_header);
1925
0
         if (service_mgr__l_resp_msg_header != constants__c_msg_header_indet) {
1926
0
            message_out_bs__server_write_msg_out_header_req_handle(service_mgr__l_resp_msg_header,
1927
0
               service_mgr__req_handle);
1928
0
            message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1929
0
               service_mgr__statusCode);
1930
0
            channel_mgr__get_channel_info(*service_mgr__channel,
1931
0
               &service_mgr__l_channel_cfg);
1932
0
            message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1933
0
               constants__e_msg_response_type,
1934
0
               service_mgr__resp_typ,
1935
0
               service_mgr__l_resp_msg_header,
1936
0
               service_mgr__publish_resp_msg,
1937
0
               service_mgr__sc,
1938
0
               &service_mgr__l_buffer_out);
1939
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_resp_msg_header);
1940
0
            if (*service_mgr__sc == constants_statuscodes_bs__e_sc_ok) {
1941
0
               *service_mgr__buffer_out = service_mgr__l_buffer_out;
1942
0
               *service_mgr__bres = true;
1943
0
            }
1944
0
         }
1945
0
         else {
1946
0
            *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1947
0
         }
1948
0
      }
1949
0
   }
1950
0
}
1951
1952
void service_mgr__internal_server_inactive_session_prio_event(
1953
   const constants__t_session_i service_mgr__p_session,
1954
   const constants__t_sessionState_i service_mgr__p_newSessionState,
1955
0
   t_bool * const service_mgr__bres) {
1956
0
   if (service_mgr__p_session != constants__c_session_indet) {
1957
0
      *service_mgr__bres = true;
1958
0
      subscription_mgr__server_subscription_session_inactive(service_mgr__p_session,
1959
0
         service_mgr__p_newSessionState);
1960
0
      if (service_mgr__p_newSessionState == constants__e_session_closed) {
1961
0
         service_set_view__service_set_view_set_session_closed(service_mgr__p_session);
1962
0
      }
1963
0
   }
1964
0
   else {
1965
0
      *service_mgr__bres = false;
1966
0
   }
1967
0
}
1968
1969
0
void service_mgr__service_mgr_UNINITIALISATION(void) {
1970
0
   subscription_mgr__subscription_mgr_UNINITIALISATION();
1971
0
   session_mgr__session_mgr_UNINITIALISATION();
1972
0
   service_set_view__service_set_view_UNINITIALISATION();
1973
0
   service_set_discovery_server__service_set_discovery_server_UNINITIALISATION();
1974
0
   service_mgr_bs__service_mgr_bs_UNINITIALISATION();
1975
0
   address_space_itf__address_space_UNINITIALISATION();
1976
0
}
1977