diff --git a/include/dap_events_socket_python.h b/include/dap_events_socket_python.h index d396864814acac780047c805aa40e65e44c7e01c..9795e7e3ecfc91ada1213b1004df6cd09ca9574d 100644 --- a/include/dap_events_socket_python.h +++ b/include/dap_events_socket_python.h @@ -14,55 +14,83 @@ typedef struct PyDapEventsSocket{ dap_events_socket_t *t_events_socket; }PyDapEventsSocketObject; +PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self);//dap_events_socket_t * a_es); + +//PyObject *dap_events_socket_wrap_no_add_py(PyObject *self, PyObject *args);//struct dap_events * a_events, + // int s, dap_events_socket_callbacks_t * a_callbacks); // Create new client and add it to the list + + +PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args);//int sock, struct dap_events * sh); // Find client by socket +//PyObject *dap_events_socket_is_ready_to_read_py(PyDapEventsSocketObject *self);//dap_events_socket_t * sc); +//PyObject *dap_events_socket_is_ready_to_write_py(PyDapEventsSocketObject *self);//dap_events_socket_t * sc); +PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready); +PyObject *dap_events_socket_set_writable_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready); + +PyObject *dap_events_socket_write_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, const void * data, size_t data_size); +PyObject *dap_events_socket_write_f_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, const char * format,...); +PyObject *dap_events_socket_read_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, void * data, size_t data_size); + +PyObject *dap_events_socket_delete_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc,bool preserve_inheritor); // Removes the client from the list + +PyObject *dap_events_socket_shrink_buf_in_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * cl, size_t shrink_size); + +static PyMethodDef PyDapEventsObjectSocket_methods[] = { + {"createAfter", (PyCFunction)dap_events_socket_create_after_py, METH_NOARGS, ""}, + {"find", (PyCFunction)dap_events_socket_find_py, METH_VARARGS, ""}, +// {"isReadyToRead", (PyCFunction)dap_events_socket_is_ready_to_read_py, METH_NOARGS, ""}, +// {"isReadyToWrite", (PyCFunction)dap_events_socket_is_ready_to_write_py, METH_NOARGS, ""}, + {"setReadable", (PyCFunction)dap_events_socket_set_readable_py, METH_VARARGS, ""}, + {"setWritable", (PyCFunction)dap_events_socket_set_writable_py, METH_VARARGS, ""}, + {"write", (PyCFunction)dap_events_socket_write_py, METH_VARARGS, ""}, + {"writeF", (PyCFunction)dap_events_socket_write_f_py, METH_VARARGS, ""}, + {"read", (PyCFunction)dap_events_socket_read_py, METH_VARARGS, ""}, + {"delete", (PyCFunction)dap_events_socket_delete_py, METH_VARARGS, ""}, + {"shringBufIn", (PyCFunction)dap_events_socket_shrink_buf_in_py, METH_VARARGS, ""}, + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + static PyTypeObject dapEventsSocket_dapEventsSocketType = { PyVarObject_HEAD_INIT(NULL, 0) "libDapServerCore.DapEventsSocket", /* tp_name */ - sizeof(PyDapEventsSocketObject), /* tp_basicsize */ + sizeof(PyDapEventsSocketObject), /* tp_basicsize */ 0, /* tp_itemsize */ - 0, /* tp_dealloc */ + 0,//(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 */ "DapEventsSocket objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + PyDapEventsObjectSocket_methods, /* 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,//(initproc)PyDapEventsObject_init,//(initproc)Noddy_init, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew,//PyDapEventsObject_new,//Noddy_new, /* tp_new */ }; - -PyObject *dap_events_socket_init_py(); // Init clients module -PyObject *dap_events_socket_deinit_py(); // Deinit clients module - -PyObject *dap_events_socket_create_after_py(PyObject *self, PyObject *args);//dap_events_socket_t * a_es); - -//PyObject *dap_events_socket_wrap_no_add_py(PyObject *self, PyObject *args);//struct dap_events * a_events, - // int s, dap_events_socket_callbacks_t * a_callbacks); // Create new client and add it to the list - - -PyObject *dap_events_socket_find_py(PyObject *self, PyObject *args);//int sock, struct dap_events * sh); // Find client by socket - -PyObject *dap_events_socket_is_ready_to_read_py(PyObject *self, PyObject *args);//dap_events_socket_t * sc); -PyObject *dap_events_socket_is_ready_to_write_py(PyObject *self, PyObject *args);//dap_events_socket_t * sc); -PyObject *dap_events_socket_set_readable_py(PyObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready); -PyObject *dap_events_socket_set_writable_py(PyObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready); - -PyObject *dap_events_socket_write_py(PyObject *self, PyObject *args);//dap_events_socket_t *sc, const void * data, size_t data_size); -PyObject *dap_events_socket_write_f_py(PyObject *self, PyObject *args);//dap_events_socket_t *sc, const char * format,...); -PyObject *dap_events_socket_read_py(PyObject *self, PyObject *args);//dap_events_socket_t *sc, void * data, size_t data_size); - -PyObject *dap_events_socket_delete_py(PyObject *self, PyObject *args);//dap_events_socket_t *sc,bool preserve_inheritor); // Removes the client from the list - -PyObject *dap_events_socket_shrink_buf_in_py(PyObject *self, PyObject *args);//dap_events_socket_t * cl, size_t shrink_size); - #ifdef __cplusplus } #endif diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h index 2cfd51e1a521ef8cb78b98d72daa49700a7888ae..047549eaf13d1d165ae58b497a8b6c7eedaf4b64 100644 --- a/include/libdap-server-core-python.h +++ b/include/libdap-server-core-python.h @@ -53,20 +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, ""}, - /* Events Socket */ - {"eventsSocketInit", dap_events_socket_init_py, METH_NOARGS, ""}, - {"eventsSocketDeinit", dap_events_socket_deinit_py, METH_NOARGS, ""}, - {"eventsSocketCreateAfter", dap_events_socket_create_after_py, METH_VARARGS, ""}, - {"eventsSocketFind", dap_events_socket_find_py, METH_VARARGS, ""}, - {"eventsSocketIsReadyToRead", dap_events_socket_is_ready_to_read_py, METH_VARARGS, ""}, - {"eventsSocketIsReadyToWrite", dap_events_socket_is_ready_to_write_py, METH_VARARGS, ""}, - {"eventsSocketSetReadable", dap_events_socket_set_readable_py, METH_VARARGS, ""}, - {"eventsSocketSetWritable", dap_events_socket_set_writable_py, METH_VARARGS, ""}, - {"eventsSocketWrite", dap_events_socket_write_py, METH_VARARGS, ""}, - {"eventsSocketWriteF", dap_events_socket_write_f_py, METH_VARARGS, ""}, - {"eventsSocketRead", dap_events_socket_read_py, METH_VARARGS, ""}, - {"eventsSocketDelete", dap_events_socket_delete_py, METH_VARARGS, ""}, - {"eventsSocketShrinkBufIn", dap_events_socket_shrink_buf_in_py, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} }; diff --git a/src/dap_events_socket_python.c b/src/dap_events_socket_python.c index fcb4d3f5b9b0768ed3a847bd487a3612cae86296..f44de06fa7743ef046dcefc29373117d277f7f4b 100644 --- a/src/dap_events_socket_python.c +++ b/src/dap_events_socket_python.c @@ -1,20 +1,10 @@ #include "dap_events_socket_python.h" -PyObject *dap_events_socket_init_py(){ - int result = dap_events_socket_init(); - return PyLong_FromLong(result); -} -PyObject *dap_events_socket_deinit_py(){ - dap_events_socket_deinit(); - return PyLong_FromLong(0); -} - -PyObject *dap_events_socket_create_after_py(PyObject *self, PyObject *args){ - PyObject *in_object; - if(!PyArg_ParseTuple(args, "O", &in_object)){ +PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self){ + if (self->t_events_socket == NULL){ return NULL; } - dap_events_socket_create_after(((PyDapEventsSocketObject*)in_object)->t_events_socket); + dap_events_socket_create_after(self->t_events_socket); return PyLong_FromLong(0); } @@ -23,123 +13,130 @@ PyObject *dap_events_socket_create_after_py(PyObject *self, PyObject *args){ //} -PyObject *dap_events_socket_find_py(PyObject *self, PyObject *args){ +PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket != NULL){ + return NULL; + } int socket; PyObject *in_object; if (!PyArg_ParseTuple(args, "i|O", &socket, &in_object)){ return NULL; } - dap_events_socket_t *events_socket = dap_events_socket_find(socket, ((PyDapEventsObject*)in_object)->t_events); - PyObject *l_events_socket = _PyObject_New(&dapEventsSocket_dapEventsSocketType); - ((PyDapEventsSocketObject*)l_events_socket)->t_events_socket = events_socket; - return Py_BuildValue("O", l_events_socket); + self->t_events_socket = dap_events_socket_find(socket, ((PyDapEventsObject*)in_object)->t_events); + return PyLong_FromLong(0); } -PyObject *dap_events_socket_is_ready_to_read_py(PyObject *self, PyObject *args){ - PyObject *in_obj; - if (!PyArg_ParseTuple(args, "O", &in_obj)){ - return NULL; - } -// bool result = dap_events_socket_is_ready_to_read(((PyDapEventsSocketObject*)in_obj)->t_events_socket); +//PyObject *dap_events_socket_is_ready_to_read_py(PyDapEventsSocketObject *self){ +// bool result = dap_events_socket_is_ready_to_read(self->t_events_socket); // if (result) // return Py_BuildValue("O", Py_True); // else - return Py_BuildValue("O", Py_False); -} -PyObject *dap_events_socket_is_ready_to_write_py(PyObject *self, PyObject *args){ - PyObject *in_obj; - if (!PyArg_ParseTuple(args, "O", &in_obj)){ - return NULL; - } - //bool result = dap_events_socket_is_ready_to_write(((PyDapEventsSocketObject*)in_obj)->t_events_socket); - //if (result) +// return Py_BuildValue("O", Py_False); +//} +//PyObject *dap_events_socket_is_ready_to_write_py(PyDapEventsSocketObject *self){ +// bool result = dap_events_socket_is_ready_to_write(self->t_events_socket); +// if (result) // return Py_BuildValue("O", Py_True); // else - return Py_BuildValue("O", Py_False); -} -PyObject *dap_events_socket_set_readable_py(PyObject *self, PyObject *args){ - PyObject *in_obj; +// return Py_BuildValue("O", Py_False); +//} +PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } PyObject *l_is_ready; - if (!PyArg_ParseTuple(args, "O", &in_obj, &l_is_ready)){ + if (!PyArg_ParseTuple(args, "O", &l_is_ready)){ return NULL; } bool is_ready = true; if (l_is_ready == Py_False) is_ready = false; - dap_events_socket_set_readable(((PyDapEventsSocketObject*)in_obj)->t_events_socket, is_ready); + dap_events_socket_set_readable(self->t_events_socket, is_ready); return PyLong_FromLong(0); } -PyObject *dap_events_socket_set_writable_py(PyObject *self, PyObject *args){ - PyObject *in_obj; +PyObject *dap_events_socket_set_writable_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } PyObject *l_is_ready; - if (!PyArg_ParseTuple(args, "O", &in_obj, &l_is_ready)){ + if (!PyArg_ParseTuple(args, "O", &l_is_ready)){ return NULL; } bool is_ready = true; if (l_is_ready == Py_False) is_ready = false; - dap_events_socket_set_writable(((PyDapEventsSocketObject*)in_obj)->t_events_socket, is_ready); + dap_events_socket_set_writable(self->t_events_socket, is_ready); return PyLong_FromLong(0); } -PyObject *dap_events_socket_write_py(PyObject *self, PyObject *args){ - PyObject *in_obj; +PyObject *dap_events_socket_write_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } PyBytesObject *in_bytes; size_t in_size; - if (!PyArg_ParseTuple(args, "O|S|n", &in_obj, &in_bytes, &in_size)){ + if (!PyArg_ParseTuple(args, "S|n", &in_bytes, &in_size)){ return NULL; } char *in_v_bytes = PyBytes_AsString((PyObject*)in_bytes); - size_t res_size = dap_events_socket_write(((PyDapEventsSocketObject*)in_obj)->t_events_socket, + size_t res_size = dap_events_socket_write(self->t_events_socket, in_v_bytes, in_size); return Py_BuildValue("n", res_size); } -PyObject *dap_events_socket_write_f_py(PyObject *self, PyObject *args){ - PyObject *in_object; +PyObject *dap_events_socket_write_f_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } const char *format; PyTupleObject *pto; - if (!PyArg_ParseTuple(args, "O|s|O", &in_object, &format, &pto)){ + if (!PyArg_ParseTuple(args, "s|O", &format, &pto)){ return NULL; } va_list ap; if (!PyArg_VaParse(args, format, ap)){ return NULL; } - size_t res_size = dap_events_socket_write_f(((PyDapEventsSocketObject*)in_object)->t_events_socket, format, ap); + size_t res_size = dap_events_socket_write_f(self->t_events_socket, format, ap); return Py_BuildValue("n", res_size); } -PyObject *dap_events_socket_read_py(PyObject *self, PyObject *args){ - PyObject *in_object; +PyObject *dap_events_socket_read_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } size_t in_size; - if (!PyArg_ParseTuple(args, "O|S|n", &in_object, &in_size)){ + if (!PyArg_ParseTuple(args, "n", &in_size)){ return NULL; } void *res = DAP_NEW_SIZE(void*, in_size); - size_t res_size = dap_events_socket_read(((PyDapEventsSocketObject*)in_object)->t_events_socket, res, in_size); + size_t res_size = dap_events_socket_read(self->t_events_socket, res, in_size); PyBytesObject *res_obj = (PyBytesObject*)PyBytes_FromString(res); return Py_BuildValue("nS", res_size, res_obj); } -PyObject *dap_events_socket_delete_py(PyObject *self, PyObject *args){ - PyObject *in_object; +PyObject *dap_events_socket_delete_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } PyObject *in_bool; - if (!PyArg_ParseTuple(args, "O|O", &in_object, &in_bool)){ + if (!PyArg_ParseTuple(args, "O", &in_bool)){ return NULL; } bool boolean = true; if (in_bool == Py_False) boolean = false; - dap_events_socket_delete(((PyDapEventsSocketObject*)in_object)->t_events_socket, boolean); + dap_events_socket_delete(self->t_events_socket, boolean); return PyLong_FromLong(0); } -PyObject *dap_events_socket_shrink_buf_in_py(PyObject *self, PyObject *args){ - PyObject *in_object; +PyObject *dap_events_socket_shrink_buf_in_py(PyDapEventsSocketObject *self, PyObject *args){ + if (self->t_events_socket == NULL){ + return NULL; + } size_t in_size; - if(!PyArg_ParseTuple(args, "O|n", &in_object, &in_size)){ + if(!PyArg_ParseTuple(args, "n", &in_size)){ return NULL; } - dap_events_socket_shrink_buf_in(((PyDapEventsSocketObject*)in_object)->t_events_socket, in_size); + dap_events_socket_shrink_buf_in(self->t_events_socket, in_size); return PyLong_FromLong(0); } diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c index 547e158db66b07fd49053a7546872088f81249cd..ab2bf51bc7a2fce231cd213f8208a5d5fca63c86 100644 --- a/src/libdap-server-core-python.c +++ b/src/libdap-server-core-python.c @@ -58,6 +58,7 @@ PyMODINIT_FUNC PyInit_libDapServerCore(void){ PyObject *module = PyModule_Create(&dapservercorepythonmodule); PyModule_AddObject(module, "DapEvents", (PyObject*)&dapEvents_dapEventsType); + PyModule_AddObject(module, "DapEventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType); return module; }