Coverage Report

Created: 2025-07-01 06:54

/src/S2OPC/src/ClientServer/services/bgenc/service_mgr.c
Line
Count
Source (jump to first uncovered line)
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                 : 09/12/2024 17:07:51
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
      default:
318
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
319
0
         break;
320
0
      }
321
0
      if (service_mgr__l_node_management_done == true) {
322
0
         service_set_view__service_set_view_service_node_management_used();
323
0
      }
324
0
   }
325
0
}
326
327
void service_mgr__treat_session_nano_service_req(
328
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
329
   const constants__t_session_i service_mgr__session,
330
   const constants__t_msg_type_i service_mgr__req_typ,
331
   const constants__t_msg_i service_mgr__req_msg,
332
   const constants__t_msg_i service_mgr__resp_msg,
333
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service) {
334
0
   {
335
0
      constants__t_user_i service_mgr__l_user;
336
0
      constants__t_LocaleIds_i service_mgr__l_locales;
337
      
338
0
      switch (service_mgr__req_typ) {
339
0
      case constants__e_msg_attribute_read_req:
340
0
         session_mgr__get_session_user_server(service_mgr__session,
341
0
            &service_mgr__l_user);
342
0
         session_mgr__get_server_session_preferred_locales(service_mgr__session,
343
0
            &service_mgr__l_locales);
344
0
         service_read__treat_read_request(service_mgr__l_user,
345
0
            service_mgr__l_locales,
346
0
            service_mgr__req_msg,
347
0
            service_mgr__resp_msg,
348
0
            service_mgr__StatusCode_service);
349
0
         break;
350
0
      case constants__e_msg_attribute_write_req:
351
0
         session_mgr__get_session_user_server(service_mgr__session,
352
0
            &service_mgr__l_user);
353
0
         constants__get_SupportedLocales(service_mgr__endpoint_config_idx,
354
0
            &service_mgr__l_locales);
355
0
         address_space_itf__treat_write_request(service_mgr__l_user,
356
0
            service_mgr__l_locales,
357
0
            service_mgr__req_msg,
358
0
            service_mgr__resp_msg,
359
0
            service_mgr__StatusCode_service);
360
0
         break;
361
0
      case constants__e_msg_view_browse_req:
362
0
         service_set_view__treat_browse_request(service_mgr__session,
363
0
            service_mgr__req_msg,
364
0
            service_mgr__resp_msg,
365
0
            service_mgr__StatusCode_service);
366
0
         break;
367
0
      case constants__e_msg_view_browse_next_req:
368
0
         service_set_view__treat_browse_next_request(service_mgr__session,
369
0
            service_mgr__req_msg,
370
0
            service_mgr__resp_msg,
371
0
            service_mgr__StatusCode_service);
372
0
         break;
373
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
374
0
         service_set_view__treat_translate_browse_paths_request(service_mgr__req_msg,
375
0
            service_mgr__resp_msg,
376
0
            service_mgr__StatusCode_service);
377
0
         break;
378
0
      case constants__e_msg_view_register_nodes_req:
379
0
         service_register_nodes__treat_register_nodes_request(service_mgr__req_msg,
380
0
            service_mgr__resp_msg,
381
0
            service_mgr__StatusCode_service);
382
0
         break;
383
0
      case constants__e_msg_view_unregister_nodes_req:
384
0
         service_unregister_nodes__treat_unregister_nodes_request(service_mgr__req_msg,
385
0
            service_mgr__StatusCode_service);
386
0
         break;
387
0
      default:
388
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
389
0
         break;
390
0
      }
391
0
   }
392
0
}
393
394
void service_mgr__treat_session_nano_extended_service_req(
395
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
396
   const constants__t_session_i service_mgr__session,
397
   const constants__t_msg_type_i service_mgr__req_typ,
398
   const constants__t_server_request_handle_i service_mgr__req_handle,
399
   const constants__t_request_context_i service_mgr__req_ctx,
400
   const constants__t_msg_header_i service_mgr__req_header,
401
   const constants__t_msg_i service_mgr__req_msg,
402
   const constants__t_msg_i service_mgr__resp_msg,
403
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service,
404
0
   t_bool * const service_mgr__async_resp_msg) {
405
0
   {
406
0
      constants__t_user_i service_mgr__l_user;
407
0
      t_bool service_mgr__l_node_management_done;
408
0
      t_bool service_mgr__l_bres;
409
      
410
0
      service_mgr__l_node_management_done = false;
411
0
      *service_mgr__async_resp_msg = false;
412
0
      switch (service_mgr__req_typ) {
413
0
      case constants__e_msg_attribute_read_req:
414
0
      case constants__e_msg_attribute_write_req:
415
0
      case constants__e_msg_view_browse_req:
416
0
      case constants__e_msg_view_browse_next_req:
417
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
418
0
      case constants__e_msg_view_register_nodes_req:
419
0
      case constants__e_msg_view_unregister_nodes_req:
420
0
         service_mgr__treat_session_nano_service_req(service_mgr__endpoint_config_idx,
421
0
            service_mgr__session,
422
0
            service_mgr__req_typ,
423
0
            service_mgr__req_msg,
424
0
            service_mgr__resp_msg,
425
0
            service_mgr__StatusCode_service);
426
0
         break;
427
0
      case constants__e_msg_subscription_create_req:
428
0
         subscription_mgr__treat_create_subscription_request(service_mgr__session,
429
0
            service_mgr__req_msg,
430
0
            service_mgr__resp_msg,
431
0
            service_mgr__StatusCode_service);
432
0
         break;
433
0
      case constants__e_msg_subscription_modify_req:
434
0
         subscription_mgr__treat_modify_subscription_request(service_mgr__session,
435
0
            service_mgr__req_msg,
436
0
            service_mgr__resp_msg,
437
0
            service_mgr__StatusCode_service);
438
0
         break;
439
0
      case constants__e_msg_subscription_delete_subscriptions_req:
440
0
         subscription_mgr__treat_delete_subscriptions_request(service_mgr__session,
441
0
            service_mgr__req_msg,
442
0
            service_mgr__resp_msg,
443
0
            service_mgr__StatusCode_service);
444
0
         break;
445
0
      case constants__e_msg_subscription_set_publishing_mode_req:
446
0
         subscription_mgr__treat_publishing_mode_request(service_mgr__session,
447
0
            service_mgr__req_msg,
448
0
            service_mgr__resp_msg,
449
0
            service_mgr__StatusCode_service);
450
0
         break;
451
0
      case constants__e_msg_subscription_publish_req:
452
0
         subscription_mgr__treat_subscription_publish_request(service_mgr__session,
453
0
            service_mgr__req_header,
454
0
            service_mgr__req_msg,
455
0
            service_mgr__req_handle,
456
0
            service_mgr__req_ctx,
457
0
            service_mgr__resp_msg,
458
0
            service_mgr__StatusCode_service,
459
0
            service_mgr__async_resp_msg);
460
0
         break;
461
0
      case constants__e_msg_subscription_republish_req:
462
0
         subscription_mgr__treat_subscription_republish_request(service_mgr__session,
463
0
            service_mgr__req_msg,
464
0
            service_mgr__resp_msg,
465
0
            service_mgr__StatusCode_service);
466
0
         break;
467
0
      case constants__e_msg_monitored_items_create_req:
468
0
         session_mgr__get_session_user_server(service_mgr__session,
469
0
            &service_mgr__l_user);
470
0
         subscription_mgr__treat_subscription_create_monitored_items_req(service_mgr__session,
471
0
            service_mgr__l_user,
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_modify_req:
477
0
         subscription_mgr__treat_subscription_modify_monitored_items_req(service_mgr__session,
478
0
            service_mgr__req_msg,
479
0
            service_mgr__resp_msg,
480
0
            service_mgr__StatusCode_service);
481
0
         break;
482
0
      case constants__e_msg_monitored_items_delete_req:
483
0
         subscription_mgr__treat_subscription_delete_monitored_items_req(service_mgr__session,
484
0
            service_mgr__req_msg,
485
0
            service_mgr__resp_msg,
486
0
            service_mgr__StatusCode_service);
487
0
         break;
488
0
      case constants__e_msg_monitored_items_set_monitoring_mode_req:
489
0
         subscription_mgr__treat_subscription_set_monit_mode_monitored_items_req(service_mgr__session,
490
0
            service_mgr__req_msg,
491
0
            service_mgr__resp_msg,
492
0
            service_mgr__StatusCode_service);
493
0
         break;
494
0
      case constants__e_msg_method_call_req:
495
0
         session_mgr__get_session_user_server(service_mgr__session,
496
0
            &service_mgr__l_user);
497
0
         address_space_itf__treat_method_call_request(service_mgr__l_user,
498
0
            service_mgr__endpoint_config_idx,
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_node_add_nodes_req:
504
0
         constants__is_ClientNodeManagementActive(&service_mgr__l_bres);
505
0
         if (service_mgr__l_bres == true) {
506
0
            session_mgr__get_session_user_server(service_mgr__session,
507
0
               &service_mgr__l_user);
508
0
            address_space_itf__treat_add_nodes_request(service_mgr__l_user,
509
0
               service_mgr__req_msg,
510
0
               service_mgr__resp_msg,
511
0
               service_mgr__StatusCode_service);
512
0
            service_mgr__l_node_management_done = (*service_mgr__StatusCode_service == constants_statuscodes_bs__e_sc_ok);
513
0
         }
514
0
         else {
515
0
            *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
516
0
         }
517
0
         break;
518
0
      default:
519
0
         *service_mgr__StatusCode_service = constants_statuscodes_bs__e_sc_bad_service_unsupported;
520
0
         break;
521
0
      }
522
0
      if (service_mgr__l_node_management_done == true) {
523
0
         service_set_view__service_set_view_service_node_management_used();
524
0
      }
525
0
   }
526
0
}
527
528
void service_mgr__decode_and_treat_session_service_req(
529
   const constants__t_channel_i service_mgr__p_channel,
530
   const constants__t_msg_type_i service_mgr__p_req_typ,
531
   const constants__t_request_context_i service_mgr__p_req_context,
532
   const constants__t_byte_buffer_i service_mgr__p_msg_buffer,
533
   const constants__t_msg_header_i service_mgr__p_req_header,
534
   const constants__t_server_request_handle_i service_mgr__p_req_handle,
535
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
536
   t_bool * const service_mgr__p_valid_req,
537
   t_bool * const service_mgr__p_async,
538
   constants__t_msg_type_i * const service_mgr__p_resp_typ,
539
   constants__t_msg_header_i * const service_mgr__p_resp_header,
540
0
   constants__t_msg_i * const service_mgr__p_resp_msg) {
541
0
   {
542
0
      constants__t_session_token_i service_mgr__l_session_token;
543
0
      t_bool service_mgr__l_is_valid_req_on_session;
544
0
      constants__t_session_i service_mgr__l_session;
545
0
      constants__t_endpoint_config_idx_i service_mgr__l_endpoint_config_idx;
546
0
      t_bool service_mgr__l_is_valid_ep_config_idx;
547
0
      constants__t_msg_i service_mgr__l_req_msg;
548
      
549
0
      *service_mgr__p_resp_typ = constants__c_msg_type_indet;
550
0
      *service_mgr__p_resp_header = constants__c_msg_header_indet;
551
0
      *service_mgr__p_resp_msg = constants__c_msg_indet;
552
0
      *service_mgr__p_async = false;
553
0
      message_in_bs__read_msg_req_header_session_token(service_mgr__p_req_header,
554
0
         &service_mgr__l_session_token);
555
0
      session_mgr__server_validate_session_service_req(service_mgr__p_channel,
556
0
         service_mgr__l_session_token,
557
0
         &service_mgr__l_is_valid_req_on_session,
558
0
         &service_mgr__l_session,
559
0
         service_mgr__p_sc);
560
0
      channel_mgr__server_get_endpoint_config(service_mgr__p_channel,
561
0
         &service_mgr__l_endpoint_config_idx);
562
0
      channel_mgr__is_valid_endpoint_config_idx(service_mgr__l_endpoint_config_idx,
563
0
         &service_mgr__l_is_valid_ep_config_idx);
564
0
      if ((service_mgr__l_is_valid_req_on_session == true) &&
565
0
         (service_mgr__l_is_valid_ep_config_idx == true)) {
566
0
         message_in_bs__decode_msg(service_mgr__p_req_typ,
567
0
            service_mgr__p_msg_buffer,
568
0
            service_mgr__p_valid_req,
569
0
            &service_mgr__l_req_msg);
570
0
         if (*service_mgr__p_valid_req == true) {
571
0
            service_mgr__get_response_type(service_mgr__p_req_typ,
572
0
               service_mgr__p_resp_typ);
573
0
            message_out_bs__alloc_resp_msg(*service_mgr__p_resp_typ,
574
0
               service_mgr__p_resp_header,
575
0
               service_mgr__p_resp_msg);
576
0
            if (*service_mgr__p_resp_msg != constants__c_msg_indet) {
577
0
               service_mgr__treat_session_service_req(service_mgr__l_endpoint_config_idx,
578
0
                  service_mgr__l_session,
579
0
                  service_mgr__p_req_typ,
580
0
                  service_mgr__p_req_handle,
581
0
                  service_mgr__p_req_context,
582
0
                  service_mgr__p_req_header,
583
0
                  service_mgr__l_req_msg,
584
0
                  *service_mgr__p_resp_msg,
585
0
                  service_mgr__p_sc,
586
0
                  service_mgr__p_async);
587
0
            }
588
0
            else {
589
0
               *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
590
0
            }
591
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
592
0
         }
593
0
         else {
594
0
            *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_decoding_error;
595
0
         }
596
0
      }
597
0
      else {
598
0
         *service_mgr__p_valid_req = true;
599
0
      }
600
0
   }
601
0
}
602
603
void service_mgr__treat_session_service_req(
604
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
605
   const constants__t_session_i service_mgr__session,
606
   const constants__t_msg_type_i service_mgr__req_typ,
607
   const constants__t_server_request_handle_i service_mgr__req_handle,
608
   const constants__t_request_context_i service_mgr__req_ctx,
609
   const constants__t_msg_header_i service_mgr__req_header,
610
   const constants__t_msg_i service_mgr__req_msg,
611
   const constants__t_msg_i service_mgr__resp_msg,
612
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service,
613
0
   t_bool * const service_mgr__async_resp_msg) {
614
0
   {
615
0
      constants__t_user_i service_mgr__l_user;
616
0
      constants__t_sessionRoles_i service_mgr__l_roles;
617
      
618
0
      *service_mgr__async_resp_msg = false;
619
0
      session_mgr__get_session_user_server(service_mgr__session,
620
0
         &service_mgr__l_user);
621
0
      session_mgr__get_session_roles(service_mgr__session,
622
0
         &service_mgr__l_roles);
623
0
      address_space_itf__set_user_roles(service_mgr__l_user,
624
0
         service_mgr__l_roles);
625
0
      if (constants__c_Server_Nano_Extended == true) {
626
0
         service_mgr__treat_session_nano_extended_service_req(service_mgr__endpoint_config_idx,
627
0
            service_mgr__session,
628
0
            service_mgr__req_typ,
629
0
            service_mgr__req_handle,
630
0
            service_mgr__req_ctx,
631
0
            service_mgr__req_header,
632
0
            service_mgr__req_msg,
633
0
            service_mgr__resp_msg,
634
0
            service_mgr__StatusCode_service,
635
0
            service_mgr__async_resp_msg);
636
0
      }
637
0
      else {
638
0
         service_mgr__treat_session_nano_service_req(service_mgr__endpoint_config_idx,
639
0
            service_mgr__session,
640
0
            service_mgr__req_typ,
641
0
            service_mgr__req_msg,
642
0
            service_mgr__resp_msg,
643
0
            service_mgr__StatusCode_service);
644
0
      }
645
0
      address_space_itf__clear_user_roles();
646
0
   }
647
0
}
648
649
void service_mgr__encode_session_service_resp(
650
   const constants__t_server_request_handle_i service_mgr__p_request_handle,
651
   const constants__t_channel_i service_mgr__p_channel,
652
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__p_msg_sc,
653
   const constants__t_msg_type_i service_mgr__p_msg_type,
654
   const constants__t_msg_header_i service_mgr__p_msg_header,
655
   const constants__t_msg_i service_mgr__p_msg,
656
   const t_bool service_mgr__p_async,
657
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
658
0
   constants__t_byte_buffer_i * const service_mgr__p_buffer_out) {
659
0
   {
660
0
      constants__t_msg_type_i service_mgr__l_msg_type;
661
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
662
      
663
0
      *service_mgr__p_sc = constants_statuscodes_bs__c_StatusCode_indet;
664
0
      *service_mgr__p_buffer_out = constants__c_byte_buffer_indet;
665
0
      if (service_mgr__p_async == false) {
666
0
         if (service_mgr__p_msg_sc == constants_statuscodes_bs__e_sc_ok) {
667
0
            service_mgr__l_msg_type = service_mgr__p_msg_type;
668
0
         }
669
0
         else {
670
0
            service_mgr__l_msg_type = constants__e_msg_service_fault_resp;
671
0
         }
672
0
         message_out_bs__server_write_msg_out_header_req_handle(service_mgr__p_msg_header,
673
0
            service_mgr__p_request_handle);
674
0
         message_out_bs__write_msg_resp_header_service_status(service_mgr__p_msg_header,
675
0
            service_mgr__p_msg_sc);
676
0
         channel_mgr__get_channel_info(service_mgr__p_channel,
677
0
            &service_mgr__l_channel_cfg);
678
0
         message_out_bs__encode_msg(service_mgr__l_channel_cfg,
679
0
            constants__e_msg_response_type,
680
0
            service_mgr__l_msg_type,
681
0
            service_mgr__p_msg_header,
682
0
            service_mgr__p_msg,
683
0
            service_mgr__p_sc,
684
0
            service_mgr__p_buffer_out);
685
0
         message_out_bs__dealloc_msg_header_out(service_mgr__p_msg_header);
686
0
         message_out_bs__dealloc_msg_out(service_mgr__p_msg);
687
0
      }
688
0
      else {
689
0
         message_out_bs__dealloc_msg_header_out(service_mgr__p_msg_header);
690
0
         message_out_bs__forget_msg_out(service_mgr__p_msg);
691
0
      }
692
0
   }
693
0
}
694
695
void service_mgr__alloc_and_encode_session_service_fault_resp(
696
   const constants__t_server_request_handle_i service_mgr__p_request_handle,
697
   const constants__t_channel_i service_mgr__p_channel,
698
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__p_msg_sc,
699
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__p_sc,
700
0
   constants__t_byte_buffer_i * const service_mgr__p_buffer_out) {
701
0
   {
702
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
703
0
      constants__t_msg_i service_mgr__l_resp_msg;
704
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
705
      
706
0
      *service_mgr__p_buffer_out = constants__c_byte_buffer_indet;
707
0
      service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
708
0
      message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
709
0
         &service_mgr__l_resp_msg_header,
710
0
         &service_mgr__l_resp_msg);
711
0
      if (service_mgr__l_resp_msg != constants__c_msg_indet) {
712
0
         service_mgr__encode_session_service_resp(service_mgr__p_request_handle,
713
0
            service_mgr__p_channel,
714
0
            service_mgr__p_msg_sc,
715
0
            service_mgr__l_resp_msg_typ,
716
0
            service_mgr__l_resp_msg_header,
717
0
            service_mgr__l_resp_msg,
718
0
            false,
719
0
            service_mgr__p_sc,
720
0
            service_mgr__p_buffer_out);
721
0
      }
722
0
      else {
723
0
         *service_mgr__p_sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
724
0
      }
725
0
   }
726
0
}
727
728
void service_mgr__treat_discovery_service_req(
729
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
730
   const constants__t_msg_type_i service_mgr__req_typ,
731
   const constants__t_msg_i service_mgr__req_msg,
732
   const constants__t_msg_i service_mgr__resp_msg,
733
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__StatusCode_service) {
734
0
   {
735
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
736
0
      constants__t_ApplicationDescription_i service_mgr__l_app_desc;
737
0
      t_bool service_mgr__l_is_discovery_server;
738
      
739
0
      service_set_discovery_server__get_ApplicationDescription(service_mgr__endpoint_config_idx,
740
0
         &service_mgr__l_app_desc);
741
0
      service_set_discovery_server__is_ApplicationDescription_DiscoveryServerType(service_mgr__l_app_desc,
742
0
         &service_mgr__l_is_discovery_server);
743
0
      switch (service_mgr__req_typ) {
744
0
      case constants__e_msg_discovery_get_endpoints_req:
745
0
         service_get_endpoints_bs__treat_get_endpoints_request(service_mgr__req_msg,
746
0
            service_mgr__resp_msg,
747
0
            service_mgr__endpoint_config_idx,
748
0
            &service_mgr__l_ret);
749
0
         break;
750
0
      case constants__e_msg_discovery_find_servers_req:
751
0
         service_set_discovery_server__treat_find_servers_request(service_mgr__req_msg,
752
0
            service_mgr__resp_msg,
753
0
            service_mgr__endpoint_config_idx,
754
0
            &service_mgr__l_ret);
755
0
         break;
756
0
      default:
757
0
         if (service_mgr__l_is_discovery_server == true) {
758
0
            switch (service_mgr__req_typ) {
759
0
            case constants__e_msg_discovery_find_servers_on_network_req:
760
0
               service_set_discovery_server__treat_find_servers_on_network_request(service_mgr__req_msg,
761
0
                  service_mgr__resp_msg,
762
0
                  &service_mgr__l_ret);
763
0
               break;
764
0
            case constants__e_msg_discovery_register_server2_req:
765
0
               service_set_discovery_server__treat_register_server2_request(service_mgr__req_msg,
766
0
                  service_mgr__resp_msg,
767
0
                  &service_mgr__l_ret);
768
0
               break;
769
0
            default:
770
0
               service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
771
0
               break;
772
0
            }
773
0
         }
774
0
         else {
775
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
776
0
         }
777
0
         break;
778
0
      }
779
0
      *service_mgr__StatusCode_service = service_mgr__l_ret;
780
0
   }
781
0
}
782
783
void service_mgr__local_client_discovery_service_request(
784
   const constants__t_channel_i service_mgr__channel,
785
   const constants__t_msg_type_i service_mgr__req_typ,
786
   const constants__t_msg_i service_mgr__req_msg,
787
   const constants__t_application_context_i service_mgr__app_context,
788
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
789
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
790
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
791
0
   {
792
0
      constants__t_msg_header_i service_mgr__l_msg_header;
793
0
      constants__t_msg_type_i service_mgr__l_resp_typ;
794
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
795
0
      t_bool service_mgr__l_valid_req_handle;
796
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
797
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
798
      
799
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
800
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
801
0
      switch (service_mgr__req_typ) {
802
0
      case constants__e_msg_discovery_find_servers_req:
803
0
      case constants__e_msg_discovery_find_servers_on_network_req:
804
0
      case constants__e_msg_discovery_get_endpoints_req:
805
0
      case constants__e_msg_discovery_register_server_req:
806
0
      case constants__e_msg_discovery_register_server2_req:
807
0
         service_mgr__get_response_type(service_mgr__req_typ,
808
0
            &service_mgr__l_resp_typ);
809
0
         message_out_bs__alloc_msg_header(true,
810
0
            &service_mgr__l_msg_header);
811
0
         request_handle_bs__client_fresh_req_handle(service_mgr__req_typ,
812
0
            service_mgr__l_resp_typ,
813
0
            true,
814
0
            service_mgr__app_context,
815
0
            &service_mgr__l_req_handle);
816
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
817
0
            &service_mgr__l_valid_req_handle);
818
0
         if ((service_mgr__l_valid_req_handle == true) &&
819
0
            (service_mgr__l_msg_header != constants__c_msg_header_indet)) {
820
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
821
0
               service_mgr__channel);
822
0
            message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
823
0
               service_mgr__l_req_handle);
824
0
            channel_mgr__get_channel_info(service_mgr__channel,
825
0
               &service_mgr__l_channel_cfg);
826
0
            message_out_bs__encode_msg(service_mgr__l_channel_cfg,
827
0
               constants__e_msg_request_type,
828
0
               service_mgr__req_typ,
829
0
               service_mgr__l_msg_header,
830
0
               service_mgr__req_msg,
831
0
               service_mgr__ret,
832
0
               &service_mgr__l_buffer);
833
0
            if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
834
0
               service_mgr__l_req_handle = constants__c_client_request_handle_indet;
835
0
            }
836
0
         }
