summaryrefslogtreecommitdiff
path: root/src/leap/utils
diff options
context:
space:
mode:
authorkali <kali@leap.se>2012-08-01 09:58:08 +0900
committerkali <kali@leap.se>2012-08-01 09:58:08 +0900
commit6e197c1353c788109df07ee6d1242a5c2327e8f9 (patch)
tree1f87c24b4254f3108177888c9b44d1d5f2c75502 /src/leap/utils
parent7cea25f531f46a1425ea54a79d96a3b662a8a7fd (diff)
fileutil.which implementation
Diffstat (limited to 'src/leap/utils')
-rw-r--r--src/leap/utils/__init__.py0
-rw-r--r--src/leap/utils/coroutines.py107
-rw-r--r--src/leap/utils/leap_argparse.py20
3 files changed, 0 insertions, 127 deletions
diff --git a/src/leap/utils/__init__.py b/src/leap/utils/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/src/leap/utils/__init__.py
+++ /dev/null
diff --git a/src/leap/utils/coroutines.py b/src/leap/utils/coroutines.py
deleted file mode 100644
index 5e25eb63..00000000
--- a/src/leap/utils/coroutines.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# the problem of watching a stdout pipe from
-# openvpn binary: using subprocess and coroutines
-# acting as event consumers
-
-from __future__ import division, print_function
-
-from subprocess import PIPE, Popen
-import sys
-from threading import Thread
-
-ON_POSIX = 'posix' in sys.builtin_module_names
-
-
-#
-# Coroutines goodies
-#
-
-def coroutine(func):
- def start(*args, **kwargs):
- cr = func(*args, **kwargs)
- cr.next()
- return cr
- return start
-
-
-@coroutine
-def process_events(callback):
- """
- coroutine loop that receives
- events sent and dispatch the callback.
- :param callback: callback to be called\
-for each event
- :type callback: callable
- """
- try:
- while True:
- m = (yield)
- if callable(callback):
- callback(m)
- else:
- #XXX log instead
- print('not a callable passed')
- except GeneratorExit:
- return
-
-#
-# Threads
-#
-
-
-def launch_thread(target, args):
- """
- launch and demonize thread.
- :param target: target function that will run in thread
- :type target: function
- :param args: args to be passed to thread
- :type args: list
- """
- t = Thread(target=target,
- args=args)
- t.daemon = True
- t.start()
- return t
-
-
-def watch_output(out, observers):
- """
- initializes dict of observer coroutines
- and pushes lines to each of them as they are received
- from the watched output.
- :param out: stdout of a process.
- :type out: fd
- :param observers: tuple of coroutines to send data\
-for each event
- :type ovservers: tuple
- """
- observer_dict = {observer: process_events(observer)
- for observer in observers}
- for line in iter(out.readline, b''):
- for obs in observer_dict:
- observer_dict[obs].send(line)
- out.close()
-
-
-def spawn_and_watch_process(command, args, observers=None):
- """
- spawns a subprocess with command, args, and launch
- a watcher thread.
- :param command: command to be executed in the subprocess
- :type command: str
- :param args: arguments
- :type args: list
- :param observers: tuple of observer functions to be called \
-for each line in the subprocess output.
- :type observers: tuple
- :return: a tuple containing the child process instance, and watcher_thread,
- :rtype: (Subprocess, Thread)
- """
- subp = Popen([command] + args,
- stdout=PIPE,
- stderr=PIPE,
- bufsize=1,
- close_fds=ON_POSIX)
- watcher = launch_thread(
- watch_output,
- (subp.stdout, observers))
- return subp, watcher
diff --git a/src/leap/utils/leap_argparse.py b/src/leap/utils/leap_argparse.py
deleted file mode 100644
index 9c355134..00000000
--- a/src/leap/utils/leap_argparse.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import argparse
-
-
-def build_parser():
- epilog = "Copyright 2012 The Leap Project"
- parser = argparse.ArgumentParser(description="""
-Launches main LEAP Client""", epilog=epilog)
- parser.add_argument('--debug', action="store_true",
- help='launches in debug mode')
- parser.add_argument('--config', metavar="CONFIG FILE", nargs='?',
- action="store", dest="config_file",
- type=argparse.FileType('r'),
- help='optional config file')
- return parser
-
-
-def init_leapc_args():
- parser = build_parser()
- opts = parser.parse_args()
- return parser, opts