diff --git a/src/indep_adms/agent/adm_amp_agent_impl.c b/src/indep_adms/agent/adm_amp_agent_impl.c index 7813d77..835e621 100644 --- a/src/indep_adms/agent/adm_amp_agent_impl.c +++ b/src/indep_adms/agent/adm_amp_agent_impl.c @@ -488,78 +488,78 @@ tnv_t *adm_agent_binary_log_op(amp_agent_op_e op, vector_t *stack) case AMP_TYPE_INT: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_int(*lval, &ls) && tnv_to_int(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_int(*lval, &ls) || tnv_to_int(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_int(*lval, &ls) < tnv_to_int(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_int(*lval, &ls) > tnv_to_int(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_int(*lval, &ls) <= tnv_to_int(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_int(*lval, &ls) >= tnv_to_int(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_int(*lval, &ls) == tnv_to_int(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_int(*lval, &ls) && tnv_to_int(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_int(*lval, &ls) || tnv_to_int(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_int(*lval, &ls) < tnv_to_int(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_int(*lval, &ls) > tnv_to_int(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_int(*lval, &ls) <= tnv_to_int(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_int(*lval, &ls) >= tnv_to_int(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_int(*lval, &ls) == tnv_to_int(*rval, &rs); break; default: ls = rs = 0; break; } break; case AMP_TYPE_UINT: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_uint(*lval, &ls) && tnv_to_uint(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_uint(*lval, &ls) || tnv_to_uint(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_uint(*lval, &ls) < tnv_to_uint(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_uint(*lval, &ls) > tnv_to_uint(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_uint(*lval, &ls) <= tnv_to_uint(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_uint(*lval, &ls) >= tnv_to_uint(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_uint(*lval, &ls) == tnv_to_uint(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_uint(*lval, &ls) && tnv_to_uint(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_uint(*lval, &ls) || tnv_to_uint(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_uint(*lval, &ls) < tnv_to_uint(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_uint(*lval, &ls) > tnv_to_uint(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_uint(*lval, &ls) <= tnv_to_uint(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_uint(*lval, &ls) >= tnv_to_uint(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_uint(*lval, &ls) == tnv_to_uint(*rval, &rs); break; default: ls = rs = 0; break; } break; case AMP_TYPE_VAST: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_vast(*lval, &ls) && tnv_to_vast(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_vast(*lval, &ls) || tnv_to_vast(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_vast(*lval, &ls) < tnv_to_vast(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_vast(*lval, &ls) > tnv_to_vast(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_vast(*lval, &ls) <= tnv_to_vast(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_vast(*lval, &ls) >= tnv_to_vast(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_vast(*lval, &ls) == tnv_to_vast(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_vast(*lval, &ls) && tnv_to_vast(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_vast(*lval, &ls) || tnv_to_vast(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_vast(*lval, &ls) < tnv_to_vast(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_vast(*lval, &ls) > tnv_to_vast(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_vast(*lval, &ls) <= tnv_to_vast(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_vast(*lval, &ls) >= tnv_to_vast(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_vast(*lval, &ls) == tnv_to_vast(*rval, &rs); break; default: ls = rs = 0; break; } break; case AMP_TYPE_UVAST: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_uvast(*lval, &ls) && tnv_to_uvast(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_uvast(*lval, &ls) || tnv_to_uvast(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_uvast(*lval, &ls) < tnv_to_uvast(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_uvast(*lval, &ls) > tnv_to_uvast(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) <= tnv_to_uvast(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) >= tnv_to_uvast(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_uvast(*lval, &ls) == tnv_to_uvast(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_uvast(*lval, &ls) && tnv_to_uvast(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_uvast(*lval, &ls) || tnv_to_uvast(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_uvast(*lval, &ls) < tnv_to_uvast(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_uvast(*lval, &ls) > tnv_to_uvast(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) <= tnv_to_uvast(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) >= tnv_to_uvast(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_uvast(*lval, &ls) == tnv_to_uvast(*rval, &rs); break; default: ls = rs = 0; break; } break; case AMP_TYPE_REAL32: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_real32(*lval, &ls) && tnv_to_real32(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_real32(*lval, &ls) || tnv_to_real32(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_real32(*lval, &ls) < tnv_to_real32(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_real32(*lval, &ls) > tnv_to_real32(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_real32(*lval, &ls) <= tnv_to_real32(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_real32(*lval, &ls) >= tnv_to_real32(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_real32(*lval, &ls) == tnv_to_real32(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_real32(*lval, &ls) && tnv_to_real32(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_real32(*lval, &ls) || tnv_to_real32(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_real32(*lval, &ls) < tnv_to_real32(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_real32(*lval, &ls) > tnv_to_real32(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_real32(*lval, &ls) <= tnv_to_real32(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_real32(*lval, &ls) >= tnv_to_real32(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_real32(*lval, &ls) == tnv_to_real32(*rval, &rs); break; default: ls = rs = 0; break; } break; case AMP_TYPE_REAL64: switch(op) { - case LOGAND: result->value.as_byte = tnv_to_real64(*lval, &ls) && tnv_to_real64(*rval, &rs); break; - case LOGOR: result->value.as_byte = tnv_to_real64(*lval, &ls) || tnv_to_real64(*rval, &rs); break; - case LT: result->value.as_byte = tnv_to_real64(*lval, &ls) < tnv_to_real64(*rval, &rs); break; - case GT: result->value.as_byte = tnv_to_real64(*lval, &ls) > tnv_to_real64(*rval, &rs); break; - case LTE: result->value.as_byte = tnv_to_real64(*lval, &ls) <= tnv_to_real64(*rval, &rs); break; - case GTE: result->value.as_byte = tnv_to_real64(*lval, &ls) >= tnv_to_real64(*rval, &rs); break; - case EQ: result->value.as_byte = tnv_to_real64(*lval, &ls) == tnv_to_real64(*rval, &rs); break; + case LOGAND: result->value.as_byte = tnv_to_real64(*lval, &ls) && tnv_to_real64(*rval, &rs); break; + case LOGOR: result->value.as_byte = tnv_to_real64(*lval, &ls) || tnv_to_real64(*rval, &rs); break; + case LT: result->value.as_byte = tnv_to_real64(*lval, &ls) < tnv_to_real64(*rval, &rs); break; + case GT: result->value.as_byte = tnv_to_real64(*lval, &ls) > tnv_to_real64(*rval, &rs); break; + case LTE: result->value.as_byte = tnv_to_real64(*lval, &ls) <= tnv_to_real64(*rval, &rs); break; + case GTE: result->value.as_byte = tnv_to_real64(*lval, &ls) >= tnv_to_real64(*rval, &rs); break; + case EQ: result->value.as_byte = tnv_to_real64(*lval, &ls) == tnv_to_real64(*rval, &rs); break; default: ls = rs = 0; break; } break; @@ -1496,6 +1496,7 @@ tnv_t *amp_agent_ctrl_gen_rpts(eid_t *def_mgr, tnvc_t *parms, int8_t *status) for(ac_it = vecit_first(&(ids->values)); vecit_valid(ac_it); ac_it = vecit_next(ac_it)) { ari_t *cur_id = vecit_data(ac_it); + OS_time_t timestamp; OS_GetLocalTime(×tamp); rpt_t *rpt = rpt_create(ari_copy_ptr(cur_id), timestamp, NULL); diff --git a/src/mgr/nm_mgr_rx.c b/src/mgr/nm_mgr_rx.c index 8bc9444..dc92f7b 100644 --- a/src/mgr/nm_mgr_rx.c +++ b/src/mgr/nm_mgr_rx.c @@ -381,6 +381,7 @@ void *mgr_rx_thread(void *arg) msg_agent_t *agent_msg = msg_agent_deserialize(msg_data, &success); rx_agent_reg(&meta, agent_msg); #if defined(HAVE_MYSQL) || defined(HAVE_POSTGRESQL) + db_insert_msg_reg_agent(incoming_idx, agent_msg, &db_status); #endif msg_agent_release(agent_msg, 1); diff --git a/src/mgr/nm_mgr_sql.c b/src/mgr/nm_mgr_sql.c index d1702cb..8e50be2 100644 --- a/src/mgr/nm_mgr_sql.c +++ b/src/mgr/nm_mgr_sql.c @@ -168,7 +168,7 @@ static char* queries[MGR_NUM_SQL_CONNECTIONS][MGR_NUM_QUERIES]; bind_res[idx].is_null = &is_null[idx]; \ bind_res[idx].error = &is_err[idx]; #endif // HAVE_MYSQL - + #ifdef HAVE_MYSQL #define dbprep_bind_param_cmn(idx,var,type) \ bind_param[idx].buffer_type = type; \ @@ -176,7 +176,6 @@ static char* queries[MGR_NUM_SQL_CONNECTIONS][MGR_NUM_QUERIES]; bind_param[idx].is_null = 0; \ bind_param[idx].error = 0; #endif // HAVE_MYSQL - #ifdef HAVE_POSTGRESQL static void double_to_nbo(double in, double *out) { @@ -432,10 +431,12 @@ uint32_t db_incoming_initialize(amp_tv_t timestamp, eid_t sender_eid) { uint32_t rtv = 0; // Note: An ID of 0 is reserved as an error condition. MySQL will never create a new entry for this table with a value of 0. // TODO postgresql is that true for postgresql too? char *name = sender_eid.name; + int64 time_stamp_seconds = OS_TimeGetTotalSeconds(timestamp.secs); + CHKZERO(!db_mgt_connected(DB_RPT_CON)); dbprep_declare(DB_RPT_CON, MSGS_INCOMING_CREATE, 2, 1); - dbprep_bind_param_int(0,timestamp.secs.ticks); + dbprep_bind_param_int(0,time_stamp_seconds); dbprep_bind_param_str(1,name); #ifdef HAVE_MYSQL mysql_stmt_bind_param(stmt, bind_param); @@ -4814,6 +4815,10 @@ int db_query_ari_metadata(db_con_t dbidx, ari_t *ari, uint32_t *metadata_id, uin mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, metadata_id_fnum); + *metadata_id = ntohl(*((uint32_t *) iptr)); + iptr = PQgetvalue(res, 0, fp_spec_id_fnum); + *fp_spec_id = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL return AMP_OK; @@ -4826,12 +4831,13 @@ uint32_t db_insert_ari_reg(db_con_t dbidx, ari_t *ari, int *status) uint32_t params_id = 0; uint32_t rtv = 0; + + // If Nickname (including Namespace) is defined if(ARI_GET_FLAG_NN(ari->as_reg.flags)) { int adm_enum; // ari->as_reg.nn_idx int adm_obj_type; - // Query metadata if (db_query_ari_metadata(dbidx, ari, &metadata_id, &fp_spec_id) == AMP_FAIL) { @@ -4896,6 +4902,8 @@ uint32_t db_insert_ari_reg(db_con_t dbidx, ari_t *ari, int *status) mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL return rtv; @@ -5002,6 +5010,8 @@ uint32_t db_insert_ac(db_con_t dbidx, ac_t *ac, int *status) mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL @@ -5279,6 +5289,8 @@ uint32_t db_insert_tnvc_params(db_con_t dbidx, uint32_t fp_spec_id, tnvc_t *tnvc mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL return rtv; @@ -5330,6 +5342,8 @@ uint32_t db_insert_tnvc(db_con_t dbidx, tnvc_t *tnvc, int *status) mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL @@ -5357,7 +5371,9 @@ void db_insert_msg_rpt_set_rpt(db_con_t dbidx, uint32_t entry_id, rpt_t* rpt, in }; dbprep_declare(DB_RPT_CON, MSGS_ADD_REPORT_SET_ENTRY, C_NUM_COLS, 1); dbprep_bind_param_int(C_ENTRY_ID,entry_id); - dbprep_bind_param_int(C_TS,rpt->time.ticks); + // adding back the AVTIME and the offset to the unixposix for DB storage and display + int64 real_time_stamp = rpt->time.ticks +EPOCH_ABSTIME_DTN + EPOCH_DTN_POSIX; + dbprep_bind_param_int(C_TS, real_time_stamp); /** Prepare Dependent Fields **/ uint32_t ari_id=db_insert_ari(dbidx, rpt->id, status); @@ -5502,6 +5518,8 @@ uint32_t db_insert_msg_reg_agent(uint32_t grp_id, msg_agent_t *msg, int *status) mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL @@ -5585,6 +5603,8 @@ uint32_t db_insert_msg_rpt_set(uint32_t grp_id, msg_rpt_t *rpt, int *status) mysql_stmt_free_result(stmt); #endif // HAVE_MYSQL #ifdef HAVE_POSTGRESQL + char *iptr = PQgetvalue(res, 0, 0); + rtv = ntohl(*((uint32_t *) iptr)); PQclear(res); #endif // HAVE_POSTGRESQL diff --git a/src/shared/primitives/report.c b/src/shared/primitives/report.c index 2552de3..7fb1b5a 100644 --- a/src/shared/primitives/report.c +++ b/src/shared/primitives/report.c @@ -184,7 +184,6 @@ rpt_t* rpt_create(ari_t *id, OS_time_t timestamp, tnvc_t *entries) AMP_DEBUG_EXIT("rpt_create","->NULL",NULL); return NULL; } - /* Step 2: Populate the report. */ result->id = id; result->time = timestamp;