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

[*] Redid the wrapping dap_events_socket. Now all methods for dap_events are...

[*] Redid the wrapping dap_events_socket. Now all methods for dap_events are called through the DapEventsSocket object, and not directly from the binding (libDapServerCore).
parent 6ca2f517
No related branches found
No related tags found
1 merge request!26Support 3689
......@@ -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
......@@ -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}
};
......
#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);
}
......@@ -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;
}
......
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