Skip to content
Snippets Groups Projects
Commit a910e848 authored by alexey.stratulat's avatar alexey.stratulat
Browse files

[+] Added method loadFromCfg. Added implementation findById for class type...

[+] Added method loadFromCfg. Added implementation findById for class type Chain, this is wrapping dap_chain.
parent 649b262f
No related branches found
No related tags found
1 merge request!26Support 3689
......@@ -7,5 +7,143 @@
#include "Python.h"
#include "dap_defines.h"
//#define DAP_APP_NAME "BINDING_CHAIN_PYTHON"
#include "dap_chain.h"
#include "dap_chain_node_client.h"
#include "wrapping_dap_chain_ledger.h"
#include "wrapping_dap_chain_common_objects.h"
#ifdef __cplusplus
extern "C" {
#endif
#undef LOG_TAG
#define LOG_TAG "libdap-chain-python"
typedef struct PyDapChain{
PyObject_HEAD
dap_chain_t *chain_t;
} PyDapChainObject;
int init_chain_py();
void deinit_chain_py();
void PyDapChainObject_dealloc(PyDapChainObject* chain);
PyObject *PyDapChainObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds);
PyObject *dap_chain_find_by_id_py(PyObject *self, PyObject *args);
//PyObject *dap_chain_load_from_cfg_py(PyObject *self, PyObject *args);
PyObject *dap_chain_has_file_store_py(PyObject *self, PyObject *args);
PyObject *dap_chain_save_all_py(PyObject *self, PyObject *args);
PyObject *dap_chain_load_all_py(PyObject *self, PyObject *args);
PyObject *dap_chain_load_from_cfg_py(PyObject *self, PyObject *args);
//PyObject *dap_chain_init_net_cfg_name_py(PyObject *self, PyObject *args); //dap_chain_init_net_cfg_name
//PyObject *dap_chain_close_py(PyObject *self, PyObject *args);
//PyObject *dap_chain_info_dump_log_py(PyObject *self, PyObject *args); //dap_chain_info_dump_log
static PyMethodDef DapChainMethods[] = {
{"findById", (PyCFunction)dap_chain_find_by_id_py, METH_VARARGS|METH_STATIC, ""},
{"loadFromCfg", (PyCFunction)dap_chain_has_file_store_py, METH_VARARGS|METH_STATIC, ""},
{"hasFileStore", (PyCFunction)dap_chain_has_file_store_py, METH_NOARGS, ""},
{"saveAll", (PyCFunction)dap_chain_save_all, METH_NOARGS, ""},
{"loadAll", (PyCFunction)dap_chain_load_all_py, METH_NOARGS, ""},
//{"close", (PyCFunction)dap_chain_close_py, METH_NOARGS, ""},
{NULL, NULL, 0, NULL}
};
static PyTypeObject dapChainObject_dapChainType = {
PyVarObject_HEAD_INIT(NULL, 0)
"CellFrame.Chain", /* tp_name */
sizeof(PyDapChainObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)PyDapChainObject_dealloc, /* 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 objects", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
DapChainMethods, /* 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 */
PyDapChainObject_new, /* tp_new */
};
typedef struct PyDapChainCallbackNewCfg{
PyObject_HEAD
dap_chain_callback_new_cfg_t callback;
}PyDapChainCallbackNewCfgObject;
static PyTypeObject DapChainCallbackNewCfgObject_DapChainCallbackNewCfgType = {
PyVarObject_HEAD_INIT(NULL, 0)
"CellFrame.ChainCallbackNewCfg", /* tp_name */
sizeof(PyDapChainCallbackNewCfgObject), /* 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 callback new cfg objects", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
0, /* 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
#include "libdap-chain-python.h"
int init_chain_py(){
return dap_chain_init();
}
void deinit_chain_py(){
dap_chain_deinit();
}
PyObject *dap_chain_find_by_id_py(PyObject *self, PyObject *args){
PyObject *obj_net_id;
PyObject *obj_chain_id;
if (!PyArg_ParseTuple(args, "O|O", &obj_net_id, &obj_chain_id))
return NULL;
PyObject *new_obj = _PyObject_New(&dapChainObject_dapChainType);
((PyDapChainObject*)new_obj)->chain_t = dap_chain_find_by_id(((PyDapChainNetIdObject*)obj_net_id)->net_id, ((PyDapChainIdObject*)obj_chain_id)->id);
return Py_BuildValue("O", &new_obj);
}
//PyObject *dap_chain_load_from_cfg_py(PyObject *self, PyObject *args){
//return NULL;
//}
PyObject *dap_chain_has_file_store_py(PyObject *self, PyObject *args){
bool res = dap_chain_has_file_store(((PyDapChainObject*)self)->chain_t);
if (res)
return Py_BuildValue("O", Py_True);
else
return Py_BuildValue("O", Py_False);
}
PyObject *dap_chain_save_all_py(PyObject *self, PyObject *args){
return PyLong_FromLong( dap_chain_save_all(((PyDapChainObject*)self)->chain_t) );
}
PyObject *dap_chain_load_all_py(PyObject *self, PyObject *args){
return PyLong_FromLong(dap_chain_load_all(((PyDapChainObject*)self)->chain_t));
}
PyObject *dap_chain_load_from_cfg_py(PyObject *self, PyObject *args){
PyObject *obj_ledger;
const char *chain_net_name;
PyObject *obj_net_id;
const char *cfg_name;
if (!PyArg_ParseTuple(args, "O|s|O|s", &obj_ledger, &chain_net_name, &obj_net_id, &cfg_name))
return NULL;
PyObject *res_obj = _PyObject_New(&dapChainObject_dapChainType);
((PyDapChainObject*)res_obj)->chain_t = dap_chain_load_from_cfg(((PyDapChainLedgerObject*)obj_ledger)->ledger, chain_net_name, ((PyDapChainNetIdObject*)obj_net_id)->net_id, cfg_name);
return Py_BuildValue("O", &res_obj);
}
//PyObject *dap_chain_init_net_cfg_name_py(PyObject *self, PyObject *args){
//return NULL;
//}
//PyObject *dap_chain_close_py(PyObject *self, PyObject *args){
// dap_chain_close(((PyDapChainObject*)self)->chain_t);
// return PyLong_FromLong(0);
//}
//PyObject *dap_chain_info_dump_log_py(PyObject *self, PyObject *args){
//return NULL;
//}
PyObject *PyDapChainObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds){
PyDapChainObject *obj = (PyDapChainObject*)PyType_GenericNew(type_object, args, kwds);
return (PyObject *)obj;
}
void PyDapChainObject_dealloc(PyDapChainObject* chain){
dap_chain_delete(chain->chain_t);
Py_TYPE(chain)->tp_free((PyObject*)chain);
}
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