837
0
         else {
838
0
            service_mgr__l_req_handle = constants__c_client_request_handle_indet;
839
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
840
0
         }
841
0
         if (service_mgr__l_msg_header != constants__c_msg_header_indet) {
842
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
843
0
         }
844
0
         break;
845
0
      default:
846
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
847
0
         break;
848
0
      }
849
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
850
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
851
0
   }
852
0
}
853
854
void service_mgr__client_service_fault_to_resp_type(
855
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
856
   t_bool * const service_mgr__valid,
857
0
   constants__t_msg_type_i * const service_mgr__resp_typ) {
858
0
   {
859
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
860
      
861
0
      message_in_bs__decode_service_fault_msg_req_handle(service_mgr__msg_buffer,
862
0
         &service_mgr__l_request_handle);
863
0
      request_handle_bs__is_valid_req_handle(service_mgr__l_request_handle,
864
0
         service_mgr__valid);
865
0
      if (*service_mgr__valid == true) {
866
0
         request_handle_bs__get_req_handle_resp_typ(service_mgr__l_request_handle,
867
0
            service_mgr__resp_typ);
868
0
      }
869
0
      else {
870
0
         *service_mgr__resp_typ = constants__c_msg_type_indet;
871
0
      }
872
0
   }
873
0
}
874
875
void service_mgr__server_receive_session_treatment_req(
876
   const constants__t_channel_i service_mgr__channel,
877
   const constants__t_msg_type_i service_mgr__req_typ,
878
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
879
   t_bool * const service_mgr__valid_req_header,
880
   t_bool * const service_mgr__valid_req,
881
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
882
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
883
0
   {
884
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
885
0
      constants__t_msg_i service_mgr__l_req_msg;
886
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
887
0
      constants__t_session_token_i service_mgr__l_session_token;
888
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
889
0
      constants__t_msg_i service_mgr__l_resp_msg;
890
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
891
0
      constants__t_session_i service_mgr__l_session;
892
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
893
0
      t_bool service_mgr__l_secu_failed;
894
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
895
      
896
0
      *service_mgr__valid_req = false;
897
0
      *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_decoding_error;
898
0
      service_mgr__l_buffer_out = constants__c_byte_buffer_indet;
899
0
      message_in_bs__decode_msg_header(true,
900
0
         service_mgr__msg_buffer,
901
0
         service_mgr__valid_req_header,
902
0
         &service_mgr__l_req_msg_header);
903
0
      if (*service_mgr__valid_req_header == true) {
904
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
905
0
            &service_mgr__l_request_handle);
906
0
         message_in_bs__read_msg_req_header_session_token(service_mgr__l_req_msg_header,
907
0
            &service_mgr__l_session_token);
908
0
         message_in_bs__decode_msg(service_mgr__req_typ,
909
0
            service_mgr__msg_buffer,
910
0
            service_mgr__valid_req,
911
0
            &service_mgr__l_req_msg);
912
0
         if (*service_mgr__valid_req == true) {
913
0
            service_mgr__get_response_type(service_mgr__req_typ,
914
0
               &service_mgr__l_resp_msg_typ);
915
0
            message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
916
0
               &service_mgr__l_resp_msg_header,
917
0
               &service_mgr__l_resp_msg);
918
0
            if (service_mgr__l_resp_msg != constants__c_msg_indet) {
919
0
               session_mgr__server_receive_session_req(service_mgr__channel,
920
0
                  service_mgr__l_session_token,
921
0
                  service_mgr__l_req_msg,
922
0
                  service_mgr__req_typ,
923
0
                  service_mgr__l_resp_msg,
924
0
                  &service_mgr__l_session,
925
0
                  &service_mgr__l_ret,
926
0
                  &service_mgr__l_secu_failed);
927
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
928
0
                  service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
929
0
               }
930
0
               service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
931
0
                  service_mgr__channel,
932
0
                  service_mgr__l_ret,
933
0
                  service_mgr__l_resp_msg_typ,
934
0
                  service_mgr__l_resp_msg_header,
935
0
                  service_mgr__l_resp_msg,
936
0
                  false,
937
0
                  service_mgr__sc,
938
0
                  &service_mgr__l_buffer_out);
939
0
               if (*service_mgr__sc != constants_statuscodes_bs__e_sc_ok) {
940
0
                  session_mgr__server_close_session(service_mgr__l_session,
941
0
                     constants_statuscodes_bs__e_sc_bad_encoding_error);
942
0
               }
943
0
               if (service_mgr__l_secu_failed == true) {
944
0
                  *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_security_checks_failed;
945
0
               }
946
0
            }
