ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/pystatgrab/_statgrab.pyx
(Generate patch)

Comparing projects/pystatgrab/_statgrab.pyx (file contents):
Revision 1.2 by tdb, Fri Feb 6 15:12:14 2004 UTC vs.
Revision 1.11 by tdb, Tue Apr 6 14:53:01 2004 UTC

# Line 1 | Line 1
1 < # TODO: deal with failures better (return nothing, or raise error?)
1 > #
2 > # i-scream pystatgrab
3 > # http://www.i-scream.org
4 > # Copyright (C) 2000-2004 i-scream
5 > #
6 > # This program is free software; you can redistribute it and/or
7 > # modify it under the terms of the GNU General Public License
8 > # as published by the Free Software Foundation; either version 2
9 > # of the License, or (at your option) any later version.
10 > #
11 > # This program is distributed in the hope that it will be useful,
12 > # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 > # GNU General Public License for more details.
15 > #
16 > # You should have received a copy of the GNU General Public License
17 > # along with this program; if not, write to the Free Software
18 > # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 > #
20 > # $Id$
21 > #
22  
23   ctypedef long time_t
24  
# Line 78 | Line 98 | cdef extern from "statgrab.h":
98          char *interface_name
99          long long tx
100          long long rx
101 +        long long ipackets
102 +        long long opackets
103 +        long long ierrors
104 +        long long oerrors
105 +        long long collisions
106          time_t systime
107  
108 +    ctypedef enum statgrab_duplex:
109 +        FULL_DUPLEX
110 +        HALF_DUPLEX
111 +        UNKNOWN_DUPLEX
112 +
113 +    ctypedef struct network_iface_stat_t:
114 +        char *interface_name
115 +        int speed
116 +        statgrab_duplex dup
117 +        int up
118 +
119      ctypedef struct page_stat_t:
120          long long pages_pagein
121          long long pages_pageout
# Line 99 | Line 135 | cdef extern from "statgrab.h":
135      cdef extern process_stat_t *get_process_stats()
136      cdef extern network_stat_t *get_network_stats(int *entries)
137      cdef extern network_stat_t *get_network_stats_diff(int *entries)
138 +    cdef extern network_iface_stat_t *get_network_iface_stats(int *entries)
139      cdef extern page_stat_t *get_page_stats()
140      cdef extern page_stat_t *get_page_stats_diff()
141      cdef extern int statgrab_init()
142      cdef extern int statgrab_drop_privileges()
143  
144  
145 + py_FULL_DUPLEX = FULL_DUPLEX
146 + py_HALF_DUPLEX = HALF_DUPLEX
147 + py_UNKNOWN_DUPLEX = UNKNOWN_DUPLEX
148 +
149 +
150   class Result:
151      def __init__(self, attrs):
152          self.attrs = attrs
# Line 115 | Line 157 | class Result:
157      def __repr__(self):
158          return str(self.attrs)
159  
160 + class StatgrabException(Exception):
161 +    def __init__(self, value):
162 +        self.value = value
163 +    def __str__(self):
164 +        return repr(self.value)
165  
166 +
167   def py_get_cpu_totals():
168      cdef cpu_states_t *s
169      s = get_cpu_totals()
170 +    if s == NULL:
171 +        raise StatgrabException, 'get_cpu_totals() returned NULL'
172      return Result(
173          {'user': s.user,
174           'kernel': s.kernel,
# Line 134 | Line 184 | def py_get_cpu_totals():
184   def py_get_cpu_diff():
185      cdef cpu_states_t *s
186      s = get_cpu_diff()
187 +    if s == NULL:
188 +        raise StatgrabException, 'get_cpu_diff() returned NULL'
189      return Result(
190          {'user': s.user,
191           'kernel': s.kernel,
# Line 149 | Line 201 | def py_get_cpu_diff():
201   def py_cpu_percent_usage():
202      cdef cpu_percent_t *s
203      s = cpu_percent_usage()
204 +    if s == NULL:
205 +        raise StatgrabException, 'cpu_percent_usage() returned NULL'
206      return Result(
207          {'user': s.user,
208           'kernel': s.kernel,
# Line 163 | Line 217 | def py_cpu_percent_usage():
217   def py_get_memory_stats():
218      cdef mem_stat_t *s
219      s = get_memory_stats()
220 +    if s == NULL:
221 +        raise StatgrabException, 'get_memory_stats() returned NULL'
222      return Result(
223          {'total': s.total,
224           'used': s.used,
# Line 174 | Line 230 | def py_get_memory_stats():
230   def py_get_load_stats():
231      cdef load_stat_t *s
232      s = get_load_stats()
233 +    if s == NULL:
234 +        raise StatgrabException, 'get_load_stats() returned NULL'
235      return Result(
236          {'min1': s.min1,
237           'min5': s.min5,
# Line 184 | Line 242 | def py_get_load_stats():
242   def py_get_user_stats():
243      cdef user_stat_t *s
244      s = get_user_stats()
245 +    if s == NULL:
246 +        raise StatgrabException, 'get_user_stats() returned NULL'
247      return Result(
248          {'name_list': s.name_list,
249           'num_entries': s.num_entries,
# Line 193 | Line 253 | def py_get_user_stats():
253   def py_get_swap_stats():
254      cdef swap_stat_t *s
255      s = get_swap_stats()
256 +    if s == NULL:
257 +        raise StatgrabException, 'get_swap_stats() returned NULL'
258      return Result(
259          {'total': s.total,
260           'used': s.used,
# Line 203 | Line 265 | def py_get_swap_stats():
265   def py_get_general_stats():
266      cdef general_stat_t *s
267      s = get_general_stats()
268 +    if s == NULL:
269 +        raise StatgrabException, 'get_general_stats() returned NULL'
270      return Result(
271          {'os_name': s.os_name,
272           'os_release': s.os_release,
# Line 217 | Line 281 | def py_get_disk_stats():
281      cdef disk_stat_t *s
282      cdef int entries
283      s = get_disk_stats(&entries)
284 <    list = [entries]
284 >    if s == NULL:
285 >        raise StatgrabException, 'get_disk_stats() returned NULL'
286 >    list = []
287      for i from 0 <= i < entries:
288          list.append(Result(
289              {'device_name': s.device_name,
# Line 238 | Line 304 | def py_get_diskio_stats():
304      cdef diskio_stat_t *s
305      cdef int entries
306      s = get_diskio_stats(&entries)
307 <    list = [entries]
307 >    if s == NULL:
308 >        raise StatgrabException, 'get_diskio_stats() returned NULL'
309 >    list = []
310      for i from 0 <= i < entries:
311          list.append(Result(
312              {'disk_name': s.disk_name,
# Line 254 | Line 322 | def py_get_diskio_stats_diff():
322      cdef diskio_stat_t *s
323      cdef int entries
324      s = get_diskio_stats_diff(&entries)
325 <    list = [entries]
325 >    if s == NULL:
326 >        raise StatgrabException, 'get_diskio_stats_diff() returned NULL'
327 >    list = []
328      for i from 0 <= i < entries:
329          list.append(Result(
330              {'disk_name': s.disk_name,
# Line 269 | Line 339 | def py_get_diskio_stats_diff():
339   def py_get_process_stats():
340      cdef process_stat_t *s
341      s = get_process_stats()
342 +    if s == NULL:
343 +        raise StatgrabException, 'get_process_stats() returned NULL'
344      return Result(
345          {'total': s.total,
346           'running': s.running,
# Line 282 | Line 354 | def py_get_network_stats():
354      cdef network_stat_t *s
355      cdef int entries
356      s = get_network_stats(&entries)
357 <    list = [entries]
357 >    if s == NULL:
358 >        raise StatgrabException, 'get_network_stats() returned NULL'
359 >    list = []
360      for i from 0 <= i < entries:
361          list.append(Result(
362              {'interface_name': s.interface_name,
363               'tx': s.tx,
364               'rx': s.rx,
365 +             'ipackets': s.ipackets,
366 +             'opackets': s.opackets,
367 +             'ierrors': s.ierrors,
368 +             'oerrors': s.oerrors,
369 +             'collisions': s.collisions,
370               'systime': s.systime,
371              }
372          ))
# Line 298 | Line 377 | def py_get_network_stats_diff():
377      cdef network_stat_t *s
378      cdef int entries
379      s = get_network_stats_diff(&entries)
380 <    list = [entries]
380 >    if s == NULL:
381 >        raise StatgrabException, 'get_network_stats_diff() returned NULL'
382 >    list = []
383      for i from 0 <= i < entries:
384          list.append(Result(
385              {'interface_name': s.interface_name,
386               'tx': s.tx,
387               'rx': s.rx,
388 +             'ipackets': s.ipackets,
389 +             'opackets': s.opackets,
390 +             'ierrors': s.ierrors,
391 +             'oerrors': s.oerrors,
392 +             'collisions': s.collisions,
393               'systime': s.systime,
394              }
395          ))
396          s = s + 1
397      return list
398  
399 + def py_get_network_iface_stats():
400 +    cdef network_iface_stat_t *s
401 +    cdef int entries
402 +    s = get_network_iface_stats(&entries)
403 +    if s == NULL:
404 +        raise StatgrabException, 'get_network_iface_stats() returned NULL'
405 +    list = []
406 +    for i from 0 <= i < entries:
407 +        list.append(Result(
408 +            {'interface_name': s.interface_name,
409 +             'speed': s.speed,
410 +             'dup': s.dup,
411 +             'up' : s.up,
412 +            }
413 +        ))
414 +        s = s + 1
415 +    return list
416 +
417   def py_get_page_stats():
418      cdef page_stat_t *s
419      s = get_page_stats()
420 +    if s == NULL:
421 +        raise StatgrabException, 'get_page_stats() returned NULL'
422      return Result(
423          {'pages_pagein': s.pages_pagein,
424           'pages_pageout': s.pages_pageout,
# Line 322 | Line 428 | def py_get_page_stats():
428   def py_get_page_stats_diff():
429      cdef page_stat_t *s
430      s = get_page_stats_diff()
431 +    if s == NULL:
432 +        raise StatgrabException, 'get_page_stats_diff() returned NULL'
433      return Result(
434          {'pages_pagein': s.pages_pagein,
435           'pages_pageout': s.pages_pageout,
# Line 329 | Line 437 | def py_get_page_stats_diff():
437      )
438  
439   def py_statgrab_init():
440 <    return statgrab_init()
440 >    if statgrab_init() == 0:
441 >        return True
442 >    else:
443 >        return False
444  
445   def py_statgrab_drop_privileges():
446 <    return statgrab_drop_privileges()
446 >    if statgrab_drop_privileges() == 0:
447 >        return True
448 >    else:
449 >        return False

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines