diff --git a/CMakeLists.txt b/CMakeLists.txt index fcddb20d5740a6141fe8a409e053ca1ca8b36f9d..d023c5063ef0f6aafc32f8ed25da8a63fa8d4a23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 2.8) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_COLOR_MAKEFILE ON) set(CMAKE_C_STANDARD 11) +add_definitions("-fpic") if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON)) set(SUBMODULES_NO_BUILD ON) @@ -31,11 +32,9 @@ file(GLOB SERVER_CORE_PYTHON_HEADERS include/*.h) set(Python_ADDITIONAL_VERSIONS 3.7) find_package (PythonLibs REQUIRED) -#find_package(PkgConfig) -#pkg_check_modules(PC_JSON-C REQUIRED json-c) include_directories(${PYTHON_INCLUDE_DIR} include/) -add_library(${PROJECT_NAME} SHARED ${SERVER_CORE_PYTHON_SRCS} ${SERVER_CORE_PYTHON_HEADERS}) +add_library(${PROJECT_NAME} STATIC ${SERVER_CORE_PYTHON_SRCS} ${SERVER_CORE_PYTHON_HEADERS}) target_link_libraries(${PROJECT_NAME}) @@ -46,8 +45,5 @@ target_compile_options( target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core) -#if(BUILD_DAP_PYTHON_TESTS) -# add_subdirectory(test) -# enable_testing() -#endif() +target_include_directories(${PROJECT_NAME} PUBLIC include/ ) diff --git a/include/dap_events_python.h b/include/dap_events_python.h index 7f652fcc26dd894e78ee945ffc0faa56653cc327..3df4f8ffef3934428d0f75cc3b4fe777fc413f2f 100644 --- a/include/dap_events_python.h +++ b/include/dap_events_python.h @@ -17,16 +17,12 @@ typedef struct PyDapEvents{ void PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject); PyObject *PyDapEventsObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds); +PyObject *dap_events_socket_remove_and_delete_py(PyDapEventsObject *self, PyObject *args); -//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); -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 ); +PyObject *dap_events_start_py(PyDapEventsObject *self); +PyObject *dap_events_wait_py(PyDapEventsObject *self); static PyMethodDef PyDapEventsObject_methods[] = { {"start", (PyCFunction)dap_events_start_py, METH_NOARGS, ""}, @@ -38,44 +34,44 @@ static PyMethodDef PyDapEventsObject_methods[] = { static PyTypeObject dapEvents_dapEventsType = { PyVarObject_HEAD_INIT(NULL, 0) - "libDapServerCore.DapEvents", /* tp_name */ - sizeof(PyDapEventsObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor)PyDapEventsObject_dealloc,//(destructor)Noddy_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_reserved */ - 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 */ + "CellFrame.ServerCore.DapEvents", /* tp_name */ + sizeof(PyDapEventsObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)PyDapEventsObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 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 | - 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 */ + 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, /* 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, /* tp_init */ + 0, /* tp_alloc */ + PyDapEventsObject_new, /* tp_new */ }; #ifdef __cplusplus diff --git a/include/dap_events_socket_python.h b/include/dap_events_socket_python.h index 9795e7e3ecfc91ada1213b1004df6cd09ca9574d..09309cd35b2b70d8280a809bd1897e7a8bc2bac2 100644 --- a/include/dap_events_socket_python.h +++ b/include/dap_events_socket_python.h @@ -14,31 +14,23 @@ 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_create_after_py(PyDapEventsSocketObject *self); -//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);// Find client by socket +PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args); +PyObject *dap_events_socket_set_writable_py(PyDapEventsSocketObject *self, PyObject *args); +PyObject *dap_events_socket_write_py(PyDapEventsSocketObject *self, PyObject *args); +PyObject *dap_events_socket_write_f_py(PyDapEventsSocketObject *self, PyObject *args); +PyObject *dap_events_socket_read_py(PyDapEventsSocketObject *self, PyObject *args); -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_delete_py(PyDapEventsSocketObject *self, PyObject *args);// Removes the client from the list -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); +PyObject *dap_events_socket_shrink_buf_in_py(PyDapEventsSocketObject *self, PyObject *args); 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, ""}, @@ -51,44 +43,44 @@ static PyMethodDef PyDapEventsObjectSocket_methods[] = { static PyTypeObject dapEventsSocket_dapEventsSocketType = { PyVarObject_HEAD_INIT(NULL, 0) - "libDapServerCore.DapEventsSocket", /* tp_name */ - sizeof(PyDapEventsSocketObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - 0,//(destructor)Noddy_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_reserved */ - 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 */ + "CellFrame.ServerCore.DapEventsSocket", /* tp_name */ + sizeof(PyDapEventsSocketObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 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 | - 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 */ + 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, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ }; #ifdef __cplusplus diff --git a/include/dap_server_python.h b/include/dap_server_python.h new file mode 100644 index 0000000000000000000000000000000000000000..420b4b0041a62ac538abc187f68f85bf7feeaefd --- /dev/null +++ b/include/dap_server_python.h @@ -0,0 +1,39 @@ +#include "Python.h" +#include "dap_server.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyDapServer { + PyObject_HEAD + dap_server_t *t_server; +}PyDapServerObject; + +static PyTypeObject dapServer_dapServerType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.ServerCore.DapServer", /* tp_name */ + sizeof(PyDapServerObject), /* 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 */ + "DapServer objects", /* tp_doc */ +}; + +#ifdef __cplusplus +} +#endif diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h index 047549eaf13d1d165ae58b497a8b6c7eedaf4b64..5b633700508bca281785717cf4109f85fd1c1a6a 100644 --- a/include/libdap-server-core-python.h +++ b/include/libdap-server-core-python.h @@ -1,5 +1,6 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" +#include "dap_server_python.h" #include "dap_server.h" #include "dap_client_remote.h" #include "dap_events.h" @@ -11,61 +12,68 @@ extern "C" { #endif -typedef struct PyDapServer { - PyObject_HEAD - dap_server_t *t_server; -}PyDapServerObject; - -PyTypeObject dapServer_dapServerType = { - PyVarObject_HEAD_INIT(NULL, 0) - "libDapServerCore.DapServer", /* tp_name */ - sizeof(PyDapServerObject), /* 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 */ - "DapServer objects", /* tp_doc */ -}; - +#undef LOG_TAG #define LOG_TAG "libdap-server-core-python" -static PyObject *dap_server_core_init(PyObject *self, PyObject *args); -static PyObject *dap_server_core_deinit(); +typedef struct SeverCore{ + PyObject_HEAD +}PyServerCoreObject; + +int dap_server_core_init(uint32_t l_thread_cnt, size_t conn_t); +void 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); +PyObject *dap_server_core_loop(PyObject *self, PyObject *args); +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, ""}, +static PyMethodDef ServerCorePythonMethods[] = { + {"loop", dap_server_core_loop, METH_VARARGS | METH_STATIC, ""}, + {"listen", dap_server_core_listen, METH_VARARGS | METH_STATIC, ""}, {NULL, NULL, 0, NULL} }; -static struct PyModuleDef dapservercorepythonmodule = { - PyModuleDef_HEAD_INIT, - "libDapServerCore", /* name of module */ - NULL, /* module documentation, may be NULL */ - -1, /* size of per-interpreter state of the module, - or -1 if the module keeps state in global variables. */ - DapServerCorePythonMethods + +static PyTypeObject ServerCore_ServerCoreType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.ServerCore", /* tp_name */ + sizeof(PyServerCoreObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 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 | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + "ServerCore objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + ServerCorePythonMethods, /* 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, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ }; -PyMODINIT_FUNC PyInit_libDapServerCore(void); #ifdef __cplusplus diff --git a/libdap b/libdap index 6c5dd5a5b0de5573b03ed144c651352467a56101..f91fb3b3b6a69ef53531c8fd729592cdff4ec442 160000 --- a/libdap +++ b/libdap @@ -1 +1 @@ -Subproject commit 6c5dd5a5b0de5573b03ed144c651352467a56101 +Subproject commit f91fb3b3b6a69ef53531c8fd729592cdff4ec442 diff --git a/libdap-crypto b/libdap-crypto index 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e..4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10 160000 --- a/libdap-crypto +++ b/libdap-crypto @@ -1 +1 @@ -Subproject commit 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e +Subproject commit 4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10 diff --git a/libdap-server-core b/libdap-server-core index de9b4c77a021af36148515e3dbc56403ab45490f..73dfe6c2616ef8a805231560051de3c407d7cd89 160000 --- a/libdap-server-core +++ b/libdap-server-core @@ -1 +1 @@ -Subproject commit de9b4c77a021af36148515e3dbc56403ab45490f +Subproject commit 73dfe6c2616ef8a805231560051de3c407d7cd89 diff --git a/src/dap_events_python.c b/src/dap_events_python.c index aee762b3eb4dc65439aa4878106610c9331e0d4d..cb32c4e0396c31652143841d81cd8e90f102daa6 100644 --- a/src/dap_events_python.c +++ b/src/dap_events_python.c @@ -11,7 +11,6 @@ void PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject){ 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(PyDapEventsObject *self, PyObject *args){ PyObject *in_obj; PyObject *in_bool; diff --git a/src/dap_events_socket_python.c b/src/dap_events_socket_python.c index f44de06fa7743ef046dcefc29373117d277f7f4b..b9c7344d38ef58d0cc4d9b2dede5ca6aaaa1ce6d 100644 --- a/src/dap_events_socket_python.c +++ b/src/dap_events_socket_python.c @@ -8,11 +8,6 @@ PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self){ return PyLong_FromLong(0); } -//PyObject *dap_events_socket_wrap_no_add_py(PyObject *self, PyObject *args){ -// return PyLong_FromLong(0); -//} - - PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args){ if (self->t_events_socket != NULL){ return NULL; @@ -25,21 +20,6 @@ PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *arg 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(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(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(PyDapEventsSocketObject *self, PyObject *args){ if (self->t_events_socket == NULL){ return NULL; diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c index 64b5682897afb4bb6ad527adb902e4b083eff803..738ec3e870cdddd3d7bed85854e2dffd4f75f0c7 100644 --- a/src/libdap-server-core-python.c +++ b/src/libdap-server-core-python.c @@ -1,33 +1,22 @@ #include "libdap-server-core-python.h" - -static PyObject *dap_server_core_init(PyObject *self, PyObject *args){ - uint32_t l_thread_cnt; - size_t conn_t; - const char *app_name; - const char *app_log; - if (!PyArg_ParseTuple(args, "I|n|s|s", &l_thread_cnt, &conn_t, &app_name, &app_log)){ - return NULL; - } - int32_t result_common_init = dap_common_init(app_name, app_log); - if (result_common_init != 0) - return PyLong_FromLong(result_common_init); - int32_t result = dap_server_init(l_thread_cnt); +int dap_server_core_init(uint32_t l_thread_cnt, size_t conn_t){ + int 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); + return result; } -static PyObject *dap_server_core_deinit(){ + +void dap_server_core_deinit(void){ dap_client_remote_deinit(); dap_server_deinit(); dap_events_deinit(); - return PyLong_FromLong(0); } -static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){ +PyObject *dap_server_core_loop(PyObject *self, PyObject *args){ PyObject *obj_server; if (!PyArg_ParseTuple(args, "O", &obj_server)){ return NULL; @@ -37,7 +26,7 @@ static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){ return PyLong_FromLong(result); } -static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ +PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ const char *addr; uint16_t port; uint16_t type; @@ -50,44 +39,3 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){ ((PyDapServerObject*)obj)->t_server = dap_server_listen(addr, port, type); return Py_BuildValue("O", obj); } - -PyMODINIT_FUNC PyInit_libDapServerCore(void){ - dapServer_dapServerType.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; - - PyObject *module = PyModule_Create(&dapservercorepythonmodule); - - PyModule_AddObject(module, "DapEvents", (PyObject*)&dapEvents_dapEventsType); - PyModule_AddObject(module, "DapEventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType); - - return module; -} - -int main(int argc, char **argv) { - wchar_t *program = Py_DecodeLocale(argv[0], NULL); - if (program == NULL) { - fprintf(stderr, "Fatal error: cannot decode argv[0]\n"); - exit(1); - } - - /* Add a built-in module, before Py_Initialize */ - PyImport_AppendInittab("libDapServerCore", PyInit_libDapServerCore); - - /* Pass argv[0] to the Python interpreter */ - Py_SetProgramName(program); - - /* Initialize the Python interpreter. Required. */ - Py_Initialize(); - - /* Optionally import the module; alternatively, - import can be deferred until the embedded script - imports it. */ - PyImport_ImportModule("libDapServerCore"); - - PyMem_RawFree(program); - return 0; -}