void inferUtcDelta(char *correctUtcTimeStamp) { IonVdb *ionvdb = getIonVdb(); time_t correctUtcTime = readTimestampUTC(correctUtcTimeStamp, 0); time_t clocktime = getUTCTime() + ionvdb->deltaFromUTC; int delta = clocktime - correctUtcTime; char buffer[80]; CHKVOID(setDeltaFromUTC(delta) == 0); sprintf(buffer, "[i] Delta from UTC revised, is now %d.", delta); writeMemo(buffer); }
static void executeDelete(int tokenCount, char **tokens) { time_t refTime; time_t timestamp; uvast fromNodeNbr; uvast toNodeNbr; if (tokenCount < 2) { printText("Delete what?"); return; } if (tokenCount != 5) { SYNTAX_ERROR; return; } if (tokens[2][0] == '*') { timestamp = 0; } else { refTime = _referenceTime(NULL); timestamp = readTimestampUTC(tokens[2], refTime); if (timestamp == 0) { SYNTAX_ERROR; return; } } fromNodeNbr = strtouvast(tokens[3]); toNodeNbr = strtouvast(tokens[4]); if (strcmp(tokens[1], "contact") == 0) { oK(rfx_remove_contact(timestamp, fromNodeNbr, toNodeNbr)); //oK(_forecastNeeded(1)); return; } if (strcmp(tokens[1], "range") == 0) { oK(rfx_remove_range(timestamp, fromNodeNbr, toNodeNbr)); return; } SYNTAX_ERROR; }
void executeAdd(int tokenCount, char **tokens) { time_t refTime; time_t fromTime; time_t toTime; uvast fromNodeNbr; uvast toNodeNbr; unsigned int xmitRate; float prob; unsigned int owlt; if (tokenCount < 2) { //printText("Add what?"); return; } switch (tokenCount) { case 8: prob = atof(tokens[7]); break; case 7: prob = 1.0; break; default: SYNTAX_ERROR; return; } refTime = _referenceTime(NULL); fromTime = readTimestampUTC(tokens[2], refTime); toTime = readTimestampUTC(tokens[3], refTime); if (toTime <= fromTime) { printText("Interval end time must be later than start time."); return; } fromNodeNbr = strtouvast(tokens[4]); toNodeNbr = strtouvast(tokens[5]); if (strcmp(tokens[1], "contact") == 0) { xmitRate = strtol(tokens[6], NULL, 0); oK(rfx_insert_contact(fromTime, toTime, fromNodeNbr, toNodeNbr, xmitRate, prob)); //oK(_forecastNeeded(1)); return; } if (strcmp(tokens[1], "range") == 0) { owlt = atoi(tokens[6]); oK(rfx_insert_range(fromTime, toTime, fromNodeNbr, toNodeNbr, owlt)); return; } SYNTAX_ERROR; }
static void executeInfo(int tokenCount, char **tokens) { Sdr sdr = getIonsdr(); PsmPartition ionwm = getIonwm(); IonVdb *vdb = getIonVdb(); time_t refTime; time_t timestamp; uvast fromNode; uvast toNode; IonCXref arg1; PsmAddress elt; PsmAddress addr; PsmAddress nextElt; char buffer[RFX_NOTE_LEN]; IonRXref arg2; if (tokenCount < 2) { printText("Information on what?"); return; } if (tokenCount != 5) { SYNTAX_ERROR; return; } refTime = _referenceTime(NULL); timestamp = readTimestampUTC(tokens[2], refTime); fromNode = strtouvast(tokens[3]); toNode = strtouvast(tokens[4]); if (strcmp(tokens[1], "contact") == 0) { memset((char *) &arg1, 0, sizeof(IonCXref)); arg1.fromNode = fromNode; arg1.toNode = toNode; arg1.fromTime = timestamp; CHKVOID(sdr_begin_xn(sdr)); elt = sm_rbt_search(ionwm, vdb->contactIndex, rfx_order_contacts, &arg1, &nextElt); if (elt) { addr = sm_rbt_data(ionwm, elt); oK(rfx_print_contact(addr, buffer)); printText(buffer); } else { printText("Contact not found in database."); } sdr_exit_xn(sdr); return; } if (strcmp(tokens[1], "range") == 0) { memset((char *) &arg2, 0, sizeof(IonRXref)); arg2.fromNode = fromNode; arg2.toNode = toNode; arg2.fromTime = timestamp; CHKVOID(sdr_begin_xn(sdr)); elt = sm_rbt_search(ionwm, vdb->rangeIndex, rfx_order_ranges, &arg2, &nextElt); if (elt) { addr = sm_rbt_data(ionwm, elt); oK(rfx_print_range(addr, buffer)); printText(buffer); } else { printText("Range not found in database."); } sdr_exit_xn(sdr); return; } SYNTAX_ERROR; }