void _wapi_cleanup_networking(void) { MONO_TRACE (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER, "%s: cleaning up", __func__); in_cleanup = 1; mono_w32handle_foreach (cleanup_close, NULL); in_cleanup = 0; }
void mono_w32socket_cleanup (void) { mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER, "%s: cleaning up", __func__); in_cleanup = 1; mono_w32handle_foreach (cleanup_close, NULL); in_cleanup = 0; }
/* This might list some shared handles twice if they are already * opened by this process, and the check function returns FALSE the * first time. Shared handles that are created during the search are * unreffed if the check function returns FALSE, so callers must not * rely on the handle persisting (unless the check function returns * TRUE) * The caller owns the returned handle. */ gpointer mono_w32handle_search (MonoW32HandleType type, gboolean (*check)(gpointer test, gpointer user), gpointer user_data, gpointer *handle_specific, gboolean search_shared) { SearchData search_data; memset (&search_data, 0, sizeof (search_data)); search_data.type = type; search_data.search_user_callback = check; search_data.search_user_data = user_data; mono_w32handle_foreach (search_callback, &search_data); if (handle_specific) *handle_specific = search_data.handle_specific; return search_data.handle; }
gpointer mono_w32handle_namespace_search_handle (MonoW32HandleType type, gchar *name) { NamespaceSearchHandleData search_data; if (!has_namespace (type)) g_error ("%s: type %s does not have a namespace", __func__, type); mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER, "%s: Lookup for handle named [%s] type %s", __func__, name, mono_w32handle_get_typename (type)); search_data.ret = NULL; search_data.type = type; search_data.name = name; mono_w32handle_foreach (mono_w32handle_namespace_search_handle_callback, &search_data); return search_data.ret; }