diff --git a/include/dap_events_python.h b/include/dap_events_python.h index 80af2082791f15355b8d2d6ca2f7fa8c410516a9..88a5214a171b88499b80d2a0f901220869d06a98 100644 --- a/include/dap_events_python.h +++ b/include/dap_events_python.h @@ -14,43 +14,73 @@ typedef struct PyDapEvents{ dap_events_t *t_events; }PyDapEventsObject; +void PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject); + +PyObject *PyDapEventsObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds); + +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(PyDapEventsObject *self, PyObject *args); //dap_events_socket_t* a_es, bool preserve_inheritor ); + +PyObject *dap_events_kill_socket_py(PyDapEventsObject *self, PyObject *args); //dap_events_socket_t *a_es ); + +PyObject *dap_events_start_py(PyDapEventsObject *self); //dap_events_t *sh ); +PyObject *dap_events_wait_py(PyDapEventsObject *self); //dap_events_t *sh ); + +static PyMethodDef PyDapEventsObject_methods[] = { + {"start", (PyCFunction)dap_events_start_py, METH_NOARGS, ""}, + {"wait", (PyCFunction)dap_events_wait_py, METH_NOARGS, ""}, + {"killSocket", (PyCFunction)dap_events_kill_socket_py, METH_VARARGS, ""}, + {"removeAndDeleteSocket", (PyCFunction)dap_events_socket_remove_and_delete_py, METH_VARARGS, ""}, + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + static PyTypeObject dapEvents_dapEventsType = { PyVarObject_HEAD_INIT(NULL, 0) "libDapServerCore.DapEvents", /* tp_name */ - sizeof(PyDapEventsObject), /* tp_basicsize */ + sizeof(PyDapEventsObject), /* tp_basicsize */ 0, /* tp_itemsize */ - 0, /* tp_dealloc */ + (destructor)PyDapEventsObject_dealloc,//(destructor)Noddy_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_compare */ + 0, /* tp_reserved */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ - 0, /* tp_hash */ + 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE, /* tp_flags */ "DapEvents objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + PyDapEventsObject_methods,//Noddy_methods, /* tp_methods */ + 0,//Noddy_members, /* tp_members */ + 0,//Noddy_getseters, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0,//(initproc)PyDapEventsObject_init,//(initproc)Noddy_init, /* tp_init */ + 0, /* tp_alloc */ + PyDapEventsObject_new,//Noddy_new, /* tp_new */ }; -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 ); - #ifdef __cplusplus } #endif diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h index c96f4d27241826f987dbaab5b0e4d19e25ac38c7..2cfd51e1a521ef8cb78b98d72daa49700a7888ae 100644 --- a/include/libdap-server-core-python.h +++ b/include/libdap-server-core-python.h @@ -53,15 +53,6 @@ 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, ""}, - {"eventsSocketRemoveAndDelete", dap_events_socket_remove_and_delete_py, METH_VARARGS, ""}, - {"eventsKillSocket", dap_events_kill_socket_py, METH_VARARGS, ""}, /* Events Socket */ {"eventsSocketInit", dap_events_socket_init_py, METH_NOARGS, ""}, {"eventsSocketDeinit", dap_events_socket_deinit_py, METH_NOARGS, ""}, diff --git a/src/dap_events_python.c b/src/dap_events_python.c index 726120f0477bec82e16db69b2cd4e16ac933706b..a1f8a56c730084f10d9a841f0e468c583763f33b 100644 --- a/src/dap_events_python.c +++ b/src/dap_events_python.c @@ -14,22 +14,19 @@ PyObject *dap_events_deinit_py(void){ 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 *PyDapEventsObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds){ + PyDapEventsObject *new_EO = (PyDapEventsObject*)PyType_GenericNew(type_object, args, kwds); + new_EO->t_events = dap_events_new(); + return (PyObject *)new_EO; } -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 PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject){ + dap_events_delete(eventsObject->t_events); + Py_TYPE(eventsObject)->tp_free((PyObject*)eventsObject); } + //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){ +PyObject *dap_events_socket_remove_and_delete_py(PyDapEventsObject *self, PyObject *args){ PyObject *in_obj; PyObject *in_bool; if (!PyArg_ParseTuple(args, "O|O", &in_obj, &in_bool)){ @@ -42,7 +39,7 @@ 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){ +PyObject *dap_events_kill_socket_py(PyDapEventsObject *self, PyObject *args){ PyObject *in_obj; if (!PyArg_ParseTuple(args, "O", &in_obj)){ return NULL; @@ -51,19 +48,11 @@ 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); +PyObject *dap_events_start_py(PyDapEventsObject *self){ + int32_t result = dap_events_start(self->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); +PyObject *dap_events_wait_py(PyDapEventsObject *self){ + int32_t result = dap_events_wait(self->t_events); return PyLong_FromLong(result); } diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c index aedf19336960866e8a23a672d992419de6ade679..547e158db66b07fd49053a7546872088f81249cd 100644 --- a/src/libdap-server-core-python.c +++ b/src/libdap-server-core-python.c @@ -49,12 +49,17 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ PyMODINIT_FUNC PyInit_libDapServerCore(void){ dapServer_dapServerType.tp_new = PyType_GenericNew; - dapEvents_dapEventsType.tp_new = PyType_GenericNew; + //dapEvents_dapEventsType.tp_new = PyType_GenericNew; dapEventsSocket_dapEventsSocketType.tp_new = PyType_GenericNew; if (PyType_Ready(&dapServer_dapServerType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 || PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0) return NULL; - return PyModule_Create(&dapservercorepythonmodule); + + PyObject *module = PyModule_Create(&dapservercorepythonmodule); + + PyModule_AddObject(module, "DapEvents", (PyObject*)&dapEvents_dapEventsType); + + return module; } int main(int argc, char **argv) {