[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c
From: |
Hye-Shik Chang <address@hidden> |
Subject: |
[py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c |
Date: |
Thu, 23 May 2002 17:05:05 -0400 |
perky 02/05/23 17:05:05
Modified: src _rrdtoolmodule.c
Log:
Add 'create', 'update' implementation
Revision Changes Path
1.2 +96 -11 py-rrdtool/src/_rrdtoolmodule.c
Index: _rrdtoolmodule.c
===================================================================
RCS file: /cvsroot/py-rrdtool/py-rrdtool/src/_rrdtoolmodule.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- _rrdtoolmodule.c 23 May 2002 18:16:37 -0000 1.1
+++ _rrdtoolmodule.c 23 May 2002 21:05:05 -0000 1.2
@@ -4,37 +4,121 @@
* RRDTool Python binding
*
* Author : Hye-Shik Chang <address@hidden>
- * Date : $Date: 2002/05/23 18:16:37 $
+ * Date : $Date: 2002/05/23 21:05:05 $
* Created : 23 May 2002
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*/
static char *version =
-"$Id: _rrdtoolmodule.c,v 1.1 2002/05/23 18:16:37 perky Exp $";
+"$Id: _rrdtoolmodule.c,v 1.2 2002/05/23 21:05:05 perky Exp $";
#include "Python.h"
#include "rrd.h"
-const char cmdid[]="";
static PyObject *ErrorObject;
-void
-exiterr(void)
+static int
+create_args(char *command, PyObject *args, int *argc, char ***argv)
{
- /* SetERR */
+ PyObject *o;
+ int size, i;
+
+ size = PyTuple_Size(args);
+ *argv = PyMem_New(char*, size+1);
+ if (*argv == NULL)
+ return -1;
+
+ for (i = 0; i < size; i++) {
+ o = PyTuple_GET_ITEM(args, i);
+ if (PyString_Check(o))
+ (*argv)[i+1] = PyString_AS_STRING(o);
+ else {
+ PyMem_Del(*argv);
+ PyErr_Format(PyExc_TypeError, "argument %d must be string", i);
+ return -1;
+ }
+ }
+ (*argv)[0] = command;
+ *argc = size + 1;
+
+ return 0;
}
-/* List of methods defined in the module */
+static void
+destroy_args(char ***argv)
+{
+ PyMem_Del(*argv);
+ *argv = NULL;
+}
+
+static char PyRRD_create__doc__[] =
+"create(args..): Set up a new Round Robin Database\n\
+ create filename [--start|-b start time] \
+[--step|-s step] [DS:ds-name:DST:heartbeat:min:max] \
+[RRA:CF:xff:steps:rows]";
+
+static PyObject *
+PyRRD_create(PyObject *self, PyObject *args)
+{
+ int argc;
+ char **argv;
+ PyObject *r;
+
+ if (create_args("create", args, &argc, &argv) < 0)
+ return NULL;
+
+ if (rrd_create(argc, argv) < 0) {
+ PyErr_SetString(ErrorObject, rrd_get_error());
+ rrd_clear_error();
+ r = NULL;
+ } else {
+ Py_INCREF(Py_None);
+ r = Py_None;
+ }
+
+ destroy_args(&argv);
+ return r;
+}
+static char PyRRD_update__doc__[] =
+"update(args..): Store a new set of values into the rrd\n\
+ update filename [--template|-t ds-name[:ds-name]...] \
+N|timestamp:value[:value...] [timestamp:value[:value...] ...]";
+
+static PyObject *
+PyRRD_update(PyObject *self, PyObject *args)
+{
+ int argc;
+ char **argv;
+ PyObject *r;
+
+ if (create_args("update", args, &argc, &argv) < 0)
+ return NULL;
+
+ if (rrd_update(argc, argv) < 0) {
+ PyErr_SetString(ErrorObject, rrd_get_error());
+ rrd_clear_error();
+ r = NULL;
+ } else {
+ Py_INCREF(Py_None);
+ r = Py_None;
+ }
+
+ destroy_args(&argv);
+ return r;
+}
+
+
+/* List of methods defined in the module */
#define meth(name, func, doc) {name, (PyCFunction)func, METH_VARARGS, doc}
static struct PyMethodDef _rrdtool_methods[] = {
-/* meth("euc_kr_decode", euc_kr_decode, euc_kr_decode__doc__), */
- {NULL, NULL},
+ meth("create", PyRRD_create, PyRRD_create__doc__),
+ meth("update", PyRRD_update, PyRRD_update__doc__),
+ {NULL, NULL},
};
-/* Initialization function for the module */
#define SET_INTCONSTANT(dict, value) \
t = PyInt_FromLong((long)value); \
PyDict_SetItemString(dict, #value, t); \
@@ -44,6 +128,7 @@
PyDict_SetItemString(dict, #value, t); \
Py_DECREF(t);
+/* Initialization function for the module */
void
init_rrdtool(void)
{
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c,
Hye-Shik Chang <address@hidden> <=
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c, Hye-Shik Chang <address@hidden>, 2002/05/23
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c, Hye-Shik Chang <address@hidden>, 2002/05/23
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c, Hye-Shik Chang <address@hidden>, 2002/05/24
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c, Hye-Shik Chang <address@hidden>, 2002/05/25
- [py-rrdtool-cvs] [Commit] py-rrdtool/src _rrdtoolmodule.c, Hye-Shik Chang <address@hidden>, 2002/05/27