py-rrdtool-cvs
[Top][All Lists]
Advanced

[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)
   {
  
  
  



reply via email to

[Prev in Thread] Current Thread [Next in Thread]