947
0
            else {
948
0
               *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
949
0
            }
950
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
951
0
         }
952
0
         else {
953
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
954
0
               service_mgr__channel,
955
0
               constants_statuscodes_bs__e_sc_bad_decoding_error,
956
0
               service_mgr__sc,
957
0
               &service_mgr__l_buffer_out);
958
0
         }
959
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
960
0
      }
961
0
      *service_mgr__buffer_out = service_mgr__l_buffer_out;
962
0
   }
963
0
}
964
965
void service_mgr__client_receive_session_treatment_resp(
966
   const constants__t_channel_i service_mgr__channel,
967
   const constants__t_msg_type_i service_mgr__resp_typ,
968
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
969
0
   t_bool * const service_mgr__valid_resp) {
970
0
   {
971
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
972
0
      t_bool service_mgr__l_valid_resp_header;
973
0
      constants__t_msg_i service_mgr__l_resp_msg;
974
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
975
0
      t_bool service_mgr__l_validated_req_handle;
976
0
      constants__t_session_i service_mgr__l_session;
977
      
978
0
      *service_mgr__valid_resp = false;
979
0
      message_in_bs__decode_msg_header(false,
980
0
         service_mgr__msg_buffer,
981
0
         &service_mgr__l_valid_resp_header,
982
0
         &service_mgr__l_resp_msg_header);
983
0
      if (service_mgr__l_valid_resp_header == true) {
984
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
985
0
            &service_mgr__l_request_handle);
986
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
987
0
            service_mgr__l_request_handle,
988
0
            service_mgr__resp_typ,
989
0
            &service_mgr__l_validated_req_handle);
990
0
         if (service_mgr__l_validated_req_handle == true) {
991
0
            message_in_bs__decode_msg(service_mgr__resp_typ,
992
0
               service_mgr__msg_buffer,
993
0
               service_mgr__valid_resp,
994
0
               &service_mgr__l_resp_msg);
995
0
            if (*service_mgr__valid_resp == true) {
996
0
               session_mgr__client_receive_session_resp(service_mgr__channel,
997
0
                  service_mgr__l_request_handle,
998
0
                  service_mgr__resp_typ,
999
0
                  service_mgr__l_resp_msg_header,
1000
0
                  service_mgr__l_resp_msg,
1001
0
                  &service_mgr__l_session);
1002
0
               message_in_bs__dealloc_msg_in(service_mgr__l_resp_msg);
1003
0
            }
1004
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1005
0
         }
1006
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1007
0
      }
