Esempio n. 1
0
 def setUp(self):
     #self.scheduler 
     logging.basicConfig()
     self.scheduler = Scheduler(DefaultPolling())
     #self.scheduler.debugging = True
     #self.scheduler.logger.setLevel('DEBUG')
     #Client.logger.setLevel('DEBUG')
     import tests
     import os.path
     rootpath, _ = os.path.split(tests.__path__[0])
     if rootpath:
         os.chdir(rootpath)
     self.scheduler.queue.addSubQueue(3, PollEvent.createMatcher(category=PollEvent.WRITE_READY), 'write', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(1, PollEvent.createMatcher(category=PollEvent.READ_READY), 'read', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(5, PollEvent.createMatcher(category=PollEvent.ERROR), 'error')
     self.scheduler.queue.addSubQueue(2, ConnectionControlEvent.createMatcher(), 'control')
     self.scheduler.queue.addSubQueue(4, ConnectionWriteEvent.createMatcher(), 'connectionwrite', 40, 40, CBQueue.AutoClassQueue.initHelper('connection'))
     self.scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher(), 'routine')
     self.scheduler.queue.addSubQueue(9, TimerEvent.createMatcher(), 'timer')
     self.scheduler.queue.addSubQueue(8, ResolveResponseEvent.createMatcher(), 'resolve')
     self.scheduler.queue.addSubQueue(8, ResolveRequestEvent.createMatcher(), 'resolvereq')
     self.scheduler.queue.addSubQueue(20, SystemControlEvent.createMatcher(), 'sysctl')
     self.scheduler.queue.addSubQueue(0, SystemControlLowPriorityEvent.createMatcher(), 'sysctllow')
     #Client.logger.setLevel('DEBUG')
     #TcpServer.logger.setLevel('DEBUG')
     self.protocolServer = TestProtocol(True)
     self.protocolClient = TestProtocol(False)
     self.resolver = Resolver(scheduler=self.scheduler)
     self.resolver.start()
Esempio n. 2
0
 def setUp(self):
     #self.scheduler 
     logging.basicConfig()
     self.scheduler = Scheduler(DefaultPolling())
     #self.scheduler.debugging = True
     #self.scheduler.logger.setLevel('DEBUG')
     #Client.logger.setLevel('DEBUG')
     import tests
     import os.path
     rootpath, _ = os.path.split(tests.__path__[0])
     if rootpath:
         os.chdir(rootpath)
     self.scheduler.queue.addSubQueue(3, PollEvent.createMatcher(category=PollEvent.WRITE_READY), 'write', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(1, PollEvent.createMatcher(category=PollEvent.READ_READY), 'read', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(5, PollEvent.createMatcher(category=PollEvent.ERROR), 'error')
     self.scheduler.queue.addSubQueue(2, ConnectionControlEvent.createMatcher(), 'control')
     self.scheduler.queue.addSubQueue(4, ConnectionWriteEvent.createMatcher(), 'connectionwrite', 40, 40, CBQueue.AutoClassQueue.initHelper('connection'))
     self.scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher(), 'routine')
     self.scheduler.queue.addSubQueue(9, TimerEvent.createMatcher(), 'timer')
     self.scheduler.queue.addSubQueue(8, ResolveResponseEvent.createMatcher(), 'resolve')
     self.scheduler.queue.addSubQueue(8, ResolveRequestEvent.createMatcher(), 'resolvereq')
     self.scheduler.queue.addSubQueue(20, SystemControlEvent.createMatcher(), 'sysctl')
     self.scheduler.queue.addSubQueue(0, SystemControlLowPriorityEvent.createMatcher(), 'sysctllow')
     #Client.logger.setLevel('DEBUG')
     #TcpServer.logger.setLevel('DEBUG')
     self.protocolServer = TestProtocol(True)
     self.protocolClient = TestProtocol(False)
     self.resolver = Resolver(scheduler=self.scheduler)
     self.resolver.start()
Esempio n. 3
0
 async def getconnectionsbyendpointname(self, name, vhost='', timeout=30):
     "Get connection by endpoint name (Domain name, IP or IPv6 address)"
     # Resolve the name
     if not name:
         endpoint = ''
         return await self.getconnectionbyendpoint(endpoint, vhost)
     else:
         request = (name, 0, socket.AF_UNSPEC, socket.SOCK_STREAM,
                    socket.IPPROTO_TCP,
                    socket.AI_ADDRCONFIG | socket.AI_V4MAPPED)
         # Resolve hostname
         await self.apiroutine.wait_for_send(ResolveRequestEvent(request))
         timeout_, ev, _ = await self.apiroutine.wait_with_timeout(
             timeout, ResolveResponseEvent.createMatcher(request))
         if timeout_:
             # Resolve is only allowed through asynchronous resolver
             #try:
             #    self.addrinfo = socket.getaddrinfo(self.hostname, self.port, socket.AF_UNSPEC, socket.SOCK_DGRAM if self.udp else socket.SOCK_STREAM, socket.IPPROTO_UDP if self.udp else socket.IPPROTO_TCP, socket.AI_ADDRCONFIG|socket.AI_NUMERICHOST)
             #except:
             raise IOError('Resolve hostname timeout: ' + name)
         else:
             if hasattr(ev, 'error'):
                 raise IOError('Cannot resolve hostname: ' + name)
             resp = ev.response
             for r in resp:
                 raddr = r[4]
                 if isinstance(raddr, tuple):
                     # Ignore port
                     endpoint = raddr[0]
                 else:
                     # Unix socket? This should not happen, but in case...
                     endpoint = raddr
                 r = await self.getconnectionsbyendpoint(endpoint, vhost)
                 if r is not None:
                     return r
Esempio n. 4
0
 def __init__(self):
     '''
     Constructor
     '''
     if hasattr(self, 'logging'):
         if isinstance(self.logging, dict):
             logging_config = dict(self.logging)
         else:
             logging_config = self.logging.todict()
         logging_config.setdefault('disable_existing_loggers', False)
         logging.config.dictConfig(logging_config)
     elif hasattr(self, 'loggingconfig'):
         logging.config.fileConfig(self.loggingconfig, disable_existing_loggers=False)
     self.scheduler = Scheduler(DefaultPolling(), getattr(self, 'processevents', None), getattr(self, 'queuedefaultsize', None), getattr(self, 'queuemaxsize', None),
                                defaultQueueClass=CBQueue.AutoClassQueue.initHelper('_classname0'), defaultQueuePriority = 400)
     if self.debugging:
         self.scheduler.debugging = True
         self.scheduler.logger.setLevel(logging.DEBUG)
     self.scheduler.queue.addSubQueue(self.pollwritepriority, PollEvent.createMatcher(category=PollEvent.WRITE_READY), 'write', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(self.pollreadpriority, PollEvent.createMatcher(category=PollEvent.READ_READY), 'read', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(self.pollerrorpriority, PollEvent.createMatcher(category=PollEvent.ERROR), 'error')
     self.scheduler.queue.addSubQueue(self.connectioncontrolpriority, ConnectionControlEvent.createMatcher(), 'control')
     self.scheduler.queue.addSubQueue(self.connectionwritepriority, ConnectionWriteEvent.createMatcher(), 'connectionwrite', self.totalwritelimit, self.totalwritelimit, CBQueue.AutoClassQueue.initHelper('connection', self.preservefornew, subqueuelimit = self.writelimitperconnection))
     self.scheduler.queue.addSubQueue(self.streamdatapriority, StreamDataEvent.createMatcher(), 'streamdata', self.streamdatalimit, self.streamdatalimit, CBQueue.AutoClassQueue.initHelper('stream', self.preservefornew, subqueuelimit = self.datalimitperstream))
     self.scheduler.queue.addSubQueue(self.routinecontrolpriority, RoutineControlEvent.createMatcher(), 'routine')
     self.scheduler.queue.addSubQueue(self.timerpriority, TimerEvent.createMatcher(), 'timer')
     self.scheduler.queue.addSubQueue(self.resolverresppriority, ResolveResponseEvent.createMatcher(), 'resolve')
     self.scheduler.queue.addSubQueue(self.resolverreqpriority, ResolveRequestEvent.createMatcher(), 'resolvereq', 16)
     self.scheduler.queue.addSubQueue(self.sysctlpriority, SystemControlEvent.createMatcher(), 'sysctl')
     self.scheduler.queue.addSubQueue(self.sysctllowpriority, SystemControlLowPriorityEvent.createMatcher(), 'sysctllow')
     self.scheduler.queue.addSubQueue(self.moduleapicallpriority, ModuleAPICall.createMatcher(), 'moduleapi', None, None, CBQueue.AutoClassQueue.initHelper('target', 2, subqueuelimit = 5))
     self.scheduler.queue.addSubQueue(self.moduleapireplypriority, ModuleAPIReply.createMatcher(), 'moduleapireply')
     self.scheduler.queue.addSubQueue(self.modulenotifypriority, ModuleNotification.createMatcher(), 'modulenotify', None, None, CBQueue.AutoClassQueue.initHelper('target', subqueuelimit=5))
     self.scheduler.queue.addSubQueue(self.moduleloadeventpriority, ModuleLoadStateChanged.createMatcher(), 'moduleload')
     self.scheduler.queue.addSubQueue(self.lockpriority, LockEvent.createMatcher(), 'lock', None, None, CBQueue.AutoClassQueue.initHelper('key', subqueuelimit=1))
     self.scheduler.queue.addSubQueue(self.futurepriority, FutureEvent.createMatcher(), 'future')
     self.resolver = Resolver(self.scheduler, self.resolverpoolsize)
     self.moduleloader = ModuleLoader(self)
Esempio n. 5
0
 def __init__(self):
     '''
     Constructor
     '''
     if hasattr(self, 'logging'):
         if isinstance(self.logging, dict):
             logging_config = dict(self.logging)
         else:
             logging_config = self.logging.todict()
         logging_config.setdefault('disable_existing_loggers', False)
         logging.config.dictConfig(logging_config)
     elif hasattr(self, 'loggingconfig'):
         logging.config.fileConfig(self.loggingconfig, disable_existing_loggers=False)
     self.scheduler = Scheduler(DefaultPolling(), getattr(self, 'processevents', None), getattr(self, 'queuedefaultsize', None), getattr(self, 'queuemaxsize', None),
                                defaultQueueClass=CBQueue.AutoClassQueue.initHelper('_classname0'), defaultQueuePriority = 400)
     if self.debugging:
         self.scheduler.debugging = True
         self.scheduler.logger.setLevel(logging.DEBUG)
     self.scheduler.queue.addSubQueue(self.pollwritepriority, PollEvent.createMatcher(category=PollEvent.WRITE_READY), 'write', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(self.pollreadpriority, PollEvent.createMatcher(category=PollEvent.READ_READY), 'read', None, None, CBQueue.AutoClassQueue.initHelper('fileno'))
     self.scheduler.queue.addSubQueue(self.pollerrorpriority, PollEvent.createMatcher(category=PollEvent.ERROR), 'error')
     self.scheduler.queue.addSubQueue(self.connectioncontrolpriority, ConnectionControlEvent.createMatcher(), 'control')
     self.scheduler.queue.addSubQueue(self.connectionwritepriority, ConnectionWriteEvent.createMatcher(), 'connectionwrite', self.totalwritelimit, self.totalwritelimit, CBQueue.AutoClassQueue.initHelper('connection', self.preservefornew, subqueuelimit = self.writelimitperconnection))
     self.scheduler.queue.addSubQueue(self.streamdatapriority, StreamDataEvent.createMatcher(), 'streamdata', self.streamdatalimit, self.streamdatalimit, CBQueue.AutoClassQueue.initHelper('stream', self.preservefornew, subqueuelimit = self.datalimitperstream))
     self.scheduler.queue.addSubQueue(self.routinecontrolpriority, RoutineControlEvent.createMatcher(), 'routine')
     self.scheduler.queue.addSubQueue(self.timerpriority, TimerEvent.createMatcher(), 'timer')
     self.scheduler.queue.addSubQueue(self.resolverresppriority, ResolveResponseEvent.createMatcher(), 'resolve')
     self.scheduler.queue.addSubQueue(self.resolverreqpriority, ResolveRequestEvent.createMatcher(), 'resolvereq', 16)
     self.scheduler.queue.addSubQueue(self.sysctlpriority, SystemControlEvent.createMatcher(), 'sysctl')
     self.scheduler.queue.addSubQueue(self.sysctllowpriority, SystemControlLowPriorityEvent.createMatcher(), 'sysctllow')
     self.scheduler.queue.addSubQueue(self.moduleapicallpriority, ModuleAPICall.createMatcher(), 'moduleapi', None, None, CBQueue.AutoClassQueue.initHelper('target', 2, subqueuelimit = 5))
     self.scheduler.queue.addSubQueue(self.moduleapireplypriority, ModuleAPIReply.createMatcher(), 'moduleapireply')
     self.scheduler.queue.addSubQueue(self.modulenotifypriority, ModuleNotification.createMatcher(), 'modulenotify', None, None, CBQueue.AutoClassQueue.initHelper('target', subqueuelimit=5))
     self.scheduler.queue.addSubQueue(self.moduleloadeventpriority, ModuleLoadStateChanged.createMatcher(), 'moduleload')
     self.scheduler.queue.addSubQueue(self.lockpriority, LockEvent.createMatcher(), 'lock', None, None, CBQueue.AutoClassQueue.initHelper('key', subqueuelimit=1))
     self.resolver = Resolver(self.scheduler, self.resolverpoolsize)
     self.moduleloader = ModuleLoader(self)
Esempio n. 6
0
 def __init__(self, scheduler = None, poolsize = 256):
     rm = ResolveRequestEvent.createMatcher()
     Connector.__init__(self, ThreadPool(poolsize, Resolver.resolver).create, (rm,), scheduler, False, poolsize, False)
     self.resolving = set()
Esempio n. 7
0
 def __init__(self, scheduler=None, poolsize=256):
     rm = ResolveRequestEvent.createMatcher()
     Connector.__init__(
         self, ThreadPool(poolsize, Resolver.resolver).create, (rm,), scheduler, True, poolsize, False
     )
     self.resolving = set()