X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcpython.h;h=661bf6a20c0e8fce3e8c47a9ee50a2b216cbe82e;hb=feca5996d58cf1c61c187369389accec284ac43b;hp=bec6cde9866b044cf2a8dc4185d877ca6d075d7c;hpb=c98b98bfaaeb26894229d7da66ad145c75fb9b69;p=collectd.git diff --git a/src/cpython.h b/src/cpython.h index bec6cde9..661bf6a2 100644 --- a/src/cpython.h +++ b/src/cpython.h @@ -1,3 +1,29 @@ +/** + * collectd - src/cpython.h + * 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 + **/ + /* These two macros are basicly Py_BEGIN_ALLOW_THREADS and Py_BEGIN_ALLOW_THREADS * from the other direction. If a Python thread calls a C function * Py_BEGIN_ALLOW_THREADS is used to allow other python threads to run because @@ -14,6 +40,10 @@ PyGILState_STATE gil_state;\ gil_state = PyGILState_Ensure(); +#define CPY_RETURN_FROM_THREADS \ + PyGILState_Release(gil_state);\ + return + #define CPY_RELEASE_THREADS \ PyGILState_Release(gil_state);\ } @@ -39,6 +69,11 @@ } while (0) #endif +/* Python 2.4 has this macro, older versions do not. */ +#ifndef Py_RETURN_NONE +# define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + typedef struct { PyObject_HEAD /* No semicolon! */ PyObject *parent; /* Config */ @@ -51,14 +86,28 @@ PyTypeObject ConfigType; typedef struct { PyObject_HEAD /* No semicolon! */ - PyObject *values; /* Sequence */ double time; - int interval; char host[DATA_MAX_NAME_LEN]; char plugin[DATA_MAX_NAME_LEN]; char plugin_instance[DATA_MAX_NAME_LEN]; char type[DATA_MAX_NAME_LEN]; char type_instance[DATA_MAX_NAME_LEN]; +} PluginData; + +PyTypeObject PluginDataType; + +typedef struct { + PluginData data; + PyObject *values; /* Sequence */ + int interval; } Values; PyTypeObject ValuesType; + +typedef struct { + PluginData data; + int severity; + char message[NOTIF_MAX_MSG_LEN]; +} Notification; + +PyTypeObject NotificationType;