diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h index 87b2402acc83ed7416a744efcc8eb2937bca3231..1d7771d10322e2ef4810c2b3dec267aa5defc6a2 100644 --- a/include/libdap-server-core-python.h +++ b/include/libdap-server-core-python.h @@ -1,17 +1,31 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" #include "dap_server.h" +#include "dap_client_remote.h" +#include "dap_events.h" +#include "dap_common.h" #ifdef __cplusplus extern "C" { #endif +dap_server_t *t_server; + + + +#define LOG_TAG "libdap-server-core-python" + static PyObject *dap_server_core_init(PyObject *self, PyObject *args); -static PyObject *dap_server_core_deinit(); +static PyObject *dap_server_core_deinit(void); + +static PyObject *dap_server_core_loop(PyObject *self, PyObject *args); +static PyObject *dap_server_core_listen(PyObject *self, PyObject *args); static PyMethodDef DapServerCorePythonMethods[] = { {"init", dap_server_core_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) server core library"}, {"deinit", dap_server_core_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) server core library"}, + {"loop", dap_server_core_loop, METH_VARARGS, ""}, + {"listen", dap_server_core_listen, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} }; diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c index 431db0e350e6f8983d4ee6014162a4ce4ffedbe2..4eb618a565a0b92dcb9a758f8cd8b1c22f5b6723 100644 --- a/src/libdap-server-core-python.c +++ b/src/libdap-server-core-python.c @@ -2,9 +2,41 @@ static PyObject *dap_server_core_init(PyObject *self, PyObject *args){ - return PyLong_FromLong(0); + uint32_t l_thread_cnt; + size_t conn_t; + if (!PyArg_ParseTuple(args, "I|n", &l_thread_cnt, &conn_t)){ + return NULL; + } + int32_t result = dap_server_init(l_thread_cnt); + if ( result != 0 ) { + log_it( L_CRITICAL, "Can't init socket server module" ); + } + dap_events_init(l_thread_cnt, conn_t); + dap_client_remote_init(); + return PyLong_FromLong(result); } static PyObject *dap_server_core_deinit(){ + dap_client_remote_deinit(); + dap_server_deinit(); + dap_events_deinit(); + return PyLong_FromLong(0); +} + +static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){ + int32_t result = dap_server_loop(t_server); + return PyLong_FromLong(result); +} + +static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ + const char *addr; + uint16_t port; + uint16_t type; + if (!PyArg_ParseTuple(args, "s|H|H", &addr, &port, &type)){ + return NULL; + } + if (type > 1) + return NULL; + t_server = dap_server_listen(addr, port, type); return PyLong_FromLong(0); }