def dispatch(self, event): plugins = component.get("PluginManager") adapters = component.get("AdapterManager") # dispatch event to all plugins except sender for plugin in plugins: if(plugin.name != event.src and plugin.ready == True): self.zmq_socket.send_unicode(plugin.name, zmq.SNDMORE) self.zmq_socket.send_unicode(event.to_json()) # dispatch event to all adapters except sender for adapter in adapters: if(adapter.name != event.src and adapter.ready == True): self.zmq_socket.send_unicode(adapter.name, zmq.SNDMORE) self.zmq_socket.send_unicode(event.to_json())
def __init__(self, module): self.lock = threading.Lock() self.module = module self.store = {} self.engine = component.get("Database").engine self.load()
def __init__(self): component.Component.__init__(self, "Database") config = component.get("Config") engine = config.get('database.engine') self.engine = create_engine(engine, echo=False) self.session = sessionmaker(bind=self.engine)() #self.connection = self.engine.connect()
def __init__(self, name="unknown"): # parent init EventBus.__init__(self, name) # create zmq socket config = component.get("Config") zmq_core_addr = config.get('core.zmq_addr') self.zmq_context = zmq.Context() self.zmq_socket = self.zmq_context.socket(zmq.DEALER) self.zmq_socket.setsockopt(zmq.IDENTITY, name) self.zmq_socket.connect(zmq_core_addr)
def publish(self, event, channel="eventbus"): plugins = component.get("PluginManager") adapters = component.get("AdapterManager") # logger.debug("dispatching event: " + event.to_json()) # dispatch event to all plugins except sender for plugin in plugins: if(plugin.name != event.src and plugin.ready == True): #logger.debug("dispatching to plugin: " + plugin.name) self.redis.lpush(plugin.name, event.to_json()) # dispatch event to all adapters except sender for adapter in adapters: if(adapter.name != event.src and adapter.ready == True): #logger.debug("dispatching to adapter: " + adapter.name) self.redis.lpush(adapter.name, event.to_json()) # dispatch to pubsub channel self.redis.publish(channel, event.to_json())
def process(self, event): #logger.debug("Processing event: " + event.uuid) adapters = component.get("AdapterManager") plugins = component.get("PluginManager") devices = component.get("DeviceManager") # set adapter as ready if(event.name == "adapter.ready"): adapter = adapters.get(event.src) adapter.ready = True; return # set plugin as ready elif(event.name == "plugin.ready"): plugin = plugins.get(event.src) plugin.ready = True; return # packet received elif(event.name == "device.update"): #logger.info("updating device") # get device from manager #device = devices.get_device_by_id(event.data["id"]) #if(device == None): # logger.error("Device not found: " + str(cmd.device["id"])) # return # dispatch device updated event # self.dispatch_event(event) return else: pass
def receiver(self, socket): config = component.get("Config") # bind udp listener interface = config.get('adapters.ethernet.interface', '0.0.0.0') port = config.get('adapters.ethernet.port', '4444') socket.bind((interface, port)) logger.debug('Binded on port: ' + str(port)) counter = 0 while True: # blocking read datagram, address = socket.recvfrom(1024) # put datagram to queue self.rq.put([datagram, address])
def run(self): config = component.get("Config") # uncomment this if adapter is running in separate process #self.db = Database() # create udp socket self.socket = socket(AF_INET,SOCK_DGRAM) self.socket.setsockopt(SOL_SOCKET, SO_RCVBUF, 1024 * 1024 * 16) self.init() logger.debug('Adapter initlialized') # spawn green threads g0 = gevent.spawn(self.publisher) g1 = gevent.spawn(self.receiver, self.socket) g2 = gevent.spawn(self.sender, self.socket) # join threads gevent.joinall([g0,g1,g2])
def __init__(self, name="unknown"): self.name = name self.config = component.get("Config")