Exemplo n.º 1
0
 def __init__(self, id=None, config={}, hw_metadata={}):
     EventEmitter.__init__(self)
     self.id = id
     self.config = config
     self.status = None
     self.device_timeout = config.get('max_time_since_last_seen', 300)
     self._timeout_expect_new_status = None
Exemplo n.º 2
0
 def __init__(self, host='0.0.0.0', port=1234, tcp_backlog=20):
     asyncore.dispatcher.__init__(self)
     EventEmitter.__init__(self)
     self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
     self.set_reuse_addr()
     self.bind((host, port))
     self.listen(tcp_backlog)
     self.clients = {}
Exemplo n.º 3
0
 def __init__(self, host, port):
     self._host = host
     self._port = port
     self._error = None
     self._connect_called = False
     asyncore.dispatcher.__init__(self)
     EventEmitter.__init__(self)
     self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
Exemplo n.º 4
0
 def __init__(self, ttl=None):
     EventEmitter.__init__(self)
     self.fd = None
     self.ip = None
     self.port = None
     self.timeout = None
     self.socket = None
     self.connected = False
     self.connecting = False
     self.error = None
     self.buffer = bytearray()
     self.ttl = ttl
     self.ttl_timeout = None
Exemplo n.º 5
0
 def __init__(self, sock, server):
     self.id = sock.fileno()
     debug("INFO", "NEW CLIENT: ", self.id)
     self.server = server
     self.request = None
     self.proto = None
     self.status = "alive"
     self.processing = False
     self.client_id = None
     self.session_id = None
     asyncore.dispatcher_with_send.__init__(self, sock)
     EventEmitter.__init__(self)
     # Proxy 'request' event to
     self.on('request', self.process_request)
Exemplo n.º 6
0
    def __init__(self, id=None, config={}, hw_metadata={}):
        EventEmitter.__init__(self)
        self.id = id
        self.config = config
        self.key = config.get('key', None)
        self.ip = config.get('ip', hw_metadata.get('ip', None))
        self.port = config.get('port', 6668)
        self.socket_timeout = config.get('socket_timeout', 10)
        self.command_timeout = config.get('command_timeout', 5)
        self.version = float(hw_metadata.get('version', '3.3'))
        self.active = hw_metadata.get('active', None)
        self.ablilty = hw_metadata.get('ablilty', None)
        self.encrypt = hw_metadata.get('encrypt', None)
        self.product_key = hw_metadata.get('productKey', None)
        self.gw_id = hw_metadata.get('gwId', None)
        self.dps = str(config.get('dps', 1))
        self.persistent_connections = config.get('persistent_connections',
                                                 False)
        self.get_status_on_start = config.get('get_status_on_start', True)

        # Creates the connection object and sets event handlers
        self.connection = AsyncSocketClient(ttl=config.get('socket_ttl', 300))
        self.connection.on('connect', self._on_dev_connect)
        self.connection.on('failure', self._on_dev_connection_failure)
        self.connection.on('timeout', self._on_dev_connection_failure)
        self.connection.on('break', self._on_dev_connection_break)
        self.connection.on('disconnect', self._on_dev_disconnect)
        self.connection.on('exception', self._on_dev_exception)
        self.connection.on('error', self._on_dev_error)

        self.connected = False
        self.connecting = False
        self.sync_proto = SyncProto(
            self.connection,
            self._encode_and_send_message,
            self._read_and_parse_message,
        )
        self.sync_proto.on('drain', self._on_dev_send_drain)
        self.sync_proto.on('send_error', self._on_dev_send_error)
        self.sync_proto.on('receive_error', self._on_dev_recv_error)

        # When IP address changes
        self.on('_ip', self._on_ip_change)

        # Connect to the device right away if persistent_connections is ON
        if self.gw_id and self.ip:
            self.emit('_ip')
Exemplo n.º 7
0
    def __init__(self,
                 async_socket,
                 encoder_and_sender,
                 reader_and_decoder,
                 timeout=None):
        EventEmitter.__init__(self)
        self.socket = async_socket
        self.id = None
        self.encode_and_send = encoder_and_sender
        self.receive_and_decode = reader_and_decoder
        self.command_queue = []
        self.buffer = bytearray()

        async_socket.on('connect', self._on_connect)
        async_socket.on('break', self._on_disconnect)
        async_socket.on('disconnect', self._on_disconnect)
        async_socket.on('data', self._on_data)
        self.on('_next', self._on_can_send_next_command)
Exemplo n.º 8
0
    def __init__(self,
                 id=None,
                 hw=None,
                 config={},
                 discovery_status='offline',
                 device_status="up",
                 switch_status=None,
                 hw_metadata={},
                 last_seen=None,
                 **kwargs):
        EventEmitter.__init__(self)
        self.id = id
        self.discovery_status = discovery_status
        self.device_status = device_status
        self.switch_status = switch_status
        self.last_status_update = 0
        self.last_seen = last_seen
        self.hw_metadata = hw_metadata
        self.hooks = config.get('hooks', [])
        self.metadata = config.get('metadata', {})
        self.status_cache = config.get('status_cache', None)
        self.refresh_status = int(config.get('refresh_status', 0))
        self.hold_get_status = config.get('hold_get_status', False)
        self.activation_key = config.get('activation_key', None)
        self.fails_to_miss = config.get('fails_to_miss', 5)
        self.config = config
        self.hw_metadata = hw_metadata
        self.hw_type = hw
        self.hw = self._import_device_module(id, hw, config,
                                             hw_metadata) if hw else None
        self.connect_errors = 0
        self.waiting_status = []

        # Listen to device's events
        if self.hw:
            self.hw.on('status_update', self._on_status_update)

        # Periodically refresh the device status
        if self.refresh_status:
            asyncorepp.set_interval(self._refresh_status, self.refresh_status)