Skip to content
Snippets Groups Projects
Commit 19410795 authored by Dmitriy A. Gerasimov's avatar Dmitriy A. Gerasimov
Browse files

[*] New callbacks and API for downlaying objects

parent 2bc8e2f5
No related branches found
No related tags found
No related merge requests found
......@@ -33,6 +33,10 @@ typedef struct dap_chain_cs_dag_pvt {
#define PVT(a) ((dap_chain_cs_dag_pvt_t *) a->_pvt )
static int s_chain_callback_element_add(dap_chain_t * a_chain, void * a_data, size_t a_data_size);// Accept new element in chain
static int s_chain_callback_element_get_first(dap_chain_t * a_chain, void ** a_data, size_t * a_data_size ); // Get the fisrt element from chain
static int s_chain_callback_element_get_next( dap_chain_t * a_chain, void ** a_data, size_t * a_data_size ); // Get the next element from chain from the current one
/**
* @brief dap_chain_cs_dag_init
* @return
......@@ -53,14 +57,21 @@ void dap_chain_cs_dag_deinit()
/**
* @brief dap_chain_cs_dag_new
* @param a_chain
* @return
* @param a_chain_cfg
*/
dap_chain_cs_dag_t *dap_chain_cs_dag_new(dap_chain_t * a_chain)
void dap_chain_cs_dag_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
{
dap_chain_cs_dag_t * l_ret = DAP_NEW_Z(dap_chain_cs_dag_t);
l_ret->_pvt = DAP_NEW_Z(dap_chain_cs_dag_pvt_t);
l_ret->chain = a_chain;
return l_ret;
dap_chain_cs_dag_t * l_chain_cs_dag = DAP_NEW_Z(dap_chain_cs_dag_t);
l_chain_cs_dag->_pvt = DAP_NEW_Z(dap_chain_cs_dag_pvt_t);
l_chain_cs_dag->chain = a_chain;
a_chain->callback_delete = dap_chain_cs_dag_delete;
a_chain->callback_element_add = s_chain_callback_element_add; // Accept new element in chain
a_chain->callback_element_get_first = s_chain_callback_element_get_first; // Get the fisrt element from chain
a_chain->callback_element_get_next = s_chain_callback_element_get_next; // Get the next element from chain from the current one
a_chain->_inheritor = l_chain_cs_dag;
log_it (L_NOTICE, "DAG chain initialized");
}
/**
......@@ -68,13 +79,49 @@ dap_chain_cs_dag_t *dap_chain_cs_dag_new(dap_chain_t * a_chain)
* @param a_dag
* @return
*/
void dap_chain_cs_dag_delete(dap_chain_cs_dag_t * a_dag)
void dap_chain_cs_dag_delete(dap_chain_t * a_chain)
{
dap_chain_cs_dag_t * l_dag = DAP_CHAIN_CS_DAG ( a_chain );
if(l_dag->callback_delete )
l_dag->callback_delete(l_dag);
if(l_dag->_inheritor)
DAP_DELETE(l_dag->_inheritor);
if(l_dag->_pvt)
DAP_DELETE(l_dag->_pvt);
DAP_DELETE(l_dag);
}
/**
* @brief s_chain_callback_element_add Accept new element in chain
* @param a_chain
* @param a_data
* @param a_data_size
*/
static int s_chain_callback_element_add(dap_chain_t * a_chain, void * a_data, size_t a_data_size)
{
return -1; // TODO
}
/**
* @brief s_chain_callback_element_get_first Get the fisrt element from chain
* @param a_chain
* @param a_data
* @param a_data_size
* @return 0 if ok
*/
static int s_chain_callback_element_get_first(dap_chain_t * a_chain, void ** a_data, size_t * a_data_size )
{
return -1; // TODO
}
/**
* @brief s_chain_callback_element_get_next Get the next element from chain from the current one
* @param a_chain
* @param a_data
* @param a_data_size
* @return 0 if ok
*/
static int s_chain_callback_element_get_next( dap_chain_t * a_chain, void ** a_data, size_t * a_data_size )
{
if(a_dag->callback_delete )
a_dag->callback_delete(a_dag->chain);
if(a_dag->_inheritor)
DAP_DELETE(a_dag->_inheritor);
if(a_dag->_pvt)
DAP_DELETE(a_dag->_pvt);
DAP_DELETE(a_dag);
return -1; // TODO
}
......@@ -24,12 +24,18 @@
#pragma once
#include "dap_chain.h"
#include "dap_chain_cs_dag_event.h"
typedef struct dap_chain_cs_dag dap_chain_cs_dag_t;
typedef void (*dap_chain_cs_dag_callback_t)(dap_chain_cs_dag_t *);
typedef int (*dap_chain_cs_dag_callback_event_t)(dap_chain_cs_dag_t *, dap_chain_cs_dag_event_t *);
typedef struct dap_chain_cs_dag
{
dap_chain_t * chain;
dap_chain_callback_new_t callback_new;
dap_chain_callback_t callback_delete;
dap_chain_cs_dag_event_callback_ptr_t callback_event_input;
dap_chain_cs_dag_callback_t callback_delete;
dap_chain_cs_dag_callback_event_t callback_event_input;
dap_chain_cs_dag_callback_event_t callback_event_verify;
void * _pvt;
void * _inheritor;
......@@ -40,6 +46,5 @@ typedef struct dap_chain_cs_dag
int dap_chain_cs_dag_init();
void dap_chain_cs_dag_deinit();
dap_chain_cs_dag_t *dap_chain_cs_dag_new(dap_chain_t * a_chain);
void dap_chain_cs_dag_delete(dap_chain_cs_dag_t * a_dag);
void dap_chain_cs_dag_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg);
void dap_chain_cs_dag_delete(dap_chain_t * a_chain);
......@@ -69,15 +69,6 @@ void dap_chain_cs_dag_event_delete(dap_chain_cs_dag_t * a_dag,dap_chain_cs_dag_e
}
/**
* @brief dap_chain_cs_dag_event_verify
* @return
*/
int dap_chain_cs_dag_event_verify(dap_chain_cs_dag_event_t * a_event)
{
return 0;
}
/**
* @brief dap_chain_cs_dag_event_get_datum
......
......@@ -39,13 +39,11 @@ typedef struct dap_chain_cs_dag_event {
uint8_t hashes_n_signs_n_datum[]; // Hashes, signes and datum
} dap_chain_cs_dag_event_t;
typedef int (*dap_chain_cs_dag_event_callback_ptr_t)(dap_chain_cs_dag_t *, dap_chain_cs_dag_event_t *);
dap_chain_cs_dag_event_t * dap_chain_cs_dag_event_new(dap_chain_cs_dag_t * a_dag, dap_chain_datum_t * a_datum,
dap_enc_key_t * a_key,
dap_chain_hash_fast_t * a_hashes, size_t a_hashes_count);
void dap_chain_cs_dag_event_delete(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_event_t * a_event);
int dap_chain_cs_dag_event_verify(dap_chain_cs_dag_event_t * a_event);
dap_chain_datum_t* dap_chain_cs_dag_event_get_datum(dap_chain_cs_dag_event_t * a_event);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment