X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpython.c;h=d750d95b503e7fbbff9e78c375eeef3e809e79be;hb=7e504c50768c77d78003e1e27afe6f9f81a85b85;hp=ae853c38e8be412d05092fdf49914d397765b66f;hpb=a304e2b7c4aae3334324b83765bc95986fec2587;p=collectd.git diff --git a/src/python.c b/src/python.c index ae853c38..d750d95b 100644 --- a/src/python.c +++ b/src/python.c @@ -1,3 +1,29 @@ +/** + * collectd - src/python.c + * Copyright (C) 2009 Sven Trenkel + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Sven Trenkel + **/ + #include #include @@ -276,7 +302,6 @@ static void cpy_log_exception(const char *context) { line = PyList_GET_ITEM(list, i); /* Borrowed reference. */ s = strdup(PyString_AsString(line)); - Py_DECREF(line); if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = 0; Py_BEGIN_ALLOW_THREADS @@ -346,7 +371,7 @@ static int cpy_write_callback(const data_set_t *ds, const value_list_t *value_li CPY_RETURN_FROM_THREADS 0; } } - v = PyObject_CallFunction((PyObject *) &ValuesType, "sOssssdi", value_list->type, list, + v = PyObject_CallFunction((void *) &ValuesType, "sOssssdi", value_list->type, list, value_list->plugin_instance, value_list->type_instance, value_list->plugin, value_list->host, (double) value_list->time, value_list->interval); Py_DECREF(list); @@ -365,7 +390,7 @@ static int cpy_notification_callback(const notification_t *notification, user_da PyObject *ret, *n; CPY_LOCK_THREADS - n = PyObject_CallFunction((PyObject *) &NotificationType, "ssssssdi", notification->type, notification->message, + n = PyObject_CallFunction((void *) &NotificationType, "ssssssdi", notification->type, notification->message, notification->plugin_instance, notification->type_instance, notification->plugin, notification->host, (double) notification->time, notification->severity); ret = PyObject_CallFunctionObjArgs(c->callback, n, c->data, (void *) 0); /* New reference. */ @@ -531,19 +556,23 @@ static PyObject *cpy_register_read(PyObject *self, PyObject *args, PyObject *kwd } static PyObject *cpy_register_log(PyObject *self, PyObject *args, PyObject *kwds) { - return cpy_register_generic_userdata(plugin_register_log, cpy_log_callback, args, kwds); + return cpy_register_generic_userdata((void *) plugin_register_log, + (void *) cpy_log_callback, args, kwds); } static PyObject *cpy_register_write(PyObject *self, PyObject *args, PyObject *kwds) { - return cpy_register_generic_userdata(plugin_register_write, cpy_write_callback, args, kwds); + return cpy_register_generic_userdata((void *) plugin_register_write, + (void *) cpy_write_callback, args, kwds); } static PyObject *cpy_register_notification(PyObject *self, PyObject *args, PyObject *kwds) { - return cpy_register_generic_userdata(plugin_register_notification, cpy_notification_callback, args, kwds); + return cpy_register_generic_userdata((void *) plugin_register_notification, + (void *) cpy_notification_callback, args, kwds); } static PyObject *cpy_register_flush(PyObject *self, PyObject *args, PyObject *kwds) { - return cpy_register_generic_userdata(plugin_register_flush, cpy_flush_callback, args, kwds); + return cpy_register_generic_userdata((void *) plugin_register_flush, + (void *) cpy_flush_callback, args, kwds); } static PyObject *cpy_register_shutdown(PyObject *self, PyObject *args, PyObject *kwds) { @@ -839,7 +868,7 @@ static PyObject *cpy_oconfig_to_pyconfig(oconfig_item_t *ci, PyObject *parent) { } } - item = PyObject_CallFunction((PyObject *) &ConfigType, "sONO", ci->key, parent, values, Py_None); + item = PyObject_CallFunction((void *) &ConfigType, "sONO", ci->key, parent, values, Py_None); if (item == NULL) return NULL; children = PyTuple_New(ci->children_num); /* New reference. */ @@ -884,9 +913,9 @@ static int cpy_config(oconfig_item_t *ci) { return 1; } module = Py_InitModule("collectd", cpy_methods); /* Borrowed reference. */ - PyModule_AddObject(module, "Config", (PyObject *) &ConfigType); /* Steals a reference. */ - PyModule_AddObject(module, "Values", (PyObject *) &ValuesType); /* Steals a reference. */ - PyModule_AddObject(module, "Notification", (PyObject *) &NotificationType); /* Steals a reference. */ + PyModule_AddObject(module, "Config", (void *) &ConfigType); /* Steals a reference. */ + PyModule_AddObject(module, "Values", (void *) &ValuesType); /* Steals a reference. */ + PyModule_AddObject(module, "Notification", (void *) &NotificationType); /* Steals a reference. */ PyModule_AddIntConstant(module, "LOG_DEBUG", LOG_DEBUG); PyModule_AddIntConstant(module, "LOG_INFO", LOG_INFO); PyModule_AddIntConstant(module, "LOG_NOTICE", LOG_NOTICE);