From ea8b508fe7f7c350497f0ba49dcc70a3b0346945 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Sat, 13 Aug 2022 12:47:40 +0700
Subject: [PATCH] [*] Moved changes to dap_chain_net.h

---
 modules/net/include/dap_chain_net.h | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h
index dd277fab5c..88de1af227 100644
--- a/modules/net/include/dap_chain_net.h
+++ b/modules/net/include/dap_chain_net.h
@@ -38,6 +38,8 @@ along with any CellFrame SDK based project.  If not, see <http://www.gnu.org/lic
 #include "dap_chain_node.h"
 #include "dap_chain.h"
 #include "dap_chain_ledger.h"
+#include "dap_time.h"
+#include "uthash.h"
 
 
 #define DAP_CHAIN_NET_NAME_MAX 32
@@ -121,6 +123,7 @@ bool dap_chain_net_get_flag_sync_from_zero( dap_chain_net_t * a_net);
 
 bool dap_chain_net_sync_trylock(dap_chain_net_t *a_net, dap_chain_node_client_t *a_client);
 bool dap_chain_net_sync_unlock(dap_chain_net_t *a_net, dap_chain_node_client_t *a_client);
+bool dap_chain_net_sync_trylock_nolock(dap_chain_net_t* a_net, dap_chain_node_client_t* a_client);
 
 dap_chain_net_t * dap_chain_net_by_name( const char * a_name);
 dap_chain_net_t * dap_chain_net_by_id( dap_chain_net_id_t a_id);
@@ -165,6 +168,27 @@ dap_list_t * dap_chain_net_get_tx_cond_all_by_srv_uid(dap_chain_net_t * a_net, c
                                                       const dap_time_t a_time_from, const dap_time_t a_time_to,
                                                      const dap_chain_net_tx_search_type_t a_search_type);
 
+typedef struct dap_chain_datum_tx_spends_item {
+    dap_chain_datum_tx_t* tx;
+    dap_hash_fast_t tx_hash;
+
+    dap_chain_tx_out_cond_t* out_cond;
+    dap_chain_tx_in_cond_t* in_cond;
+
+    dap_chain_datum_tx_t* tx_next;
+    UT_hash_handle hh;
+}dap_chain_datum_tx_spends_item_t;
+
+typedef struct dap_chain_datum_tx_spends_items {
+    dap_chain_datum_tx_spends_item_t* tx_outs;
+    dap_chain_datum_tx_spends_item_t* tx_ins;
+} dap_chain_datum_tx_spends_items_t;
+
+dap_chain_datum_tx_spends_items_t* dap_chain_net_get_tx_cond_all_with_spends_by_srv_uid(dap_chain_net_t* a_net, const dap_chain_net_srv_uid_t a_srv_uid,
+    const dap_time_t a_time_from, const dap_time_t a_time_to,
+    const dap_chain_net_tx_search_type_t a_search_type);
+void dap_chain_datum_tx_spends_item_free(dap_chain_datum_tx_spends_item_t* a_items);
+void dap_chain_datum_tx_spends_items_free(dap_chain_datum_tx_spends_items_t* a_items);
 
 dap_chain_node_role_t dap_chain_net_get_role(dap_chain_net_t * a_net);
 
@@ -208,7 +232,6 @@ void dap_chain_net_sync_gdb_broadcast(void *a_arg, const char a_op_code, const c
 struct dap_chain_node_client * dap_chain_net_client_create_n_connect( dap_chain_net_t * a_net, struct dap_chain_node_info *a_link_info);
 struct dap_chain_node_client * dap_chain_net_client_create_n_connect_channels( dap_chain_net_t * a_net,struct dap_chain_node_info *a_link_info,
                                                                                const char * a_channels);
-int dap_cert_chain_file_save(dap_chain_datum_t * l_datum, char * net_name);
 
 typedef bool (datum_filter_func_t)(dap_chain_datum_t *a_datum, dap_chain_t * a_chain, void *a_filter_func_param);
 /**
@@ -220,3 +243,5 @@ typedef bool (datum_filter_func_t)(dap_chain_datum_t *a_datum, dap_chain_t * a_c
  * @param a_filter_func_param
  */
 dap_list_t* dap_chain_datum_list(dap_chain_net_t *a_net, dap_chain_t *a_chain, datum_filter_func_t *a_filter_func, void *a_filter_func_param);
+
+int dap_chain_datum_add(dap_chain_t* a_chain, dap_chain_datum_t* a_datum, size_t a_datum_size);
-- 
GitLab