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

[+] Added wrapper for creating and reading custom datum.

parent 69a885c3
No related branches found
No related tags found
No related merge requests found
......@@ -42,6 +42,7 @@ add_subdirectory(modules/cellframe-sdk/common)
add_subdirectory(modules/cellframe-sdk/net)
add_subdirectory(modules/cellframe-sdk/net/srv)
add_subdirectory(modules/cellframe-sdk/gdb)
add_subdirectory(modules/cellframe-sdk/services/datum)
add_subdirectory(modules/cellframe-sdk/chain)
add_subdirectory(modules/cellframe-sdk/app-cli)
add_subdirectory(modules/cellframe-sdk/wallet)
......
project(dap_chain_service_datum C)
cmake_minimum_required(VERSION 3.0)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(CMAKE_C_STANDARD 11)
add_definitions("-fpic")
if(UNIX)
add_definitions("-DDAP_OS_UNIX")
endif()
if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
set (SUBMODULES_NO_BUILD ON)
if (NOT (TARGET dap_core))
add_subdirectory(libdap)
target_compile_options(
dap_core PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_crypto))
add_subdirectory(libdap-crypto)
target_compile_options(
dap_crypto PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain))
add_subdirectory(libdap-chain)
target_compile_options(
dap_chain PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_crypto))
add_subdirectory(libdap-chain-crypto)
target_compile_options(
dap_chain_crypto PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_mempool))
add_subdirectory(libdap-chain-mempool)
target_compile_options(
dap_chain_mempool PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_net))
add_subdirectory(libdap-chain-net)
target_compile_options(
dap_chain_net PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_server_core))
add_subdirectory(libdap-server-core)
target_compile_options(
dap_server_core PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_global_db))
add_subdirectory(libdap-chain-global-db)
target_compile_options(
dap_chain_global_db PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_client))
add_subdirectory(libdap-client)
target_compile_options(
dap_client PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET libdap-server))
add_subdirectory(libdap-server)
# target_compile_options(
# libdap-server PRIVATE
# "-fpic"
# )
endif()
if (NOT (TARGET dap_stream))
add_subdirectory(libdap-stream)
target_compile_options(
dap_stream PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_stream_ch))
add_subdirectory(libdap-stream-ch)
target_compile_options(
dap_stream_ch PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_stream_ch_chain))
add_subdirectory(libdap-stream-ch-chain)
target_compile_options(
dap_stream_ch_chain PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_stream_ch_chain_net))
add_subdirectory(libdap-stream-ch-chain-net)
target_compile_options(
dap_stream_ch_chain_net PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_udp_server))
add_subdirectory(libdap-server-udp)
target_compile_options(
dap_udp_server PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_net_srv))
add_subdirectory(libdap-chain-net-srv)
target_compile_options(
dap_chain_net_srv PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_wallet))
add_subdirectory(libdap-chain-wallet)
target_compile_options(
dap_chain_wallet PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_gdb))
add_subdirectory(libdap-chain-gdb)
target_compile_options(
dap_chain_gdb PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_python_module))
add_subdirectory(libdap-python)
target_compile_options(
dap_python_module PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_crypto_python_module))
add_subdirectory(libdap-crypto-python)
target_compile_options(
dap_crypto_python_module PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_net_srv_vpn))
add_subdirectory(libdap-chain-net-srv-vpn)
target_compile_options(
dap_chain_net_srv_vpn PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_chain_python_module))
add_subdirectory(libdap-chain-python)
target_compile_options(
dap_chain_python_module PRIVATE
"-fpic"
)
endif()
if (NOT (TARGET dap_client_python_module))
add_subdirectory(libdap-client-python)
target_compile_options(
dap_client_python_module PRIVATE
"-fpic"
)
endif()
endif()
#add_definitions("-DDAP_APP_NAME=\"TestPRJ\" -DSYSTEM_CONFIGS_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\"")
file(GLOB CHAIN_NET_PYTHON_SRCS src/*.c)
file(GLOB CHAIN_NET_PYTHON_HEADERS include/*.h)
set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4)
find_package (PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIR} include/)
add_library(${PROJECT_NAME} STATIC ${CHAIN_NET_PYTHON_SRCS} ${CHAIN_NET_PYTHON_HEADERS})
target_link_libraries(${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain dap_server_core dap_chain_net dap_chain_net_srv_datum dap_chain_python_module dap_client_python_module)
target_include_directories(${PROJECT_NAME} PUBLIC include/ )
#pragma once
#include "Python.h"
#include "dap_chain_net_srv_datum.h"
#include "libdap-chain-python.h"
typedef struct PyDapChainNetSrvDatum{
PyObject_HEAD
}PyDapChainNetSrvDatumObject;
PyObject *wrapping_dap_chain_net_srv_datum_create(PyObject *self, PyObject *args);
PyObject *wrapping_dap_chain_net_srv_datum_read(PyObject *self, PyObject *args);
static PyMethodDef DapChainNetSrvDatum_method[] = {
{"create", (PyCFunction) wrapping_dap_chain_net_srv_datum_create, METH_VARARGS | METH_STATIC, ""},
{"read", (PyCFunction) wrapping_dap_chain_net_srv_datum_read, METH_VARARGS|METH_STATIC, ""},
{NULL, NULL, 0, NULL}
};
static PyTypeObject DapChainNetSrvDatumObject_DapChainNetSrvDatumObjectType = {
PyVarObject_HEAD_INIT(NULL, 0)
"CellFrame.ChainNetSrvDatum", /* tp_name */
sizeof(PyDapChainNetSrvDatumObject), /* 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 srv datum object", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
DapChainNetSrvDatum_method, /* 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 */
};
#include "wrapping_dap_chain_net_srv_datum.h"
PyObject *wrapping_dap_chain_net_srv_datum_read(PyObject *self, PyObject *args){
(void)self;
char *str_path;
if (!PyArg_ParseTuple(args, "s", &str_path)){
return NULL;
}
size_t l_size_data = 0;
void* l_data = dap_chain_net_srv_file_datum_data_read(str_path, &l_size_data);
PyObject *obj_bytes = PyBytes_FromStringAndSize(l_data, l_size_data);
return obj_bytes;
}
PyObject *wrapping_dap_chain_net_srv_datum_create(PyObject *self, PyObject *args){
(void)self;
PyObject *obj_chain;
PyObject *obj_data_in_datum;
if (!PyArg_ParseTuple(args, "OO", &obj_chain, &obj_data_in_datum)){
return NULL;
}
if (!PyBytes_Check(obj_data_in_datum)){
PyErr_SetString(PyExc_ValueError, "This function takes an object of type bytes as its second argument.");
return NULL;
}
if (!PyDapChain_Check(obj_chain)){
PyErr_SetString(PyExc_ValueError, "The first argument to this function must be an object of type Chain.");
return NULL;
}
void *l_data = PyBytes_AsString(obj_data_in_datum);
size_t l_data_size = PyBytes_Size(obj_data_in_datum);
int res = dap_chain_net_srv_datum_custom_add(((PyDapChainObject*)obj_chain)->chain_t, l_data, l_data_size);
return Py_BuildValue("i", res);
}
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