MCPcopy Create free account
hub / github.com/EIPStackGroup/OpENer / DeleteAllClasses

Function DeleteAllClasses

source/src/cip/cipmessagerouter.c:271–309  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269}
270
271void DeleteAllClasses(void) {
272 CipMessageRouterObject *message_router_object = g_first_object; /* get pointer to head of class registration list */
273 CipMessageRouterObject *message_router_object_to_delete = NULL;
274 CipInstance *instance = NULL;
275 CipInstance *instance_to_delete = NULL;
276
277 while (NULL != message_router_object) {
278 message_router_object_to_delete = message_router_object;
279 message_router_object = message_router_object->next;
280
281 instance = message_router_object_to_delete->cip_class->instances;
282 while (NULL != instance) {
283 instance_to_delete = instance;
284 instance = instance->next;
285 if (message_router_object_to_delete->cip_class->number_of_attributes) /* if the class has instance attributes */
286 { /* then free storage for the attribute array */
287 CipFree(instance_to_delete->attributes);
288 }
289 CipFree(instance_to_delete);
290 }
291
292 /*clear meta class data*/
293 CipFree(
294 message_router_object_to_delete->cip_class->class_instance.cip_class
295 ->class_name);
296 CipFree(
297 message_router_object_to_delete->cip_class->class_instance.cip_class
298 ->services);
299 CipFree(
300 message_router_object_to_delete->cip_class->class_instance.cip_class);
301 /*clear class data*/
302 CipFree(
303 message_router_object_to_delete->cip_class->class_instance.attributes);
304 CipFree(message_router_object_to_delete->cip_class->services);
305 CipFree(message_router_object_to_delete->cip_class);
306 CipFree(message_router_object_to_delete);
307 }
308 g_first_object = NULL;
309}

Callers 1

ShutdownCipStackFunction · 0.85

Calls 1

CipFreeFunction · 0.50

Tested by

no test coverage detected