diff --git a/include/python-cellframe.h b/include/python-cellframe.h index df1b7ca7a29a215a7508836d45ddf5ff8eb84c73..3ea970a93f58e7daed2dcae2a3f9cbf8d5af631e 100644 --- a/include/python-cellframe.h +++ b/include/python-cellframe.h @@ -5,6 +5,18 @@ #include "libdap-server-core-python.h" #include "libdap_crypto_key_type_python.h" #include "libdap_crypto_data_type.h" +// === CHAIN == +#include "libdap-chain-python.h" +#include "libdap_chain_type_python.h" +#include "libdap_chain_atom_iter_python.h" +#include "wrapping_dap_chain_cell.h" +#include "wrapping_dap_chain_common.h" +#include "wrapping_dap_chain_cs.h" +#include "wrapping_dap_chain_datum.h" +#include "wrapping_dap_chain_datum_token.h" +#include "wrapping_dap_chain_datum_tx.h" +#include "wrapping_dap_chain_ledger.h" +// ============ #include "dap_common.h" @@ -16,6 +28,7 @@ extern "C" { #define LOG_TAG "python-cellframe" static bool init_crypto; +static bool init_chain; static PyObject* CellFrame_error; diff --git a/src/python-cellframe.c b/src/python-cellframe.c index 1fd7abf735c70f5c883add35f5ee775ecdf9fbf9..f43cafeca3f30052e8d0e0463e419617986598ac 100644 --- a/src/python-cellframe.c +++ b/src/python-cellframe.c @@ -95,6 +95,13 @@ static PyObject *python_cellframe_init(PyObject *self, PyObject *args){ return NULL; } } + if (strcmp(c_value, "Chain") == 0){ + if(init_chain_py() != 0){ + PyErr_SetString(CellFrame_error, "Failed to initialize Chain. " + "Fields thread_cnt and conn are not numerical or absent."); + return NULL; + } + } } return PyLong_FromLong(0); } @@ -105,7 +112,26 @@ PyMODINIT_FUNC PyInit_CellFrame(void){ PyType_Ready(&ServerCore_ServerCoreType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 || PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0 || PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 || - PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0) + PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0 || + // === Chain === + PyType_Ready(&dapChainObject_dapChainType) < 0 || + PyType_Ready(&dapChainTypeObject_dapChainTypeType) < 0 || + PyType_Ready(&dapChainAtomPtr_dapChainAtomPtrType) < 0 || + PyType_Ready(&DapChainCell_DapChainCellObjectType) < 0 || + PyType_Ready(&ChainCommonObject_ChainCommonType) < 0 || + PyType_Ready(&DapChainCsObject_DapChainCsObjectType) < 0 || + PyType_Ready(&DapChainDatumTypeIdObject_DapChainDatumTypeIdObjectType) < 0 || + PyType_Ready(&DapChainDatumObject_DapChainDatumObjectType) < 0 || + PyType_Ready(&DapChainDatumIterObject_DapChainDatumIterObjectType) < 0 || + PyType_Ready(&DapChainDatumToken_DapChainDatumTokenObjectType) < 0 || + PyType_Ready(&DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType) < 0 || + PyType_Ready(&DapChainTxItemObject_DapChainTxItemTypeObjectType) < 0 || + PyType_Ready(&DapChainTxType_DapChainTxCondTypeObject) < 0 || + PyType_Ready(&DapChainDatumTx_DapChainDatumTxObjectType) < 0 || + PyType_Ready(&DapChainTxOutCond_DapChainTxOutCondObjectType) < 0 +// PyType_Ready(&DapChainLedger_DapChainLedgerType) < 0 + // ============= + ) return NULL; PyObject *module = PyModule_Create(&CellFramePythonModule); @@ -131,6 +157,25 @@ PyMODINIT_FUNC PyInit_CellFrame(void){ PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType); PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType); + // === Chain === + PyModule_AddObject(module, "Chain", (PyObject*)&dapChainObject_dapChainType); + PyModule_AddObject(module, "ChainType", (PyObject*)&dapChainTypeObject_dapChainTypeType); + PyModule_AddObject(module, "ChainAtomIter", (PyObject*)&dapChainAtomPtr_dapChainAtomPtrType); + PyModule_AddObject(module, "ChainCell", (PyObject*)&DapChainCell_DapChainCellObjectType); + PyModule_AddObject(module, "ChainCommon", (PyObject*)&ChainCommonObject_ChainCommonType); + PyModule_AddObject(module, "ChainCS", (PyObject*)&DapChainCsObject_DapChainCsObjectType); + PyModule_AddObject(module, "ChainDatumTypeID", (PyObject*)&DapChainDatumTypeIdObject_DapChainDatumTypeIdObjectType); + PyModule_AddObject(module, "ChainDatum", (PyObject*)&DapChainDatumObject_DapChainDatumObjectType); + PyModule_AddObject(module, "ChainDatumIter", (PyObject*)&DapChainDatumIterObject_DapChainDatumIterObjectType); + PyModule_AddObject(module, "ChainDatumToken", (PyObject*)&DapChainDatumToken_DapChainDatumTokenObjectType); + PyModule_AddObject(module, "ChainDatumTokenEmisson", (PyObject*)&DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType); + PyModule_AddObject(module, "ChainTxItemType", (PyObject*)&DapChainTxItemObject_DapChainTxItemTypeObjectType); + PyModule_AddObject(module, "ChainTxCondType", (PyObject*)&DapChainTxType_DapChainTxCondTypeObject); + PyModule_AddObject(module, "ChainDatumTx", (PyObject*)&DapChainDatumTx_DapChainDatumTxObjectType); + PyModule_AddObject(module, "ChainTxOutCond", (PyObject*)&DapChainTxOutCond_DapChainTxOutCondObjectType); +// PyModule_AddObject(module, "ChainLedger", (PyObject*)&DapChainLedger_DapChainLedgerType); + // ============= + return module; } @@ -140,6 +185,9 @@ static PyObject *python_cellframe_deinit(PyObject *self, PyObject *args){ dap_config_deinit(); if (init_crypto) dap_crypto_deinit(); + if (init_chain){ + deinit_chain_py(); + } return PyLong_FromLong(0); }