1008
0
   }
1009
0
}
1010
1011
void service_mgr__server_receive_session_service_req(
1012
   const constants__t_channel_i service_mgr__channel,
1013
   const constants__t_msg_type_i service_mgr__req_typ,
1014
   const constants__t_request_context_i service_mgr__req_context,
1015
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1016
   t_bool * const service_mgr__valid_req_header,
1017
   t_bool * const service_mgr__valid_req,
1018
   t_bool * const service_mgr__async_resp,
1019
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1020
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
1021
0
   {
1022
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
1023
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
1024
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1025
0
      constants__t_msg_i service_mgr__l_resp_msg;
1026
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1027
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1028
      
1029
0
      *service_mgr__sc = constants_statuscodes_bs__c_StatusCode_indet;
1030
0
      *service_mgr__valid_req = false;
1031
0
      service_mgr__l_resp_msg_typ = constants__c_msg_type_indet;
1032
0
      service_mgr__l_resp_msg_header = constants__c_msg_header_indet;
1033
0
      service_mgr__l_resp_msg = constants__c_msg_indet;
1034
0
      *service_mgr__async_resp = false;
1035
0
      *service_mgr__buffer_out = constants__c_byte_buffer_indet;
1036
0
      message_in_bs__decode_msg_header(true,
1037
0
         service_mgr__msg_buffer,
1038
0
         service_mgr__valid_req_header,
1039
0
         &service_mgr__l_req_msg_header);
1040
0
      if (*service_mgr__valid_req_header == true) {
1041
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
1042
0
            &service_mgr__l_request_handle);
1043
0
         service_mgr__decode_and_treat_session_service_req(service_mgr__channel,
1044
0
            service_mgr__req_typ,
1045
0
            service_mgr__req_context,
1046
0
            service_mgr__msg_buffer,
1047
0
            service_mgr__l_req_msg_header,
1048
0
            service_mgr__l_request_handle,
1049
0
            &service_mgr__l_ret,
1050
0
            service_mgr__valid_req,
1051
0
            service_mgr__async_resp,
1052
0
            &service_mgr__l_resp_msg_typ,
1053
0
            &service_mgr__l_resp_msg_header,
1054
0
            &service_mgr__l_resp_msg);
1055
0
         if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1056
0
            service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
1057
0
               service_mgr__channel,
1058
0
               service_mgr__l_ret,
1059
0
               service_mgr__l_resp_msg_typ,
1060
0
               service_mgr__l_resp_msg_header,
1061
0
               service_mgr__l_resp_msg,
1062
0
               *service_mgr__async_resp,
1063
0
               service_mgr__sc,
1064
0
               service_mgr__buffer_out);
1065
0
         }
1066
0
         else {
1067
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
1068
0
               service_mgr__channel,
1069
0
               service_mgr__l_ret,
1070
0
               service_mgr__sc,
1071
0
               service_mgr__buffer_out);
1072
0
         }
1073
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
1074
0
      }
1075
0
   }
1076
0
}
1077
1078
void service_mgr__client_receive_session_service_resp(
1079
   const constants__t_channel_i service_mgr__channel,
1080
   const constants__t_msg_type_i service_mgr__resp_typ,
1081
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1082
0
   t_bool * const service_mgr__valid_resp) {
1083
0
   {
1084
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1085
0
      t_bool service_mgr__l_valid_resp_header;
1086
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
1087
0
      t_bool service_mgr__l_validated_req_handle;
1088
0
      constants__t_application_context_i service_mgr__l_user_app_context;
1089
0
      t_bool service_mgr__l_is_applicative_response;
1090
0
      t_bool service_mgr__l_is_valid_session_resp;
1091
0
      constants__t_session_i service_mgr__l_session;
1092
0
      constants__t_msg_i service_mgr__l_resp_msg;
1093
      
1094
0
      *service_mgr__valid_resp = false;
1095
0
      message_in_bs__decode_msg_header(false,
1096
0
         service_mgr__msg_buffer,
1097
0
         &service_mgr__l_valid_resp_header,
1098
0
         &service_mgr__l_resp_msg_header);
1099
0
      if (service_mgr__l_valid_resp_header == true) {
1100
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
1101
0
            &service_mgr__l_request_handle);
1102
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
1103
0
            service_mgr__l_request_handle,
1104
0
            service_mgr__resp_typ,
1105
0
            &service_mgr__l_validated_req_handle);
1106
0
         if (service_mgr__l_validated_req_handle == true) {
1107
0
            request_handle_bs__get_req_handle_app_context(service_mgr__l_request_handle,
1108
0
               &service_mgr__l_is_applicative_response,
1109
0
               &service_mgr__l_user_app_context);
1110
0
            session_mgr__client_validate_session_service_resp(service_mgr__channel,
1111
0
               service_mgr__l_request_handle,
1112
0
               &service_mgr__l_is_valid_session_resp,
1113
0
               &service_mgr__l_session);
1114
0
            if (service_mgr__l_is_valid_session_resp == true) {
1115
0
               message_in_bs__decode_msg(service_mgr__resp_typ,
1116
0
                  service_mgr__msg_buffer,
1117
0
                  service_mgr__valid_resp,
1118
0
                  &service_mgr__l_resp_msg);
1119
0
               if ((*service_mgr__valid_resp == true) &&
1120
0
                  (service_mgr__l_is_applicative_response == true)) {
1121
0
                  message_in_bs__copy_msg_resp_header_into_msg(service_mgr__l_resp_msg_header,
1122
0
                     service_mgr__l_resp_msg);
1123
0
                  service_response_cb_bs__cli_service_response(service_mgr__l_session,
1124
0
                     service_mgr__l_resp_msg,
1125
0
                     service_mgr__l_user_app_context);
1126
0
                  message_in_bs__forget_msg_in(service_mgr__l_resp_msg);
1127
0
               }
1128
0
            }
1129
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1130
0
         }
1131
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1132
0
      }
1133
0
   }
