IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 3, 2010, 4:37:05 PM (16 years ago)
Author:
bills
Message:

Add timestamp and poll interval to pstampDataStore. Don't poll for new
requests at each data store unless the time since the last poll is greater
than the requested interval
Add label to pstampDataStore. Use it to set label for requests.
Support -label in the query modes of pstamptool.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pstamptool.c

    r26981 r27171  
    116116    PS_ASSERT_PTR_NON_NULL(config, false);
    117117
    118     PXOPT_LOOKUP_STR(uri,         config->args, "-uri",           true, false);
    119     PXOPT_LOOKUP_STR(outProduct,  config->args, "-out_product",   true, false);
    120     PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false);
    121     PXOPT_LOOKUP_STR(state,       config->args, "-state",         false, false);
     118    PXOPT_LOOKUP_STR(uri,         config->args, "-set_uri",           true, false);
     119    PXOPT_LOOKUP_STR(outProduct,  config->args, "-set_out_product",   true, false);
     120    PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset", false, false);
     121    PXOPT_LOOKUP_STR(state,       config->args, "-set_state",         false, false);
     122    PXOPT_LOOKUP_STR(label,       config->args, "-set_label",         false, false);
     123    PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval",false, false);
    122124
    123125    if (!pstampDataStoreInsert(config->dbh,
     
    125127            state,
    126128            lastFileset,
     129            NULL,       // timestamp
     130            label,      // label
    127131            outProduct,
    128             uri
     132            uri,
     133            pollInterval
    129134        )) {
    130135        psError(PS_ERR_UNKNOWN, false, "database error");
     
    189194
    190195    PXOPT_LOOKUP_S64(ds_id,       config->args, "-ds_id",         true, false);
    191     PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset",  false, false);
    192     PXOPT_LOOKUP_STR(state,       config->args, "-state",         false, false);
    193 
    194     if (!state && !lastFileset) {
     196    PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset",  false, false);
     197    PXOPT_LOOKUP_STR(state,       config->args, "-set_state",         false, false);
     198    PXOPT_LOOKUP_STR(label,       config->args, "-set_label",         false, false);
     199    PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval",         false, false);
     200    PXOPT_LOOKUP_BOOL(update_timestamp, config->args, "-update_timestamp", false);
     201
     202    if (!state && !lastFileset && !pollInterval && !update_timestamp && !label) {
    195203        psError(PS_ERR_UNKNOWN, true, "at least one of -last_fileset or -state is required");
    196204        return false;
    197205    }
    198206
    199     char *query = psStringCopy ("UPDATE pstampDataStore SET");
    200     bool needComma = false;
     207    char *query = psStringCopy ("UPDATE pstampDataStore SET timestamp = CURRENT_TIMESTAMP() ");
    201208
    202209    if (lastFileset) {
    203         psStringAppend(&query, " lastFileset = '%s'", lastFileset);
    204         needComma = true;
     210        psStringAppend(&query, " , lastFileset = '%s'", lastFileset);
    205211    }
    206212
    207213    if (state) {
    208         psStringAppend(&query, "%s state = '%s'", needComma ? "," : " ", state);
    209         needComma = true; // be ready in case we add another field
     214        psStringAppend(&query, ", state = '%s'", state);
     215    }
     216
     217    if (label) {
     218        psStringAppend(&query, ", label = '%s'", label);
     219    }
     220
     221    if (pollInterval) {
     222        psStringAppend(&query, ", pollInterval = %d", pollInterval);
    210223    }
    211224
     
    265278    psMetadata *where = psMetadataAlloc();
    266279    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     280    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
    267281
    268282    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    387401    PS_ASSERT_PTR_NON_NULL(config, false);
    388402
     403    psMetadata *where = psMetadataAlloc();
     404    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
     405
    389406    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    390407    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    391408
    392409    psString query = pxDataGet("pstamptool_completedreq.sql");
     410
     411    if (psListLength(where->list)) {
     412        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     413        psStringAppend(&query, " AND %s", whereClause);
     414        psFree(whereClause);
     415    }
     416    psFree(where);
    393417
    394418    // treat limit == 0 as "no limit"
     
    674698    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
    675699    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     700    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
     701
    676702    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    677703    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    685711    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
    686712    if (psListLength(where->list)) {
    687         psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob");
     713        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    688714        psStringAppend(&query, " AND %s", whereClause);
    689715        psFree(whereClause);
Note: See TracChangeset for help on using the changeset viewer.