Beispiel #1
0
 def listen_forever(self, handler):
     self.sockethandler.set_handler(handler)
     try:
         while not self.doneflag.isSet():
             try:
                 self.pop_external()
                 self._kill_tasks()
                 if self.funcs:
                     period = self.funcs[0][0] + 0.001 - clock()
                 else:
                     period = 2 ** 30
                 
                 if period < 0:
                     period = 0
                 events = self.sockethandler.do_poll(period)
                 if self.doneflag.isSet():
                     return
                 while self.funcs and self.funcs[0][0] <= clock():
                     garbage1, func, id = self.funcs.pop(0)
                     if id in self.tasks_to_kill:
                         pass
                     try:
                         func()
                     except (SystemError, MemoryError), e:
                         print_exc()
                         self.failfunc(exceptionArgsToString(e))
                         return
                     except KeyboardInterrupt:
                         return
                     except:
                         if self.noisy:
                             self.exception()
                 self.sockethandler.close_dead()
                 self.sockethandler.handle_events(events)
                 if self.doneflag.isSet():
                     return
                 self.sockethandler.close_dead()
             except (SystemError, MemoryError), e:
                 print_exc()
                 self.failfunc(exceptionArgsToString(e))
                 return
Beispiel #2
0
def parseargs(argv, options, minargs = None, maxargs = None, presets = {}):
    config = {}
    longkeyed = {}
    for option in options:
        if option is None:
            continue
        longname, default, doc = option
        longkeyed[longname] = option
        config[longname] = default
    for longname in presets.keys():        # presets after defaults but before arguments
        config[longname] = presets[longname]
    options = []
    args = []
    pos = 0
    while pos < len(argv):
        if argv[pos][:2] != '--':
            args.append(argv[pos])
            pos += 1
        else:
            if pos == len(argv) - 1:
                usage('parameter passed in at end with no value')
            key, value = argv[pos][2:], argv[pos+1]
            pos += 2
            if not key in longkeyed:
                usage('unknown key --' + key)
            longname, default, doc = longkeyed[key]
            try:
                t = type(config[longname])
                if t is NoneType or t is StringType:
                    config[longname] = value
                elif t in (IntType, LongType):
                    config[longname] = long(value)
                elif t is FloatType:
                    config[longname] = float(value)
                else:
                    assert 0
            except ValueError, e:
                usage('wrong format of --%s - %s' % (key, exceptionArgsToString(e)))