1134
0
}
1135
1136
void service_mgr__server_receive_discovery_service_req(
1137
   const constants__t_channel_i service_mgr__channel,
1138
   const constants__t_msg_type_i service_mgr__req_typ,
1139
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1140
   t_bool * const service_mgr__valid_req_header,
1141
   t_bool * const service_mgr__valid_req,
1142
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1143
0
   constants__t_byte_buffer_i * const service_mgr__buffer_out) {
1144
0
   {
1145
0
      constants__t_msg_header_i service_mgr__l_req_msg_header;
1146
0
      constants__t_server_request_handle_i service_mgr__l_request_handle;
1147
0
      constants__t_msg_i service_mgr__l_req_msg;
1148
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1149
0
      constants__t_msg_i service_mgr__l_resp_msg;
1150
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1151
0
      constants__t_endpoint_config_idx_i service_mgr__l_endpoint_config_idx;
1152
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1153
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
1154
      
1155
0
      *service_mgr__sc = constants_statuscodes_bs__c_StatusCode_indet;
1156
0
      *service_mgr__valid_req = false;
1157
0
      service_mgr__l_buffer_out = constants__c_byte_buffer_indet;
1158
0
      message_in_bs__decode_msg_header(true,
1159
0
         service_mgr__msg_buffer,
1160
0
         service_mgr__valid_req_header,
1161
0
         &service_mgr__l_req_msg_header);
1162
0
      if (*service_mgr__valid_req_header == true) {
1163
0
         message_in_bs__server_read_msg_header_req_handle(service_mgr__l_req_msg_header,
1164
0
            &service_mgr__l_request_handle);
1165
0
         message_in_bs__decode_msg(service_mgr__req_typ,
1166
0
            service_mgr__msg_buffer,
1167
0
            service_mgr__valid_req,
1168
0
            &service_mgr__l_req_msg);
1169
0
         if (*service_mgr__valid_req == true) {
1170
0
            service_mgr__get_response_type(service_mgr__req_typ,
1171
0
               &service_mgr__l_resp_msg_typ);
1172
0
            message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
1173
0
               &service_mgr__l_resp_msg_header,
1174
0
               &service_mgr__l_resp_msg);
1175
0
            if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1176
0
               channel_mgr__server_get_endpoint_config(service_mgr__channel,
1177
0
                  &service_mgr__l_endpoint_config_idx);
1178
0
               service_mgr__treat_discovery_service_req(service_mgr__l_endpoint_config_idx,
1179
0
                  service_mgr__req_typ,
1180
0
                  service_mgr__l_req_msg,
1181
0
                  service_mgr__l_resp_msg,
1182
0
                  &service_mgr__l_ret);
1183
0
               message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1184
0
                  service_mgr__l_ret);
1185
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
1186
0
                  service_mgr__l_resp_msg_typ = constants__e_msg_service_fault_resp;
1187
0
               }
1188
0
               service_mgr__encode_session_service_resp(service_mgr__l_request_handle,
1189
0
                  service_mgr__channel,
1190
0
                  service_mgr__l_ret,
1191
0
                  service_mgr__l_resp_msg_typ,
1192
0
                  service_mgr__l_resp_msg_header,
1193
0
                  service_mgr__l_resp_msg,
1194
0
                  false,
1195
0
                  service_mgr__sc,
1196
0
                  &service_mgr__l_buffer_out);
1197
0
            }
1198
0
            else {
1199
0
               *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1200
0
            }
1201
0
            message_in_bs__dealloc_msg_in(service_mgr__l_req_msg);
1202
0
         }
1203
0
         else {
1204
0
            service_mgr__alloc_and_encode_session_service_fault_resp(service_mgr__l_request_handle,
1205
0
               service_mgr__channel,
1206
0
               constants_statuscodes_bs__e_sc_bad_decoding_error,
1207
0
               service_mgr__sc,
1208
0
               &service_mgr__l_buffer_out);
1209
0
         }
1210
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_req_msg_header);
1211
0
      }
1212
0
      *service_mgr__buffer_out = service_mgr__l_buffer_out;
1213
0
   }
1214
0
}
1215
1216
void service_mgr__client_receive_discovery_service_resp(
1217
   const constants__t_channel_i service_mgr__channel,
1218
   const constants__t_msg_type_i service_mgr__resp_typ,
1219
   const constants__t_byte_buffer_i service_mgr__msg_buffer,
1220
0
   t_bool * const service_mgr__valid_resp) {
1221
0
   {
1222
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1223
0
      t_bool service_mgr__l_valid_resp_header;
1224
0
      constants__t_client_request_handle_i service_mgr__l_request_handle;
1225
0
      t_bool service_mgr__l_validated_req_handle;
1226
0
      t_bool service_mgr__l_is_applicative_response;
1227
0
      constants__t_application_context_i service_mgr__l_user_app_context;
1228
0
      constants__t_msg_i service_mgr__l_resp_msg;
1229
      
1230
0
      *service_mgr__valid_resp = false;
1231
0
      message_in_bs__decode_msg_header(false,
1232
0
         service_mgr__msg_buffer,
1233
0
         &service_mgr__l_valid_resp_header,
1234
0
         &service_mgr__l_resp_msg_header);
1235
0
      if (service_mgr__l_valid_resp_header == true) {
1236
0
         message_in_bs__client_read_msg_header_req_handle(service_mgr__l_resp_msg_header,
1237
0
            &service_mgr__l_request_handle);
1238
0
         request_handle_bs__client_validate_response_request_handle(service_mgr__channel,
1239
0
            service_mgr__l_request_handle,
1240
0
            service_mgr__resp_typ,
1241
0
            &service_mgr__l_validated_req_handle);
1242
0
         if (service_mgr__l_validated_req_handle == true) {
1243
0
            request_handle_bs__get_req_handle_app_context(service_mgr__l_request_handle,
1244
0
               &service_mgr__l_is_applicative_response,
1245
0
               &service_mgr__l_user_app_context);
1246
0
            message_in_bs__decode_msg(service_mgr__resp_typ,
1247
0
               service_mgr__msg_buffer,
1248
0
               service_mgr__valid_resp,
1249
0
               &service_mgr__l_resp_msg);
1250
0
            if ((*service_mgr__valid_resp == true) &&
1251
0
               (service_mgr__l_is_applicative_response == true)) {
1252
0
               message_in_bs__copy_msg_resp_header_into_msg(service_mgr__l_resp_msg_header,
1253
0
                  service_mgr__l_resp_msg);
1254
0
               service_response_cb_bs__cli_service_response(constants__c_session_indet,
1255
0
                  service_mgr__l_resp_msg,
1256
0
                  service_mgr__l_user_app_context);
1257
0
               message_in_bs__forget_msg_in(service_mgr__l_resp_msg);
1258
0
            }
1259
0
            request_handle_bs__client_remove_req_handle(service_mgr__l_request_handle);
1260
0
         }
1261
0
         message_in_bs__dealloc_msg_in_header(service_mgr__l_resp_msg_header);
1262
0
      }
1263
0
   }
1264
0
}
1265
1266
void service_mgr__server_receive_local_service_req(
1267
   const constants__t_endpoint_config_idx_i service_mgr__endpoint_config_idx,
1268
   const constants__t_msg_service_class_i service_mgr__req_class,
1269
   const constants__t_msg_type_i service_mgr__req_typ,
1270
   const constants__t_msg_i service_mgr__req_msg,
1271
   const constants__t_application_context_i service_mgr__app_context,
1272
0
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret) {
1273
0
   {
1274
0
      t_bool service_mgr__l_prev_local_treatment;
1275
0
      constants__t_msg_type_i service_mgr__l_resp_msg_typ;
1276
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1277
0
      constants__t_msg_i service_mgr__l_resp_msg;
1278
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1279
      
1280
0
      address_space_itf__is_local_service_treatment(&service_mgr__l_prev_local_treatment);
1281
0
      address_space_itf__set_local_service_treatment(true);
1282
0
      switch (service_mgr__req_class) {
1283
0
      case constants__e_msg_session_service_class:
1284
0
      case constants__e_msg_discovery_service_class:
1285
0
         service_mgr__get_response_type(service_mgr__req_typ,
1286
0
            &service_mgr__l_resp_msg_typ);
1287
0
         message_out_bs__alloc_resp_msg(service_mgr__l_resp_msg_typ,
1288
0
            &service_mgr__l_resp_msg_header,
1289
0
            &service_mgr__l_resp_msg);
1290
0
         break;
1291
0
      default:
1292
0
         message_out_bs__alloc_resp_msg(constants__e_msg_service_fault_resp,
1293
0
            &service_mgr__l_resp_msg_header,
1294
0
            &service_mgr__l_resp_msg);
1295
0
         break;
1296
0
      }
1297
0
      if (service_mgr__l_resp_msg != constants__c_msg_indet) {
1298
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_ok;
1299
0
         switch (service_mgr__req_class) {
1300
0
         case constants__e_msg_session_service_class:
1301
0
            service_mgr__treat_session_local_service_req(service_mgr__endpoint_config_idx,
1302
0
               service_mgr__req_typ,
1303
0
               service_mgr__req_msg,
1304
0
               service_mgr__l_resp_msg,
1305
0
               &service_mgr__l_ret);
1306
0
            break;
1307
0
         case constants__e_msg_discovery_service_class:
1308
0
            service_mgr__treat_discovery_service_req(service_mgr__endpoint_config_idx,
1309
0
               service_mgr__req_typ,
1310
0
               service_mgr__req_msg,
1311
0
               service_mgr__l_resp_msg,
1312
0
               &service_mgr__l_ret);
1313
0
            break;
1314
0
         default:
1315
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
1316
0
            break;
1317
0
         }
1318
0
         message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1319
0
            service_mgr__l_ret);
1320
0
         message_out_bs__copy_msg_resp_header_into_msg_out(service_mgr__l_resp_msg_header,
1321
0
            service_mgr__l_resp_msg);
1322
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_resp_msg_header);
1323
0
         service_response_cb_bs__srv_service_response(service_mgr__endpoint_config_idx,
1324
0
            service_mgr__l_resp_msg,
1325
0
            service_mgr__app_context);
1326
0
         message_out_bs__forget_msg_out(service_mgr__l_resp_msg);
1327
0
      }
