Browse Source

fix: change timestamp unit from microseconds to milliseconds

- db_sync.c: last_timestamp_us → last_timestamp_ms, use tv_sec*1000 + tv_usec/1000
- db_sync_stub.c: same change
- QDateTime::fromMSecsSinceEpoch() in chatgui expects milliseconds
- 1 µs → 1 ms change fixes 'minutes ticking like seconds' display bug
topo_upd
Evgeny 3 months ago
parent
commit
f3719a28df
  1. 8
      src/db_sync.c
  2. 6
      tools/chatgui/transport/db_sync_stub.c

8
src/db_sync.c

@ -43,7 +43,7 @@ struct DB_SYNC_INSTANCE {
uint64_t hash;
char table_name[64];
uint64_t next_id;
uint64_t last_timestamp_us;
uint64_t last_timestamp_ms;
uint8_t enabled;
void* ttl_timer;
struct SI_PEER* peers;
@ -351,8 +351,8 @@ int db_sync_insert_len(struct DB_SYNC_INSTANCE* si, const char* json_data, size_
int db_sync_insert_signed(struct DB_SYNC_INSTANCE* si, const char* json_data, size_t len, const uint8_t* sig, size_t sig_len) {
if (!si||!si->enabled||!json_data||len==0) { DEBUG_ERROR(DEBUG_CATEGORY_DB_SYNC,"insert invalid args"); return -1; }
struct timeval tv; utun_gettimeofday(&tv, NULL); uint64_t nu=(uint64_t)tv.tv_sec*1000000ULL+(uint64_t)tv.tv_usec;
if (nu<=si->last_timestamp_us) nu=si->last_timestamp_us+1; si->last_timestamp_us=nu;
struct timeval tv; utun_gettimeofday(&tv, NULL); uint64_t nu=(uint64_t)tv.tv_sec*1000ULL+(uint64_t)tv.tv_usec/1000ULL;
if (nu<=si->last_timestamp_ms) nu=si->last_timestamp_ms+1; si->last_timestamp_ms=nu;
uint64_t dh=db_datahash((const uint8_t*)json_data,len), ts=nu, id=si->next_id;
int ret=db_record_insert(si,id,ts,dh,json_data,len,sig,sig_len); if (ret!=0) return ret;
if (si->on_insert) si->on_insert(si,json_data,len,si->db_sync->inst->node_id,si->on_insert_arg);
@ -372,7 +372,7 @@ uint32_t db_sync_count(struct DB_SYNC_INSTANCE* si) { if (!si||!si->enabled) ret
void db_sync_set_insert_cb(struct DB_SYNC_INSTANCE* si, db_sync_insert_cb cb, void* arg) { if (!si) return; si->on_insert=cb; si->on_insert_arg=arg; }
uint64_t db_sync_get_last_timestamp(struct DB_SYNC_INSTANCE* si) { return si ? si->last_timestamp_us : 0; }
uint64_t db_sync_get_last_timestamp(struct DB_SYNC_INSTANCE* si) { return si ? si->last_timestamp_ms : 0; }
int db_sync_select(struct DB_SYNC_INSTANCE* si, uint32_t offset, uint32_t limit, db_sync_select_cb cb, void* arg) {
if (!si||!si->enabled||!cb) return 0; sqlite3_stmt* stmt;

6
tools/chatgui/transport/db_sync_stub.c

@ -21,7 +21,7 @@
struct DB_SYNC_INSTANCE {
struct DB_SYNC* db_sync;
uint8_t enabled;
uint64_t last_timestamp_us;
uint64_t last_timestamp_ms;
db_sync_insert_cb on_insert;
void* on_insert_arg;
};
@ -119,7 +119,7 @@ int db_sync_insert_signed(struct DB_SYNC_INSTANCE* si, const char* json_data,
(void)sig; (void)sig_len;
if (!si || !si->enabled || !json_data || len == 0) return -1;
struct timeval tv; utun_gettimeofday(&tv, NULL);
si->last_timestamp_us = (uint64_t)tv.tv_sec * 1000000ULL + (uint64_t)tv.tv_usec;
si->last_timestamp_ms = (uint64_t)tv.tv_sec * 1000ULL + (uint64_t)tv.tv_usec / 1000ULL;
if (si->on_insert)
si->on_insert(si, json_data, len, si->db_sync->inst->node_id, si->on_insert_arg);
return 0;
@ -158,5 +158,5 @@ void db_sync_set_insert_cb(struct DB_SYNC_INSTANCE* si, db_sync_insert_cb cb, vo
uint64_t db_sync_get_last_timestamp(struct DB_SYNC_INSTANCE* si) {
if (!si) return 0;
return si->last_timestamp_us;
return si->last_timestamp_ms;
}

Loading…
Cancel
Save