mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
|
# File: arq_received_data_dispatcher.py
|
||
|
|
||
|
import structlog
|
||
|
from arq_data_formatter import ARQDataFormatter
|
||
|
|
||
|
class ARQReceivedDataDispatcher:
|
||
|
def __init__(self):
|
||
|
self.logger = structlog.get_logger(type(self).__name__)
|
||
|
self.arq_data_formatter = ARQDataFormatter()
|
||
|
self.endpoints = {
|
||
|
"p2pmsg": self.handle_p2pmsg,
|
||
|
"test": self.handle_test,
|
||
|
}
|
||
|
|
||
|
def log(self, message, isWarning=False):
|
||
|
msg = f"[{type(self).__name__}]: {message}"
|
||
|
logger = self.logger.warn if isWarning else self.logger.info
|
||
|
logger(msg)
|
||
|
|
||
|
def dispatch(self, byte_data):
|
||
|
"""Use the data formatter to decapsulate and then dispatch data to the appropriate endpoint."""
|
||
|
type_key, data = self.arq_data_formatter.decapsulate(byte_data)
|
||
|
if type_key in self.endpoints:
|
||
|
self.endpoints[type_key](data)
|
||
|
else:
|
||
|
self.handle_raw(data)
|
||
|
|
||
|
def handle_p2pmsg(self, data):
|
||
|
self.log(f"Handling p2pmsg: {data}")
|
||
|
|
||
|
def handle_raw(self, data):
|
||
|
self.log(f"Handling raw data: {data}")
|
||
|
|
||
|
def handle_test(self, data):
|
||
|
self.log(f"Handling test data: {data}")
|