Improved thread safety

This commit is contained in:
2022-08-16 20:42:35 +00:00
parent ae9ffb65c1
commit 39f727206f
11 changed files with 82 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ import logging
from homeassistant.components.websocket_api import event_message
from homeassistant.helpers import device_registry, entity_registry
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from homeassistant.core import callback
from .const import DATA_BROWSERS, DOMAIN, DATA_ADDERS
from .sensor import BrowserSensor
@@ -130,11 +131,14 @@ class BrowserModBrowser:
er.async_remove(self.entities["camera"].entity_id)
del self.entities["camera"]
self.send(
None, browserEntities={k: v.entity_id for k, v in self.entities.items()}
hass.create_task(
self.send(
None, browserEntities={k: v.entity_id for k, v in self.entities.items()}
)
)
def send(self, command, **kwargs):
@callback
async def send(self, command, **kwargs):
"""Send a command to this browser."""
if self.connection is None:
return

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,8 @@ from homeassistant.components.websocket_api import (
from homeassistant.components import websocket_api
from homeassistant.core import callback
from .const import (
BROWSER_ID,
DATA_STORE,
@@ -40,6 +42,7 @@ async def async_setup_connection(hass):
browserID = msg[BROWSER_ID]
store = hass.data[DOMAIN][DATA_STORE]
@callback
def send_update(data):
connection.send_message(event_message(msg["id"], {"result": data}))

View File

@@ -27,7 +27,7 @@ async def async_setup_services(hass):
if target not in browsers:
continue
browser = browsers[target]
browser.send(service, **data)
hass.create_task(browser.send(service, **data))
def handle_service(call):
service = call.service