--- projects/pystatgrab/_statgrab.pyx 2004/02/09 23:07:25 1.3 +++ projects/pystatgrab/_statgrab.pyx 2004/02/14 18:07:30 1.8 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # -# $Id: _statgrab.pyx,v 1.3 2004/02/09 23:07:25 tdb Exp $ +# $Id: _statgrab.pyx,v 1.8 2004/02/14 18:07:30 tdb Exp $ # ctypedef long time_t @@ -100,6 +100,17 @@ cdef extern from "statgrab.h": long long rx time_t systime + ctypedef enum statgrab_duplex: + FULL_DUPLEX + HALF_DUPLEX + UNKNOWN_DUPLEX + + ctypedef struct network_iface_stat_t: + char *interface_name + int speed + statgrab_duplex dup + int up + ctypedef struct page_stat_t: long long pages_pagein long long pages_pageout @@ -119,12 +130,18 @@ cdef extern from "statgrab.h": cdef extern process_stat_t *get_process_stats() cdef extern network_stat_t *get_network_stats(int *entries) cdef extern network_stat_t *get_network_stats_diff(int *entries) + cdef extern network_iface_stat_t *get_network_iface_stats(int *entries) cdef extern page_stat_t *get_page_stats() cdef extern page_stat_t *get_page_stats_diff() cdef extern int statgrab_init() cdef extern int statgrab_drop_privileges() +py_FULL_DUPLEX = FULL_DUPLEX +py_HALF_DUPLEX = HALF_DUPLEX +py_UNKNOWN_DUPLEX = UNKNOWN_DUPLEX + + class Result: def __init__(self, attrs): self.attrs = attrs @@ -135,7 +152,7 @@ class Result: def __repr__(self): return str(self.attrs) -class StatgrabException: +class StatgrabException(Exception): def __init__(self, value): self.value = value def __str__(self): @@ -261,7 +278,7 @@ def py_get_disk_stats(): s = get_disk_stats(&entries) if s == NULL: raise StatgrabException, 'get_disk_stats() returned NULL' - list = [entries] + list = [] for i from 0 <= i < entries: list.append(Result( {'device_name': s.device_name, @@ -284,7 +301,7 @@ def py_get_diskio_stats(): s = get_diskio_stats(&entries) if s == NULL: raise StatgrabException, 'get_diskio_stats() returned NULL' - list = [entries] + list = [] for i from 0 <= i < entries: list.append(Result( {'disk_name': s.disk_name, @@ -302,7 +319,7 @@ def py_get_diskio_stats_diff(): s = get_diskio_stats_diff(&entries) if s == NULL: raise StatgrabException, 'get_diskio_stats_diff() returned NULL' - list = [entries] + list = [] for i from 0 <= i < entries: list.append(Result( {'disk_name': s.disk_name, @@ -334,7 +351,7 @@ def py_get_network_stats(): s = get_network_stats(&entries) if s == NULL: raise StatgrabException, 'get_network_stats() returned NULL' - list = [entries] + list = [] for i from 0 <= i < entries: list.append(Result( {'interface_name': s.interface_name, @@ -352,13 +369,31 @@ def py_get_network_stats_diff(): s = get_network_stats_diff(&entries) if s == NULL: raise StatgrabException, 'get_network_stats_diff() returned NULL' - list = [entries] + list = [] for i from 0 <= i < entries: list.append(Result( {'interface_name': s.interface_name, 'tx': s.tx, 'rx': s.rx, 'systime': s.systime, + } + )) + s = s + 1 + return list + +def py_get_network_iface_stats(): + cdef network_iface_stat_t *s + cdef int entries + s = get_network_iface_stats(&entries) + if s == NULL: + raise StatgrabException, 'get_network_iface_stats() returned NULL' + list = [] + for i from 0 <= i < entries: + list.append(Result( + {'interface_name': s.interface_name, + 'speed': s.speed, + 'dup': s.dup, + 'up' : s.up, } )) s = s + 1