void host_free(Host* host, gpointer userData) { MAGIC_ASSERT(host); g_queue_free(host->applications); topology_detach(worker_getTopology(), networkinterface_getAddress(host->defaultInterface)); g_hash_table_destroy(host->interfaces); g_hash_table_destroy(host->descriptors); g_hash_table_destroy(host->shadowToOSHandleMap); g_hash_table_destroy(host->osToShadowHandleMap); g_hash_table_destroy(host->unixPathToPortMap); g_free(host->name); eventqueue_free(host->events); cpu_free(host->cpu); tracker_free(host->tracker); g_queue_free(host->availableDescriptors); g_mutex_clear(&(host->lock)); MAGIC_CLEAR(host); g_free(host); }
void worker_free(Worker* worker) { MAGIC_ASSERT(worker); /* calls the destroy functions we specified in g_hash_table_new_full */ g_hash_table_destroy(worker->privatePrograms); if(worker->serialEventQueue) { eventqueue_free(worker->serialEventQueue); } MAGIC_CLEAR(worker); g_private_set(&workerKey, NULL); g_free(worker); }