Example #1
0
File: masset.c Project: bigml/emoon
void masset_finish()
{
    HASH *mh = hash_lookup(g_datah, ASSET_KEY);
    hash_destroy(&mh);
    hash_remove(g_datah, ASSET_KEY);

    uListDestroyFunc(&asset_drivers, masset_driver_free);

    asset_drivers = NULL;
}
Example #2
0
File: otjt.c Project: kingiol/cmoon
int tjt_get_data(HDF *hdf, HASH *dbh, session_t *ses)
{
    char *buf, tbl[LEN_TB];
    size_t datalen;
    file_t *fl;
    ULIST *ul = NULL;
    int count, offset, aid, fid, ret;

    mdb_conn *dbsys, *dbtjt;

    dbsys = (mdb_conn*)hash_lookup(dbh, "Sys");
    dbtjt = (mdb_conn*)hash_lookup(dbh, "Tjt");

    PRE_DBOP(hdf, dbsys);
    PRE_DBOP(hdf, dbtjt);

    aid = ses->file->aid;
    fid = ses->file->id;
    snprintf(tbl, sizeof(tbl), "tjt_%d", aid);

    /* TODO ses->file not null all time? */
    //if (ses->file != NULL)
    lutil_fill_layout_by_file(dbsys, ses->file, hdf);
    if (file_get_info_by_id(dbsys, aid, NULL, -1, &fl) == RET_RBTOP_OK) {
        hdf_set_value(hdf, PRE_OUTPUT".navtitle", fl->remark);
        file_del(fl);
    }
    file_get_nav_by_id(dbsys, aid, PRE_OUTPUT, hdf);

    ret = file_check_user_power(hdf, dbsys, ses, ses->file, LMT_APPEND);
    if (ret == RET_RBTOP_OK) {
        hdf_set_value(hdf, PRE_OUTPUT".appendable", "1");
    }

    lutil_fetch_countf(hdf, dbtjt, tbl, "fid=%d", fid);
    mmisc_get_offset(hdf, &count, &offset);

    buf = mmc_getf(&datalen, 0, PRE_MMC_TJT".%d.%d", fid, offset);
    if (buf == NULL || datalen < sizeof(tjt_t)) {
        LDB_QUERY_RAW(dbtjt, "tjt_%d", TJT_QUERY_COL, "fid=%d ORDER BY uptime "
                      " LIMIT %d OFFSET %d", NULL, aid, fid, count, offset);
        mdb_set_rows(hdf, dbtjt, TJT_QUERY_COL, PRE_OUTPUT".atoms");
        lutil_image_expand(hdf, PRE_OUTPUT".atoms", "img", IMG_PATH, IMG_S, "imgurl");
        lcs_hdf2list(hdf, PRE_OUTPUT".atoms", tjt_hdf2item, &ul);
        ret = list_pack(ul, TJT_LEN, tjt_pack_nalloc, &buf, &datalen);
        if (ret == RET_RBTOP_OK) {
            mmc_storef(MMC_OP_SET, buf, datalen, HALF_HOUR, 0, PRE_MMC_TJT".%d.%d",
                       fid, offset);
        }
    } else {
        list_unpack(buf, tjt_unpack, datalen, &ul);
        ret = lcs_list2hdf(ul, PRE_OUTPUT".atoms", tjt_item2hdf, hdf);
        if (ret != RET_RBTOP_OK) {
            mtc_err("assembly tjt from mmc error");
            return RET_RBTOP_MMCERR;
        }
    }
    uListDestroyFunc(&ul, tjt_del);
    free(buf);

    return ret;
}