Exemple #1
0
    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())
Exemple #2
0
 def __init__(self, module):
     self.lock = threading.Lock()
     self.module = module
     self.store = {}
     self.engine = component.get("Database").engine
     
     self.load()
Exemple #3
0
 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()
     
Exemple #4
0
 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)
Exemple #5
0
    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())
Exemple #6
0
  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
Exemple #7
0
    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])
Exemple #8
0
    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])       
Exemple #9
0
 def __init__(self, name="unknown"):
     self.name = name
     self.config = component.get("Config")