52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
"""Websocket constants."""
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
from collections.abc import Awaitable, Callable
 | 
						|
from typing import TYPE_CHECKING, Any, Final
 | 
						|
 | 
						|
from homeassistant.core import HomeAssistant
 | 
						|
 | 
						|
if TYPE_CHECKING:
 | 
						|
    from .connection import ActiveConnection  # noqa: F401
 | 
						|
 | 
						|
 | 
						|
WebSocketCommandHandler = Callable[
 | 
						|
    [HomeAssistant, "ActiveConnection", dict[str, Any]], None
 | 
						|
]
 | 
						|
AsyncWebSocketCommandHandler = Callable[
 | 
						|
    [HomeAssistant, "ActiveConnection", dict[str, Any]], Awaitable[None]
 | 
						|
]
 | 
						|
 | 
						|
DOMAIN: Final = "websocket_api"
 | 
						|
URL: Final = "/api/websocket"
 | 
						|
PENDING_MSG_PEAK: Final = 1024
 | 
						|
PENDING_MSG_PEAK_TIME: Final = 5
 | 
						|
# Maximum number of messages that can be pending at any given time.
 | 
						|
# This is effectively the upper limit of the number of entities
 | 
						|
# that can fire state changes within ~1 second.
 | 
						|
MAX_PENDING_MSG: Final = 4096
 | 
						|
 | 
						|
ERR_ID_REUSE: Final = "id_reuse"
 | 
						|
ERR_INVALID_FORMAT: Final = "invalid_format"
 | 
						|
ERR_NOT_ALLOWED: Final = "not_allowed"
 | 
						|
ERR_NOT_FOUND: Final = "not_found"
 | 
						|
ERR_NOT_SUPPORTED: Final = "not_supported"
 | 
						|
ERR_HOME_ASSISTANT_ERROR: Final = "home_assistant_error"
 | 
						|
ERR_UNKNOWN_COMMAND: Final = "unknown_command"
 | 
						|
ERR_UNKNOWN_ERROR: Final = "unknown_error"
 | 
						|
ERR_UNAUTHORIZED: Final = "unauthorized"
 | 
						|
ERR_TIMEOUT: Final = "timeout"
 | 
						|
ERR_TEMPLATE_ERROR: Final = "template_error"
 | 
						|
 | 
						|
TYPE_RESULT: Final = "result"
 | 
						|
 | 
						|
 | 
						|
# Event types
 | 
						|
SIGNAL_WEBSOCKET_CONNECTED: Final = "websocket_connected"
 | 
						|
SIGNAL_WEBSOCKET_DISCONNECTED: Final = "websocket_disconnected"
 | 
						|
 | 
						|
# Data used to store the current connection list
 | 
						|
DATA_CONNECTIONS: Final = f"{DOMAIN}.connections"
 | 
						|
 | 
						|
FEATURE_COALESCE_MESSAGES = "coalesce_messages"
 |