static void es_fap_destroy(es_resource_t *eres) { es_fap_t *ef = (es_fap_t *)eres; fileaccess_unregister_dynamic(&ef->fap); free(ef->name); es_root_unregister(eres->er_ctx->ec_duk, eres); es_resource_unlink(&ef->super); }
static void es_fd_destroy(es_resource_t *eres) { es_fd_t *efd = (es_fd_t *)eres; if(efd->efd_fh != NULL) { fa_close(efd->efd_fh); efd->efd_fh = NULL; } free(efd->efd_path); es_resource_unlink(&efd->super); }
static void es_timer_destroy(es_resource_t *eres) { es_timer_t *et = (es_timer_t *)eres; es_root_unregister(eres->er_ctx->ec_duk, eres); if(et->et_expire) { hts_mutex_lock(&timer_mutex); LIST_REMOVE(et, et_link); hts_mutex_unlock(&timer_mutex); } es_resource_unlink(&et->super); }
static void es_route_destroy(es_resource_t *eres) { es_route_t *er = (es_route_t *)eres; es_root_unregister(eres->er_ctx->ec_duk, eres); hts_mutex_lock(&route_mutex); LIST_REMOVE(er, er_link); hts_mutex_unlock(&route_mutex); free(er->er_pattern); hts_regfree(&er->er_regex); es_resource_unlink(&er->super); }
static void es_sqlite_destroy(es_resource_t *eres) { es_sqlite_t *es = (es_sqlite_t *)eres; if(es->es_stmt) sqlite3_finalize(es->es_stmt); if(es->es_db != NULL) sqlite3_close(es->es_db); if(es->es_debug) TRACE(TRACE_DEBUG, "JS", "Database %s finalized", es->es_name); free(es->es_name); es_resource_unlink(&es->super); }