46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
class BridgeException(Exception):
|
|
def __init__(self, id: str, type: str, message: str) -> None:
|
|
super().__init__(f"Bridge [{type} | {id}] has thrown an exception: {message}")
|
|
|
|
|
|
class Bridge:
|
|
def __init__(self, *, id: str, type: str) -> None:
|
|
self._id = id
|
|
self._type = type
|
|
|
|
@property
|
|
def id(self) -> str:
|
|
return self._id
|
|
|
|
@property
|
|
def type(self) -> str:
|
|
return self._type
|
|
|
|
@property
|
|
def is_connected(self) -> bool | None:
|
|
return None
|
|
|
|
def __del__(self) -> None:
|
|
self.disconnect()
|
|
|
|
def connect(self) -> None:
|
|
pass
|
|
|
|
def disconnect(self) -> None:
|
|
pass
|
|
|
|
def requires_connection(func, *, auto_connect=True):
|
|
def inner(self: Bridge, *args, **kwargs):
|
|
if self.is_connected is False: # Neither True, nor None
|
|
if not auto_connect:
|
|
raise BridgeException(
|
|
self.id,
|
|
self.type,
|
|
f"Bridge must be manually connected before executing method [{func.__name__}].",
|
|
)
|
|
|
|
self.connect()
|
|
|
|
return func(*args, **kwargs)
|
|
|
|
return inner
|