1328
0
      else {
1329
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1330
0
      }
1331
0
      address_space_itf__set_local_service_treatment(service_mgr__l_prev_local_treatment);
1332
0
   }
1333
0
}
1334
1335
void service_mgr__client_service_create_session(
1336
   const constants__t_session_i service_mgr__session,
1337
   const constants__t_channel_i service_mgr__channel,
1338
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1339
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1340
0
   {
1341
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1342
0
      constants__t_msg_i service_mgr__l_req_msg;
1343
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1344
0
      t_bool service_mgr__l_valid_req_handle;
1345
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1346
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_sc;
1347
0
      t_bool service_mgr__l_bret;
1348
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1349
      
1350
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1351
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1352
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_create_req,
1353
0
         &service_mgr__l_msg_header,
1354
0
         &service_mgr__l_req_msg);
1355
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1356
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_create_req,
1357
0
            constants__e_msg_session_create_resp,
1358
0
            false,
1359
0
            constants__c_no_application_context,
1360
0
            &service_mgr__l_req_handle);
1361
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1362
0
            &service_mgr__l_valid_req_handle);
1363
0
         if (service_mgr__l_valid_req_handle == true) {
1364
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1365
0
               service_mgr__channel);
1366
0
            session_mgr__client_create_session_req(service_mgr__session,
1367
0
               service_mgr__channel,
1368
0
               service_mgr__l_req_handle,
1369
0
               service_mgr__l_req_msg,
1370
0
               &service_mgr__l_bret);
1371
0
            if (service_mgr__l_bret == true) {
1372
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1373
0
                  service_mgr__l_req_handle);
1374
0
               channel_mgr__get_channel_info(service_mgr__channel,
1375
0
                  &service_mgr__l_channel_cfg);
1376
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1377
0
                  constants__e_msg_request_type,
1378
0
                  constants__e_msg_session_create_req,
1379
0
                  service_mgr__l_msg_header,
1380
0
                  service_mgr__l_req_msg,
1381
0
                  &service_mgr__l_sc,
1382
0
                  &service_mgr__l_buffer);
1383
0
               if (service_mgr__l_sc != constants_statuscodes_bs__e_sc_ok) {
1384
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1385
0
                  session_mgr__client_close_session(service_mgr__session,
1386
0
                     service_mgr__l_sc);
1387
0
               }
1388
0
            }
1389
0
            else {
1390
0
               request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1391
0
               session_mgr__client_close_session(service_mgr__session,
1392
0
                  constants_statuscodes_bs__e_sc_bad_internal_error);
1393
0
            }
1394
0
         }
1395
0
         else {
1396
0
            session_mgr__client_close_session(service_mgr__session,
1397
0
               constants_statuscodes_bs__e_sc_bad_out_of_memory);
1398
0
         }
1399
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1400
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1401
0
      }
1402
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1403
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1404
0
   }
1405
0
}
1406
1407
void service_mgr__client_service_activate_orphaned_session(
1408
   const constants__t_session_i service_mgr__session,
1409
   const constants__t_channel_i service_mgr__channel,
1410
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1411
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1412
0
   {
1413
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1414
0
      constants__t_msg_i service_mgr__l_req_msg;
1415
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1416
0
      t_bool service_mgr__l_valid_req_handle;
1417
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1418
0
      constants__t_session_token_i service_mgr__l_session_token;
1419
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1420
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_sc;
1421
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1422
      
1423
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1424
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1425
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_activate_req,
1426
0
         &service_mgr__l_msg_header,
1427
0
         &service_mgr__l_req_msg);
1428
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1429
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_activate_req,
1430
0
            constants__e_msg_session_activate_resp,
1431
0
            false,
1432
0
            constants__c_no_application_context,
1433
0
            &service_mgr__l_req_handle);
1434
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1435
0
            &service_mgr__l_valid_req_handle);
1436
0
         if (service_mgr__l_valid_req_handle == true) {
1437
0
            request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1438
0
               service_mgr__channel);
1439
0
            session_mgr__client_sc_activate_session_req(service_mgr__session,
1440
0
               service_mgr__l_req_handle,
1441
0
               service_mgr__channel,
1442
0
               service_mgr__l_req_msg,
1443
0
               &service_mgr__l_ret,
1444
0
               &service_mgr__l_session_token);
1445
0
            if (service_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
1446
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1447
0
                  service_mgr__l_req_handle);
1448
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1449
0
                  service_mgr__l_session_token);
1450
0
               channel_mgr__get_channel_info(service_mgr__channel,
1451
0
                  &service_mgr__l_channel_cfg);
1452
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1453
0
                  constants__e_msg_request_type,
1454
0
                  constants__e_msg_session_activate_req,
1455
0
                  service_mgr__l_msg_header,
1456
0
                  service_mgr__l_req_msg,
1457
0
                  &service_mgr__l_sc,
1458
0
                  &service_mgr__l_buffer);
1459
0
               if (service_mgr__l_sc != constants_statuscodes_bs__e_sc_ok) {
1460
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1461
0
                  session_mgr__client_close_session(service_mgr__session,
1462
0
                     service_mgr__l_sc);
1463
0
               }
1464
0
            }
1465
0
         }
1466
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1467
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1468
0
      }
1469
0
      else {
1470
0
         session_mgr__client_close_session(service_mgr__session,
1471
0
            constants_statuscodes_bs__e_sc_bad_out_of_memory);
1472
0
      }
1473
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1474
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1475
0
   }
1476
0
}
1477
1478
void service_mgr__client_service_activate_session(
1479
   const constants__t_session_i service_mgr__session,
1480
   const constants__t_user_token_i service_mgr__p_user_token,
1481
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1482
   constants__t_channel_i * const service_mgr__channel,
1483
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1484
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1485
0
   {
1486
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1487
0
      constants__t_msg_i service_mgr__l_req_msg;
1488
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1489
0
      constants__t_channel_i service_mgr__l_channel;
1490
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1491
0
      t_bool service_mgr__l_valid_req_handle;
1492
0
      constants__t_session_token_i service_mgr__l_session_token;
1493
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1494
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1495
      
1496
0
      service_mgr__l_channel = constants__c_channel_indet;
1497
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1498
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1499
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_activate_req,
1500
0
         &service_mgr__l_msg_header,
1501
0
         &service_mgr__l_req_msg);
1502
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1503
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_activate_req,
1504
0
            constants__e_msg_session_activate_resp,
1505
0
            false,
1506
0
            constants__c_no_application_context,
1507
0
            &service_mgr__l_req_handle);
1508
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1509
0
            &service_mgr__l_valid_req_handle);
1510
0
         if (service_mgr__l_valid_req_handle == true) {
1511
0
            session_mgr__client_user_activate_session_req(service_mgr__session,
1512
0
               service_mgr__l_req_handle,
1513
0
               service_mgr__p_user_token,
1514
0
               service_mgr__l_req_msg,
1515
0
               &service_mgr__l_ret,
1516
0
               &service_mgr__l_channel,
1517
0
               &service_mgr__l_session_token);
1518
0
            if (service_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
1519
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1520
0
                  service_mgr__l_channel);
1521
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1522
0
                  service_mgr__l_req_handle);
1523
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1524
0
                  service_mgr__l_session_token);
1525
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1526
0
                  &service_mgr__l_channel_cfg);
1527
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1528
0
                  constants__e_msg_request_type,
1529
0
                  constants__e_msg_session_activate_req,
1530
0
                  service_mgr__l_msg_header,
1531
0
                  service_mgr__l_req_msg,
1532
0
                  &service_mgr__l_ret,
1533
0
                  &service_mgr__l_buffer);
1534
0
               if (service_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
1535
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1536
0
                  service_mgr__l_channel = constants__c_channel_indet;
1537
0
                  session_mgr__client_close_session(service_mgr__session,
1538
0
                     service_mgr__l_ret);
1539
0
               }
1540
0
            }
1541
0
            else {
1542
0
               session_mgr__client_close_session(service_mgr__session,
1543
0
                  service_mgr__l_ret);
1544
0
            }
1545
0
         }
1546
0
         else {
1547
0
            session_mgr__client_close_session(service_mgr__session,
1548
0
               constants_statuscodes_bs__e_sc_bad_out_of_memory);
1549
0
            service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1550
0
         }
1551
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1552
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1553
0
      }
1554
0
      else {
1555
0
         session_mgr__client_close_session(service_mgr__session,
1556
0
            constants_statuscodes_bs__e_sc_bad_out_of_memory);
1557
0
         service_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1558
0
      }
1559
0
      *service_mgr__ret = service_mgr__l_ret;
1560
0
      *service_mgr__channel = service_mgr__l_channel;
1561
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1562
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1563
0
   }
