diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-12-08 06:21:12 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-12-08 06:21:12 +0100 |
commit | 41a8fcbd23e38c67c039e04c3e4572ac4a891f42 (patch) | |
tree | 2a6486a45d9ecc11441776f06e22136ccd241a5f /examples/plugins/ping | |
parent | proper multi-home support in ipaddress (diff) | |
download | xpybar-41a8fcbd23e38c67c039e04c3e4572ac4a891f42.tar.gz xpybar-41a8fcbd23e38c67c039e04c3e4572ac4a891f42.tar.bz2 xpybar-41a8fcbd23e38c67c039e04c3e4572ac4a891f42.tar.xz |
add ping monitor1.5
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'examples/plugins/ping')
-rw-r--r-- | examples/plugins/ping | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/plugins/ping b/examples/plugins/ping new file mode 100644 index 0000000..9668b4e --- /dev/null +++ b/examples/plugins/ping @@ -0,0 +1,53 @@ +# -*- python -*- + +# A xpybar configuration example testing the features of plugins.ping + +import time +import threading + +from plugins.ping import Ping +from plugins.clock import Clock + + +OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 24, True + + +clock = Clock(sync_to = Clock.SECONDS) +ping_ = Ping(targets = Ping.get_nics(Ping.DEFAULT_GATEWAY), interval = 2) + +start_ = start +def start(): + start_() + async(lambda : clock.continuous_sync(lambda : bar.invalidate())) + + +def colourise_latency(latency): + if latency is None: + return '????' + colour = '31' + if latency < 5: colour = '32' + elif latency < 10: colour = '00' + elif latency < 20: colour = '33' + return '\033[%sm%.2f\033[00m' % (colour, latency) + +def status(monitor): + monitor.semaphore.acquire() + try: + latency = monitor.get_latency(True) + dropped = monitor.dropped(True) + droptime = monitor.dropped_time(True) + latency = ' '.join(colourise_latency(latency[i]) for i in (1, 2, 4, 8)) + if dropped == 0: + return latency + return '%s \033[31m-%i\033[00m(%is)' % (latency, dropped, droptime) + finally: + monitor.semaphore.release() + + +def redraw(): + text = ['%s: %s' % (nic, status(ping_.monitors[nic][0])) for nic in ping_.monitors.keys()] + text = ' │ '.join(text) + + bar.clear() + bar.draw_coloured_text(0, 10, 0, 2, text) + |