diff --git a/include/libdap_chain_net_python.h b/include/libdap_chain_net_python.h index 2626627dfc6c18543dd7c4f7a37a6c2897acd17d..d74e8eb65bb78535b4463f74b00a4acf978137b9 100644 --- a/include/libdap_chain_net_python.h +++ b/include/libdap_chain_net_python.h @@ -1,7 +1,15 @@ +#ifndef _WRAPPING_DAP_NET_PYTHON_ +#define _WRAPPING_DAP_NET_PYTHON_ + #define PY_SSIZE_T_CLEAN #include "Python.h" #include "dap_chain_net.h" #include "wrapping_dap_chain_net_state.h" +//#include "wrapping_dap_chain_net_state.h" +#include "wrapping_dap_chain_common_objects.h" +#include "wrapping_dap_chain_ledger.h" +#include "libdap-chain-python.h" +#include "libdap_chain_type_python.h" #ifdef __cplusplus extern "C"{ @@ -53,10 +61,16 @@ static PyMethodDef DapChainNetMethods[] = { {"syncAll", dap_chain_net_sync_all_py, METH_VARARGS, ""}, {"procDatapool", dap_chain_net_proc_datapool_py, METH_VARARGS, ""}, {"byName", dap_chain_net_by_name_py, METH_VARARGS | METH_STATIC, ""}, - /*{"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, ""},*/ + {"byId", dap_chain_net_by_id_py, METH_VARARGS | METH_STATIC, ""}, + {"idByName", dap_chain_net_id_by_name_py, METH_VARARGS | METH_STATIC, ""}, + {"ledgerByNetName", dap_chain_ledger_by_net_name_py, METH_VARARGS | METH_STATIC, ""}, + {"getChainByName", dap_chain_net_get_chain_by_name_py, METH_VARARGS, ""}, + {"getCurAddr", dap_chain_net_get_cur_addr_py, METH_VARARGS, ""}, + {"getCurCell", dap_chain_net_get_cur_cell_py, METH_VARARGS, ""}, + {"getGdbGroupMempool", dap_chain_net_get_gdb_group_mempool_py, METH_VARARGS | METH_STATIC, ""}, + {"getGdbGroupMempoolByChainType", dap_chain_net_get_gdb_group_mempool_by_chain_type_py, METH_VARARGS, ""}, + {"linksConnect", dap_chain_net_links_connect_py, METH_VARARGS, ""}, + {"getChainByChainType", dap_chain_net_get_chain_by_chain_type_py, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} }; @@ -105,3 +119,5 @@ static PyTypeObject DapChainNetObject_DapChainNetObjectType = { #ifdef __cplusplus } #endif + +#endif //_WRAPPING_DAP_NET_PYTHON_ diff --git a/src/libdap_chain_net_python.c b/src/libdap_chain_net_python.c index cf15221053f99acc7e484562d2b4ca4d602ca82e..60235584b81d1d42de412598697eeacc147e96bc 100644 --- a/src/libdap_chain_net_python.c +++ b/src/libdap_chain_net_python.c @@ -58,38 +58,81 @@ PyObject *dap_chain_net_by_name_py(PyObject *self, PyObject *args){ return Py_BuildValue("O", obj_chain_net); } PyObject *dap_chain_net_by_id_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_net_id; + if (!PyArg_ParseTuple(args, "O", &obj_net_id)) + return NULL; + PyObject *obj_net = _PyObject_New(&DapChainNetObject_DapChainNetObjectType); + ((PyDapChainNetObject*)obj_net)->chain_net = dap_chain_net_by_id(((PyDapChainNetIdObject*)obj_net_id)->net_id); + return Py_BuildValue("O", obj_net); } PyObject *dap_chain_net_id_by_name_py(PyObject *self, PyObject *args){ - return NULL; + const char *name; + if (!PyArg_ParseTuple(args, "s", &name)) + return NULL; + PyObject *obj_net_id = _PyObject_New(&DapChainNetIdObject_DapChainNetIdObjectType); + ((PyDapChainNetIdObject*)obj_net_id)->net_id = dap_chain_net_id_by_name(name); + return Py_BuildValue("O", obj_net_id); } PyObject *dap_chain_ledger_by_net_name_py(PyObject *self, PyObject *args){ - return NULL; + const char *net_name; + if (!PyArg_ParseTuple(args, "s", &net_name)) + return NULL; + PyObject *obj_ledger = _PyObject_New(&DapChainLedger_DapChainLedgerType); + ((PyDapChainLedgerObject*)obj_ledger)->ledger = dap_chain_ledger_by_net_name(net_name); + return Py_BuildValue("O", obj_ledger); } PyObject *dap_chain_net_get_chain_by_name_py(PyObject *self, PyObject *args){ - return NULL; + const char* chain_name; + if (!PyArg_ParseTuple(args, "s", &chain_name)) + return NULL; + PyObject *obj_chain = _PyObject_New(&dapChainObject_dapChainType); + ((PyDapChainObject*)obj_chain)->chain_t = dap_chain_net_get_chain_by_name(((PyDapChainNetObject*)self)->chain_net, chain_name); + return Py_BuildValue("O", obj_chain); } PyObject *dap_chain_net_get_cur_addr_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_node_addr = _PyObject_New(&DapChainNodeAddrObject_DapChainNodeAddrObjectType); + ((PyDapChainNodeAddrObject*)obj_node_addr)->node_addr = dap_chain_net_get_cur_addr(((PyDapChainNetObject*)self)->chain_net); + return Py_BuildValue("O", obj_node_addr); } PyObject *dap_chain_net_get_cur_cell_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_cell_id = _PyObject_New(&DapChainNodeAddrObject_DapChainNodeAddrObjectType); + ((PyDapChainCellIdObject*)obj_cell_id)->id = *(dap_chain_net_get_cur_cell(((PyDapChainNetObject*)self)->chain_net)); + return Py_BuildValue("O", obj_cell_id); } PyObject *dap_chain_net_get_cur_addr_int_py(PyObject *self, PyObject *args){ - return NULL; + uint64_t res = dap_chain_net_get_cur_addr_int(((PyDapChainNetObject*)self)->chain_net); + return PyLong_FromUnsignedLongLong(res); } PyObject *dap_chain_net_get_gdb_group_mempool_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_chain; + if (!PyArg_ParseTuple(args, "O", &obj_chain)) + return NULL; + char *res = dap_chain_net_get_gdb_group_mempool(((PyDapChainObject*)obj_chain)->chain_t); + return Py_BuildValue("s", res); } PyObject *dap_chain_net_get_gdb_group_mempool_by_chain_type_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_chain_type; + if (!PyArg_ParseTuple(args, "O", &obj_chain_type)) + return NULL; + char *res = dap_chain_net_get_gdb_group_mempool_by_chain_type(((PyDapChainNetObject*)self)->chain_net, + ((PyChainTypeObject*)obj_chain_type)->chain_type); + return Py_BuildValue("s", res); + } PyObject *dap_chain_net_links_connect_py(PyObject *self, PyObject *args){ - return NULL; + dap_chain_net_links_connect(((PyDapChainNetObject*)self)->chain_net); + PyLong_FromLong(0); } PyObject *dap_chain_net_get_chain_by_chain_type_py(PyObject *self, PyObject *args){ - return NULL; + PyObject *obj_chain_type; + if(!PyArg_ParseTuple(args, "O", &obj_chain_type)) + return NULL; + PyObject *obj_chain = _PyObject_New(&dapChainObject_dapChainType); + ((PyDapChainObject*)obj_chain)->chain_t = dap_chain_net_get_chain_by_chain_type( + ((PyDapChainNetObject*)self)->chain_net, + ((PyChainTypeObject*)obj_chain_type)->chain_type); + return Py_BuildValue("O", obj_chain); }