From 5c3c7c41284ed9645e0fa99927088aa1e0af3e5b Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Wed, 6 Nov 2019 16:56:59 +0700
Subject: [PATCH] [+] Added wrapping dap_chain_net. Added wrapping for
 functions: dap_chain_net_load_all, dap_chain_net_go_to, dap_chain_net_start,
 dap_chain_net_stop.

---
 include/libdap_chain_net_python.h | 83 +++++++++++++++++++++++++++++++
 src/libdap_chain_net_python.c     | 76 ++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+)

diff --git a/include/libdap_chain_net_python.h b/include/libdap_chain_net_python.h
index c5fd1031..7ba73125 100644
--- a/include/libdap_chain_net_python.h
+++ b/include/libdap_chain_net_python.h
@@ -1,6 +1,7 @@
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
 #include "dap_chain_net.h"
+#include "wrapping_dap_chain_net_state.h"
 
 #ifdef __cplusplus
 extern "C"{
@@ -8,11 +9,93 @@ extern "C"{
 
 typedef struct PyDapChainNet{
     PyObject_HEAD
+    dap_chain_net_t *chain_net;
 }PyDapChainNetObject;
 
 int dap_chain_net_init_py(void);
 void dap_chain_net_deinit_py(void);
 
+PyObject *dap_chain_net_load_all_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_state_go_to_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_start_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_stop_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_links_establish_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_sync_chains_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_sync_gdb_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_sync_all_py(PyObject *self, PyObject *args);
+
+PyObject *dap_chain_net_proc_datapool_py(PyObject *self, PyObject *args);
+
+PyObject *dap_chain_net_by_name_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_by_id_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_id_by_name_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_ledger_by_net_name_py(PyObject *self, PyObject *args);
+
+PyObject *dap_chain_net_get_chain_by_name_py(PyObject *self, PyObject *args);
+
+PyObject *dap_chain_net_get_cur_addr_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_get_cur_cell_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_get_cur_addr_int_py(PyObject *self, PyObject *args);
+
+PyObject *dap_chain_net_get_gdb_group_mempool_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_get_gdb_group_mempool_by_chain_type_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_links_connect_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_get_chain_by_chain_type_py(PyObject *self, PyObject *args);
+
+static PyMethodDef DapChainNetMethods[] = {
+    {"loadAll", dap_chain_net_load_all_py, METH_NOARGS | METH_STATIC, ""},
+    {"stateGoTo", dap_chain_net_state_go_to_py, METH_VARARGS, ""},
+    {"start", dap_chain_net_start_py, METH_VARARGS, ""},
+    {"stop", dap_chain_net_stop_py, METH_VARARGS, ""},
+    /*{"csAdd", (PyCFunction)dap_chain_cs_add_py, METH_VARARGS, ""},
+    {"csCreate", (PyCFunction)dap_chain_cs_create_py, METH_VARARGS, ""},
+    {"classAdd", (PyCFunction)dap_chain_class_add_py, METH_VARARGS, ""},
+    {"classCreate", (PyCFunction)dap_chain_class_create_py, METH_VARARGS, ""},*/
+    {NULL, NULL, 0, NULL}
+};
+
+static PyTypeObject DapChainNetObject_DapChainNetObjectType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "CellFrame.ChainNet",            /* tp_name */
+    sizeof(PyDapChainNetObject),     /* tp_basicsize */
+    0,                               /* tp_itemsize */
+    0,                               /* tp_dealloc */
+    0,                               /* tp_print */
+    0,                               /* tp_getattr */
+    0,                               /* tp_setattr */
+    0,                               /* tp_reserved */
+    0,                               /* tp_repr */
+    0,                               /* tp_as_number */
+    0,                               /* tp_as_sequence */
+    0,                               /* tp_as_mapping */
+    0,                               /* tp_hash  */
+    0,                               /* tp_call */
+    0,                               /* tp_str */
+    0,                               /* tp_getattro */
+    0,                               /* tp_setattro */
+    0,                               /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT |
+        Py_TPFLAGS_BASETYPE,         /* tp_flags */
+    "Chain net object",              /* tp_doc */
+    0,		                         /* tp_traverse */
+    0,		                         /* tp_clear */
+    0,		                         /* tp_richcompare */
+    0,                               /* tp_weaklistoffset */
+    0,		                         /* tp_iter */
+    0,		                         /* tp_iternext */
+    DapChainNetMethods,              /* tp_methods */
+    0,                               /* tp_members */
+    0,                               /* tp_getset */
+    0,                               /* tp_base */
+    0,                               /* tp_dict */
+    0,                               /* tp_descr_get */
+    0,                               /* tp_descr_set */
+    0,                               /* tp_dictoffset */
+    0,                               /* tp_init */
+    0,                               /* tp_alloc */
+    PyType_GenericNew,               /* tp_new */
+};
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/libdap_chain_net_python.c b/src/libdap_chain_net_python.c
index 8889084d..88e4954d 100644
--- a/src/libdap_chain_net_python.c
+++ b/src/libdap_chain_net_python.c
@@ -7,3 +7,79 @@ int dap_chain_net_init_py(void){
 void dap_chain_net_deinit_py(void){
     dap_chain_net_deinit();
 }
+
+PyObject *dap_chain_net_load_all_py(PyObject *self, PyObject *args){
+    dap_chain_net_load_all();
+    return PyLong_FromLong(0);
+}
+PyObject *dap_chain_net_state_go_to_py(PyObject *self, PyObject *args){
+    PyObject *obj_net_state;
+    if (!PyArg_ParseTuple(args, "O", &obj_net_state))
+        return NULL;
+    int res = dap_chain_net_state_go_to(((PyDapChainNetObject*)self)->chain_net, ((PyDapChainNetStateObject*)obj_net_state)->state);
+    return PyLong_FromLong(res);
+}
+PyObject *dap_chain_net_start_py(PyObject *self, PyObject *args){
+    int res = dap_chain_net_start(((PyDapChainNetObject*)self)->chain_net);
+    return PyLong_FromLong(res);
+}
+PyObject *dap_chain_net_stop_py(PyObject *self, PyObject *args){
+    int res = dap_chain_net_stop(((PyDapChainNetObject*)self)->chain_net);
+    return PyLong_FromLong(res);
+}
+PyObject *dap_chain_net_links_establish_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_sync_chains_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_sync_gdb_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_sync_all_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_chain_net_proc_datapool_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_chain_net_by_name_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_by_id_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_id_by_name_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_ledger_by_net_name_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_chain_net_get_chain_by_name_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_chain_net_get_cur_addr_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_get_cur_cell_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_get_cur_addr_int_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_chain_net_get_gdb_group_mempool_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_get_gdb_group_mempool_by_chain_type_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_links_connect_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_chain_net_get_chain_by_chain_type_py(PyObject *self, PyObject *args){
+    return NULL;
+}
-- 
GitLab