1564
0
}
1565
1566
void service_mgr__client_service_close_session(
1567
   const constants__t_session_i service_mgr__session,
1568
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1569
   constants__t_channel_i * const service_mgr__channel,
1570
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1571
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1572
0
   {
1573
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1574
0
      constants__t_msg_i service_mgr__l_req_msg;
1575
0
      constants__t_channel_i service_mgr__l_channel;
1576
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1577
0
      t_bool service_mgr__l_valid_req_handle;
1578
0
      constants__t_session_token_i service_mgr__l_session_token;
1579
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1580
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1581
      
1582
0
      service_mgr__l_channel = constants__c_channel_indet;
1583
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1584
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1585
0
      message_out_bs__alloc_req_msg(constants__e_msg_session_close_req,
1586
0
         &service_mgr__l_msg_header,
1587
0
         &service_mgr__l_req_msg);
1588
0
      if (service_mgr__l_req_msg != constants__c_msg_indet) {
1589
0
         request_handle_bs__client_fresh_req_handle(constants__e_msg_session_close_req,
1590
0
            constants__e_msg_session_close_resp,
1591
0
            false,
1592
0
            constants__c_no_application_context,
1593
0
            &service_mgr__l_req_handle);
1594
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1595
0
            &service_mgr__l_valid_req_handle);
1596
0
         if (service_mgr__l_valid_req_handle == true) {
1597
0
            session_mgr__client_close_session_req(service_mgr__session,
1598
0
               service_mgr__l_req_handle,
1599
0
               service_mgr__l_req_msg,
1600
0
               service_mgr__ret,
1601
0
               &service_mgr__l_channel,
1602
0
               &service_mgr__l_session_token);
1603
0
            if (*service_mgr__ret == constants_statuscodes_bs__e_sc_ok) {
1604
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1605
0
                  service_mgr__l_channel);
1606
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1607
0
                  service_mgr__l_req_handle);
1608
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1609
0
                  service_mgr__l_session_token);
1610
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1611
0
                  &service_mgr__l_channel_cfg);
1612
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1613
0
                  constants__e_msg_request_type,
1614
0
                  constants__e_msg_session_close_req,
1615
0
                  service_mgr__l_msg_header,
1616
0
                  service_mgr__l_req_msg,
1617
0
                  service_mgr__ret,
1618
0
                  &service_mgr__l_buffer);
1619
0
               if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1620
0
                  service_mgr__l_channel = constants__c_channel_indet;
1621
0
                  request_handle_bs__client_remove_req_handle(service_mgr__l_req_handle);
1622
0
                  session_mgr__client_close_session(service_mgr__session,
1623
0
                     *service_mgr__ret);
1624
0
               }
1625
0
            }
1626
0
         }
1627
0
         else {
1628
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1629
0
         }
1630
0
         message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1631
0
         message_out_bs__dealloc_msg_out(service_mgr__l_req_msg);
1632
0
      }
1633
0
      else {
1634
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1635
0
      }
1636
0
      *service_mgr__channel = service_mgr__l_channel;
1637
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1638
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1639
0
   }
1640
0
}
1641
1642
void service_mgr__client_service_request(
1643
   const constants__t_session_i service_mgr__session,
1644
   const constants__t_msg_type_i service_mgr__req_typ,
1645
   const constants__t_msg_i service_mgr__req_msg,
1646
   const constants__t_application_context_i service_mgr__app_context,
1647
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1648
   constants__t_channel_i * const service_mgr__channel,
1649
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1650
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1651
0
   {
1652
0
      constants__t_msg_header_i service_mgr__l_msg_header;
1653
0
      constants__t_msg_type_i service_mgr__l_resp_typ;
1654
0
      constants__t_channel_i service_mgr__l_channel;
1655
0
      constants__t_client_request_handle_i service_mgr__l_req_handle;
1656
0
      t_bool service_mgr__l_valid_req_handle;
1657
0
      constants__t_session_token_i service_mgr__l_session_token;
1658
0
      constants__t_byte_buffer_i service_mgr__l_buffer;
1659
0
      t_bool service_mgr__l_valid_channel;
1660
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1661
      
1662
0
      service_mgr__l_channel = constants__c_channel_indet;
1663
0
      service_mgr__l_buffer = constants__c_byte_buffer_indet;
1664
0
      service_mgr__l_req_handle = constants__c_client_request_handle_indet;
1665
0
      switch (service_mgr__req_typ) {
1666
0
      case constants__e_msg_node_add_nodes_req:
1667
0
      case constants__e_msg_node_add_references_req:
1668
0
      case constants__e_msg_node_delete_nodes_req:
1669
0
      case constants__e_msg_node_delete_references_req:
1670
0
      case constants__e_msg_view_browse_req:
1671
0
      case constants__e_msg_view_browse_next_req:
1672
0
      case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
1673
0
      case constants__e_msg_view_register_nodes_req:
1674
0
      case constants__e_msg_view_unregister_nodes_req:
1675
0
      case constants__e_msg_query_first_req:
1676
0
      case constants__e_msg_query_next_req:
1677
0
      case constants__e_msg_attribute_read_req:
1678
0
      case constants__e_msg_attribute_history_read_req:
1679
0
      case constants__e_msg_attribute_write_req:
1680
0
      case constants__e_msg_attribute_history_update_req:
1681
0
      case constants__e_msg_method_call_req:
1682
0
      case constants__e_msg_monitored_items_create_req:
1683
0
      case constants__e_msg_monitored_items_modify_req:
1684
0
      case constants__e_msg_monitored_items_set_monitoring_mode_req:
1685
0
      case constants__e_msg_monitored_items_set_monitoring_mode_resp:
1686
0
      case constants__e_msg_monitored_items_set_triggering_req:
1687
0
      case constants__e_msg_monitored_items_delete_req:
1688
0
      case constants__e_msg_subscription_create_req:
1689
0
      case constants__e_msg_subscription_modify_req:
1690
0
      case constants__e_msg_subscription_set_publishing_mode_req:
1691
0
      case constants__e_msg_subscription_publish_req:
1692
0
      case constants__e_msg_subscription_republish_req:
1693
0
      case constants__e_msg_subscription_transfer_subscriptions_req:
1694
0
      case constants__e_msg_subscription_delete_subscriptions_req:
1695
0
         service_mgr__get_response_type(service_mgr__req_typ,
1696
0
            &service_mgr__l_resp_typ);
1697
0
         message_out_bs__alloc_msg_header(true,
1698
0
            &service_mgr__l_msg_header);
1699
0
         request_handle_bs__client_fresh_req_handle(service_mgr__req_typ,
1700
0
            service_mgr__l_resp_typ,
1701
0
            true,
1702
0
            service_mgr__app_context,
1703
0
            &service_mgr__l_req_handle);
1704
0
         request_handle_bs__is_valid_req_handle(service_mgr__l_req_handle,
1705
0
            &service_mgr__l_valid_req_handle);
1706
0
         if ((service_mgr__l_valid_req_handle == true) &&
1707
0
            (service_mgr__l_msg_header != constants__c_msg_header_indet)) {
1708
0
            session_mgr__client_validate_session_service_req(service_mgr__session,
1709
0
               service_mgr__l_req_handle,
1710
0
               service_mgr__ret,
1711
0
               &service_mgr__l_channel,
1712
0
               &service_mgr__l_session_token);
1713
0
            if (*service_mgr__ret == constants_statuscodes_bs__e_sc_ok) {
1714
0
               request_handle_bs__set_req_handle_channel(service_mgr__l_req_handle,
1715
0
                  service_mgr__l_channel);
1716
0
               message_out_bs__client_write_msg_out_header_req_handle(service_mgr__l_msg_header,
1717
0
                  service_mgr__l_req_handle);
1718
0
               message_out_bs__write_msg_out_header_session_token(service_mgr__l_msg_header,
1719
0
                  service_mgr__l_session_token);
1720
0
               channel_mgr__get_channel_info(service_mgr__l_channel,
1721
0
                  &service_mgr__l_channel_cfg);
1722
0
               message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1723
0
                  constants__e_msg_request_type,
1724
0
                  constants__e_msg_session_close_req,
1725
0
                  service_mgr__l_msg_header,
1726
0
                  service_mgr__req_msg,
1727
0
                  service_mgr__ret,
1728
0
                  &service_mgr__l_buffer);
1729
0
               if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1730
0
                  service_mgr__l_channel = constants__c_channel_indet;
1731
0
               }
1732
0
            }
1733
0
         }
1734
0
         else {
1735
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1736
0
         }
1737
0
         if (service_mgr__l_msg_header != constants__c_msg_header_indet) {
1738
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_msg_header);
1739
0
         }
1740
0
         break;
1741
0
      case constants__e_msg_discovery_find_servers_req:
1742
0
      case constants__e_msg_discovery_find_servers_on_network_req:
1743
0
      case constants__e_msg_discovery_get_endpoints_req:
1744
0
      case constants__e_msg_discovery_register_server_req:
1745
0
      case constants__e_msg_discovery_register_server2_req:
1746
0
         session_mgr__getall_valid_session_channel(service_mgr__session,
1747
0
            &service_mgr__l_valid_channel,
1748
0
            &service_mgr__l_channel);
1749
0
         if (service_mgr__l_valid_channel == true) {
1750
0
            service_mgr__local_client_discovery_service_request(service_mgr__l_channel,
1751
0
               service_mgr__req_typ,
1752
0
               service_mgr__req_msg,
1753
0
               service_mgr__app_context,
1754
0
               service_mgr__ret,
1755
0
               &service_mgr__l_buffer,
1756
0
               &service_mgr__l_req_handle);
1757
0
            if (*service_mgr__ret != constants_statuscodes_bs__e_sc_ok) {
1758
0
               service_mgr__l_channel = constants__c_channel_indet;
1759
0
            }
1760
0
         }
1761
0
         else {
1762
0
            *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
1763
0
         }
1764
0
         break;
1765
0
      default:
1766
0
         *service_mgr__ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
1767
0
         break;
1768
0
      }
1769
0
      *service_mgr__channel = service_mgr__l_channel;
1770
0
      *service_mgr__req_handle = service_mgr__l_req_handle;
1771
0
      *service_mgr__buffer_out = service_mgr__l_buffer;
1772
0
   }
1773
0
}
1774
1775
void service_mgr__client_discovery_service_request(
1776
   const constants__t_channel_i service_mgr__channel,
1777
   const constants__t_msg_type_i service_mgr__req_typ,
1778
   const constants__t_msg_i service_mgr__req_msg,
1779
   const constants__t_application_context_i service_mgr__app_context,
1780
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__ret,
1781
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1782
0
   constants__t_client_request_handle_i * const service_mgr__req_handle) {
1783
0
   service_mgr__local_client_discovery_service_request(service_mgr__channel,
1784
0
      service_mgr__req_typ,
1785
0
      service_mgr__req_msg,
1786
0
      service_mgr__app_context,
1787
0
      service_mgr__ret,
1788
0
      service_mgr__buffer_out,
1789
0
      service_mgr__req_handle);
1790
0
}
1791
1792
void service_mgr__client_snd_msg_failure(
1793
   const constants__t_channel_i service_mgr__channel,
1794
   const constants__t_client_request_handle_i service_mgr__request_handle,
1795
0
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__error_status) {
1796
0
   {
1797
0
      t_bool service_mgr__l_valid_req_handle;
1798
0
      constants__t_channel_i service_mgr__l_req_handle_channel;
1799
0
      constants__t_msg_type_i service_mgr__l_req_typ;
1800
0
      t_bool service_mgr__l_is_applicative;
1801
0
      constants__t_application_context_i service_mgr__l_app_context;
1802
0
      constants__t_msg_type_i service_mgr__l_exp_resp_msg_typ;
1803
0
      constants__t_msg_service_class_i service_mgr__l_exp_resp_msg_class;
1804
0
      t_bool service_mgr__l_trigger_app_treatment;
1805
0
      t_bool service_mgr__l_bres;
1806
0
      constants__t_session_i service_mgr__l_session;
1807
      
1808
0
      service_mgr__l_trigger_app_treatment = false;
1809
0
      request_handle_bs__is_valid_req_handle(service_mgr__request_handle,
1810
0
         &service_mgr__l_valid_req_handle);
1811
0
      request_handle_bs__get_req_handle_channel(service_mgr__request_handle,
1812
0
         &service_mgr__l_req_handle_channel);
1813
0
      if ((service_mgr__l_valid_req_handle == true) &&
1814
0
         (service_mgr__l_req_handle_channel == service_mgr__channel)) {
1815
0
         request_handle_bs__get_req_handle_resp_typ(service_mgr__request_handle,
1816
0
            &service_mgr__l_exp_resp_msg_typ);
1817
0
         service_mgr__l_get_msg_service_class(service_mgr__l_exp_resp_msg_typ,
1818
0
            &service_mgr__l_exp_resp_msg_class);
1819
0
         switch (service_mgr__l_exp_resp_msg_class) {
1820
0
         case constants__e_msg_session_treatment_class:
1821
0
            session_mgr__client_validate_session_service_resp(service_mgr__channel,
1822
0
               service_mgr__request_handle,
1823
0
               &service_mgr__l_bres,
1824
0
               &service_mgr__l_session);
1825
0
            if (service_mgr__l_bres == true) {
1826
0
               session_mgr__client_close_session(service_mgr__l_session,
1827
0
                  constants_statuscodes_bs__e_sc_bad_request_interrupted);
1828
0
            }
1829
0
            break;
1830
0
         case constants__e_msg_session_service_class:
1831
0
            session_mgr__client_validate_session_service_req_failed(service_mgr__channel,
1832
0
               service_mgr__request_handle,
1833
0
               &service_mgr__l_trigger_app_treatment);
1834
0
            break;
1835
0
         case constants__e_msg_discovery_service_class:
1836
0
            service_mgr__l_trigger_app_treatment = true;
1837
0
            break;
1838
0
         default:
1839
0
            service_mgr__l_trigger_app_treatment = false;
1840
0
            break;
1841
0
         }
1842
0
         if (service_mgr__l_trigger_app_treatment == true) {
1843
0
            request_handle_bs__get_req_handle_app_context(service_mgr__request_handle,
1844
0
               &service_mgr__l_is_applicative,
1845
0
               &service_mgr__l_app_context);
1846
0
            request_handle_bs__get_req_handle_req_typ(service_mgr__request_handle,
1847
0
               &service_mgr__l_req_typ);
1848
0
            if (service_mgr__l_is_applicative == true) {
1849
0
               service_response_cb_bs__cli_snd_failure(service_mgr__l_req_typ,
1850
0
                  service_mgr__l_app_context,
1851
0
                  service_mgr__error_status);
1852
0
            }
1853
0
         }
1854
0
         request_handle_bs__client_remove_req_handle(service_mgr__request_handle);
1855
0
      }
1856
0
   }
1857
0
}
1858
1859
void service_mgr__server_send_publish_response(
1860
   const constants__t_session_i service_mgr__session,
1861
   const constants__t_server_request_handle_i service_mgr__req_handle,
1862
   const constants_statuscodes_bs__t_StatusCode_i service_mgr__statusCode,
1863
   const constants__t_msg_type_i service_mgr__resp_typ,
1864
   const constants__t_msg_i service_mgr__publish_resp_msg,
1865
   t_bool * const service_mgr__bres,
1866
   constants_statuscodes_bs__t_StatusCode_i * const service_mgr__sc,
1867
   constants__t_byte_buffer_i * const service_mgr__buffer_out,
1868
0
   constants__t_channel_i * const service_mgr__channel) {
1869
0
   {
1870
0
      t_bool service_mgr__l_is_valid_resp;
1871
0
      constants_statuscodes_bs__t_StatusCode_i service_mgr__l_ret;
1872
0
      constants__t_msg_header_i service_mgr__l_resp_msg_header;
1873
0
      constants__t_byte_buffer_i service_mgr__l_buffer_out;
1874
0
      constants__t_channel_config_idx_i service_mgr__l_channel_cfg;
1875
      
1876
0
      *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
1877
0
      *service_mgr__bres = false;
1878
0
      *service_mgr__buffer_out = constants__c_byte_buffer_indet;
1879
0
      *service_mgr__channel = constants__c_channel_indet;
1880
0
      session_mgr__server_validate_async_session_service_resp(service_mgr__session,
1881
0
         &service_mgr__l_is_valid_resp,
1882
0
         &service_mgr__l_ret,
1883
0
         service_mgr__channel);
1884
0
      if (service_mgr__l_is_valid_resp == true) {
1885
0
         message_out_bs__alloc_msg_header(false,
1886
0
            &service_mgr__l_resp_msg_header);
1887
0
         if (service_mgr__l_resp_msg_header != constants__c_msg_header_indet) {
1888
0
            message_out_bs__server_write_msg_out_header_req_handle(service_mgr__l_resp_msg_header,
1889
0
               service_mgr__req_handle);
1890
0
            message_out_bs__write_msg_resp_header_service_status(service_mgr__l_resp_msg_header,
1891
0
               service_mgr__statusCode);
1892
0
            channel_mgr__get_channel_info(*service_mgr__channel,
1893
0
               &service_mgr__l_channel_cfg);
1894
0
            message_out_bs__encode_msg(service_mgr__l_channel_cfg,
1895
0
               constants__e_msg_response_type,
1896
0
               service_mgr__resp_typ,
1897
0
               service_mgr__l_resp_msg_header,
1898
0
               service_mgr__publish_resp_msg,
1899
0
               service_mgr__sc,
1900
0
               &service_mgr__l_buffer_out);
1901
0
            message_out_bs__dealloc_msg_header_out(service_mgr__l_resp_msg_header);
1902
0
            if (*service_mgr__sc == constants_statuscodes_bs__e_sc_ok) {
1903
0
               *service_mgr__buffer_out = service_mgr__l_buffer_out;
1904
0
               *service_mgr__bres = true;
1905
0
            }
1906
0
         }
1907
0
         else {
1908
0
            *service_mgr__sc = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1909
0
         }
1910
0
      }
1911
0
   }
1912
0
}
1913
1914
void service_mgr__internal_server_inactive_session_prio_event(
1915
   const constants__t_session_i service_mgr__p_session,
1916
   const constants__t_sessionState_i service_mgr__p_newSessionState,
1917
0
   t_bool * const service_mgr__bres) {
1918
0
   if (service_mgr__p_session != constants__c_session_indet) {
1919
0
      *service_mgr__bres = true;
1920
0
      subscription_mgr__server_subscription_session_inactive(service_mgr__p_session,
1921
0
         service_mgr__p_newSessionState);
1922
0
      if (service_mgr__p_newSessionState == constants__e_session_closed) {
1923
0
         service_set_view__service_set_view_set_session_closed(service_mgr__p_session);
1924
0
      }
1925
0
   }
1926
0
   else {
1927
0
      *service_mgr__bres = false;
1928
0
   }
1929
0
}
1930
1931
0
void service_mgr__service_mgr_UNINITIALISATION(void) {
1932
0
   subscription_mgr__subscription_mgr_UNINITIALISATION();
1933
0
   session_mgr__session_mgr_UNINITIALISATION();
1934
0
   service_set_view__service_set_view_UNINITIALISATION();
1935
0
   service_set_discovery_server__service_set_discovery_server_UNINITIALISATION();
1936
0
   service_mgr_bs__service_mgr_bs_UNINITIALISATION();
1937
0
   address_space_itf__address_space_UNINITIALISATION();
1938
0
}
1939