diff --git a/include/dap_events_python.h b/include/dap_events_python.h new file mode 100644 index 0000000000000000000000000000000000000000..9f5dac4a65eadea4da6ee5e1c13bfb08fe9720cb --- /dev/null +++ b/include/dap_events_python.h @@ -0,0 +1,45 @@ +#include "Python.h" +#include "dap_events.h" + +typedef struct PyDapEvents{ + PyObject_HEAD + dap_events_t *t_events; +}PyDapEventsObject; + +static PyTypeObject dapEvents_dapEventsType = { + PyVarObject_HEAD_INIT(NULL, 0) + "libDapServerCore.DapEvents", /* tp_name */ + sizeof(PyDapEventsObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 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, /* tp_flags */ + "DapEvents objects", /* tp_doc */ +}; + +PyObject *dap_events_init_py(PyObject *self, PyObject *args); //uint32_t a_threads_count, size_t conn_t ); // Init server module +PyObject *dap_events_deinit_py(); // Deinit server module + +PyObject *dap_events_new_py(); +PyObject *dap_events_delete_py(PyObject *self, PyObject *args); //dap_events_t * sh ); +//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es ); +PyObject *dap_events_socket_remove_and_delete_py(PyObject *self, PyObject *args); //dap_events_socket_t* a_es, bool preserve_inheritor ); + +PyObject *dap_events_kill_socket_py(PyObject *self, PyObject *args); //dap_events_socket_t *a_es ); + +PyObject *dap_events_start_py(PyObject *self, PyObject *args); //dap_events_t *sh ); +PyObject *dap_events_wait_py(PyObject *self, PyObject *args); //dap_events_t *sh ); + diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h index 313bdf77e0de7018f1a3ea6ade1484ed06d6a81c..43bfbdb0becbd081a8ec12ed62d3172a52a838cd 100644 --- a/include/libdap-server-core-python.h +++ b/include/libdap-server-core-python.h @@ -4,6 +4,7 @@ #include "dap_client_remote.h" #include "dap_events.h" #include "dap_common.h" +#include "dap_events_python.h" #ifdef __cplusplus extern "C" { @@ -14,9 +15,9 @@ typedef struct PyDapServer { dap_server_t *t_server; }PyDapServerObject; -static PyTypeObject dapServer_dapServerType = { +PyTypeObject dapServer_dapServerType = { PyVarObject_HEAD_INIT(NULL, 0) - "libdap_server_core_python_module.DapServer", /* tp_name */ + "libDapServerCore.DapServer", /* tp_name */ sizeof(PyDapServerObject), /* tp_basicsize */ 0, /* tp_itemsize */ 0, /* tp_dealloc */ @@ -41,7 +42,7 @@ static PyTypeObject dapServer_dapServerType = { #define LOG_TAG "libdap-server-core-python" static PyObject *dap_server_core_init(PyObject *self, PyObject *args); -static PyObject *dap_server_core_deinit(void); +static PyObject *dap_server_core_deinit(); static PyObject *dap_server_core_loop(PyObject *self, PyObject *args); static PyObject *dap_server_core_listen(PyObject *self, PyObject *args); @@ -51,6 +52,13 @@ static PyMethodDef DapServerCorePythonMethods[] = { {"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, ""}, + /* Wrapping Events */ + {"eventsInit", dap_events_init_py, METH_VARARGS, ""}, + {"eventsDeinit", dap_events_deinit_py, METH_NOARGS, ""}, + {"eventsNew", dap_events_new_py, METH_NOARGS, ""}, + {"eventsDellete", dap_events_delete_py, METH_VARARGS, ""}, + {"eventsStart", dap_events_start_py, METH_VARARGS, ""}, + {"eventsWait", dap_events_wait_py, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} }; diff --git a/src/dap_events_python.c b/src/dap_events_python.c new file mode 100644 index 0000000000000000000000000000000000000000..0bf5307311de7f2a8ce1f416e84836a726a876d9 --- /dev/null +++ b/src/dap_events_python.c @@ -0,0 +1,55 @@ +#include "dap_events_python.h" + +PyObject *dap_events_init_py(PyObject *self, PyObject *args){ + uint32_t a_threads_count; + size_t conn_t; + if (!PyArg_ParseTuple(args, "I|n", &a_threads_count, &conn_t)){ + return NULL; + } + int32_t result = dap_events_init(a_threads_count, conn_t); + return PyLong_FromLong(result); +} +PyObject *dap_events_deinit_py(void){ + dap_events_deinit(); + return PyLong_FromLong(0); +} + +PyObject *dap_events_new_py(void){ + PyObject *new_dap_events_obj = _PyObject_New(&dapEvents_dapEventsType); + ((PyDapEventsObject*)new_dap_events_obj)->t_events = dap_events_new(); + return Py_BuildValue("O", new_dap_events_obj); +} +PyObject *dap_events_delete_py(PyObject *self, PyObject *args){ + PyObject *in_obj; + if (PyArg_ParseTuple(args, "O", &in_obj)){ + return NULL; + } + dap_events_delete(((PyDapEventsObject*)in_obj)->t_events); + PyObject_Del(in_obj); + return PyLong_FromLong(0); +} +//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es ); +PyObject *dap_events_socket_remove_and_delete_py(PyObject *self, PyObject *args){ + return PyLong_FromLong(0); +} + +PyObject *dap_events_kill_socket_py(PyObject *self, PyObject *args){ + return PyLong_FromLong(0); +} + +PyObject *dap_events_start_py(PyObject *self, PyObject *args){ + PyObject *in_object; + if (!PyArg_ParseTuple(args, "O", &in_object)){ + return NULL; + } + int32_t result = dap_events_start(((PyDapEventsObject*)in_object)->t_events); + return PyLong_FromLong(result); +} +PyObject *dap_events_wait_py(PyObject *self, PyObject *args){ + PyObject *in_object; + if (!PyArg_ParseTuple(args, "O", &in_object)){ + return NULL; + } + int32_t result = dap_events_wait(((PyDapEventsObject*)in_object)->t_events); + return PyLong_FromLong(result); +} diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c index a067ef37b73fa4af256373333fb8050589ea3dd1..e618cd3c6eb6753da7cd249c62c0a71fb26f0981 100644 --- a/src/libdap-server-core-python.c +++ b/src/libdap-server-core-python.c @@ -49,7 +49,8 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ PyMODINIT_FUNC PyInit_libDapServerCore(void){ dapServer_dapServerType.tp_new = PyType_GenericNew; - if (PyType_Ready(&dapServer_dapServerType) < 0) + dapEvents_dapEventsType.tp_new = PyType_GenericNew; + if (PyType_Ready(&dapServer_dapServerType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0) return NULL; return PyModule_Create(&dapservercorepythonmodule); }