From 547d90ec7bbab2651125289db8336cb7c01306bd Mon Sep 17 00:00:00 2001
From: Dmitry Gerasimov <dmitriy.gerasimov@demlabs.net>
Date: Thu, 25 Aug 2022 18:19:16 +0700
Subject: [PATCH] [*] Time fix

---
 modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c | 5 ++---
 modules/net/dap_chain_node_client.c                         | 5 +++--
 modules/net/srv/dap_chain_net_srv_client.c                  | 5 ++---
 modules/net/srv/include/dap_chain_net_srv.h                 | 3 ++-
 modules/service/vpn/dap_chain_net_vpn_client.c              | 4 ++--
 5 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
index 9b4a3b43b5..e104d7211e 100644
--- a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
+++ b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
@@ -25,6 +25,7 @@ along with any CellFrame SDK based project.  If not, see <http://www.gnu.org/lic
 #include <sys/time.h>
 #include <time.h>
 #include "dap_global_db.h"
+#include "dap_time.h"
 #include "dap_timerfd.h"
 #include "dap_hash.h"
 #include "rand/dap_rand.h"
@@ -396,9 +397,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch , void* a_arg)
         }
         l_request->err_code = 0;
         strncpy(l_request->ip_send, a_ch->stream->esocket->hostaddr, INET_ADDRSTRLEN);
-        struct timespec l_recvtime2;
-        clock_gettime(CLOCK_REALTIME, &l_recvtime2);
-        l_request->recv_time2 = l_recvtime2;
+        l_request->recv_time2 = dap_nanotime_now();
 
         dap_stream_ch_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_CHECK_RESPONSE, l_request,
                                        l_request->data_size + sizeof(pkt_test_t));
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index 911dd035f4..dca8e4a052 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -20,6 +20,7 @@
  along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "dap_time.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <time.h>
@@ -650,8 +651,8 @@ static int s_save_stat_to_database(dap_stream_ch_chain_net_srv_pkt_test_t *a_req
     int l_ret = 0;
     if(!a_request)
         return -1;
-    long l_t1_ms = a_request->send_time1.tv_sec * 1000 + a_request->send_time1.tv_nsec / 1e6;
-    long l_t2_ms = a_request->recv_time1.tv_sec * 1000 + a_request->recv_time1.tv_nsec / 1e6;
+    long l_t1_ms = a_request->send_time1 / 1e6;
+    long l_t2_ms = a_request->recv_time1 / 1e6;
     struct json_object *jobj = json_object_new_object();
     time_t l_cur_t = time(NULL);
     char buf[1024];
diff --git a/modules/net/srv/dap_chain_net_srv_client.c b/modules/net/srv/dap_chain_net_srv_client.c
index ace4bf6002..4817673d5b 100644
--- a/modules/net/srv/dap_chain_net_srv_client.c
+++ b/modules/net/srv/dap_chain_net_srv_client.c
@@ -27,6 +27,7 @@ along with any CellFrame SDK based project.  If not, see <http://www.gnu.org/lic
 #include "dap_chain_net_srv.h"
 #include "dap_chain_net_srv_client.h"
 #include "dap_common.h"
+#include "dap_time.h"
 
 #define LOG_TAG "dap_chain_net_srv_client"
 
@@ -119,9 +120,7 @@ static void s_srv_client_pkt_in(dap_stream_ch_chain_net_srv_t *a_ch_chain, uint8
                                               l_srv_client->callbacks_arg);
             break;
         }
-        struct timespec l_recv_time;
-        clock_gettime(CLOCK_REALTIME, &l_recv_time);
-        l_response->recv_time1 = l_recv_time;
+        l_response->recv_time1 = dap_nanotime_now();
         dap_chain_hash_fast_t l_data_hash;
         dap_hash_fast(l_response->data, l_response->data_size, &l_data_hash);
         if (!dap_hash_fast_compare(&l_data_hash, &l_response->data_hash)) {
diff --git a/modules/net/srv/include/dap_chain_net_srv.h b/modules/net/srv/include/dap_chain_net_srv.h
index e42da15fa0..90efd985de 100755
--- a/modules/net/srv/include/dap_chain_net_srv.h
+++ b/modules/net/srv/include/dap_chain_net_srv.h
@@ -32,6 +32,7 @@ along with any CellFrame SDK based project.  If not, see <http://www.gnu.org/lic
 #include "dap_common.h"
 #include "dap_config.h"
 #include "dap_stream_ch.h"
+#include "dap_time.h"
 
 //Service direction
 enum dap_chain_net_srv_order_direction{
@@ -169,7 +170,7 @@ typedef struct dap_stream_ch_chain_net_srv_pkt_test {
     dap_chain_net_id_t      net_id;
     dap_chain_net_srv_uid_t srv_uid;
     int32_t                 time_connect_ms;
-    struct timespec         recv_time1, recv_time2, send_time1, send_time2;
+    dap_nanotime_t          recv_time1, recv_time2, send_time1, send_time2;
     byte_t                  ip_send[INET_ADDRSTRLEN], ip_recv[INET_ADDRSTRLEN];
     int32_t                 err_code;
     uint64_t                data_size_send, data_size_recv, data_size;
diff --git a/modules/service/vpn/dap_chain_net_vpn_client.c b/modules/service/vpn/dap_chain_net_vpn_client.c
index ecac0fa883..d8917a2ff4 100644
--- a/modules/service/vpn/dap_chain_net_vpn_client.c
+++ b/modules/service/vpn/dap_chain_net_vpn_client.c
@@ -41,6 +41,7 @@
 #include "dap_common.h"
 #include "dap_config.h"
 #include "dap_strfuncs.h"
+#include "dap_time.h"
 #include "rand/dap_rand.h"
 
 #ifdef DAP_OS_LINUX
@@ -555,8 +556,7 @@ int dap_chain_net_vpn_client_check(dap_chain_net_t *a_net, const char *a_ipv4_st
             if(a_ipv4_str)
                 memcpy(l_request->ip_recv, a_ipv4_str, min(sizeof(l_request->ip_recv), strlen(a_ipv4_str)));
             l_request->time_connect_ms = l_dtime_connect_ms;
-            clock_gettime(CLOCK_REALTIME, &l_t);
-            l_request->send_time1 = l_t;
+            l_request->send_time1 = dap_nanotime_now();
             size_t l_request_size = l_request->data_size + sizeof(dap_stream_ch_chain_net_srv_pkt_test_t);
             dap_stream_ch_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_CHECK_REQUEST, l_request, l_request_size);
             dap_stream_ch_set_ready_to_write_unsafe(l_ch, true);
-- 
GitLab