ТамТам: обработчик 5 и 1 опкода

This commit is contained in:
Alexey Polyakov
2026-03-22 17:09:20 +03:00
parent f2e7e37592
commit aa6411b75d
3 changed files with 40 additions and 4 deletions
+32 -3
View File
@@ -1,5 +1,6 @@
import pydantic
from classes.baseprocessor import BaseProcessor
from tamtam.models import HelloPayloadModel
from tamtam.models import HelloPayloadModel, PingPayloadModel
class MainProcessors(BaseProcessor):
async def session_init(self, payload, seq, writer):
@@ -7,7 +8,7 @@ class MainProcessors(BaseProcessor):
# Валидируем данные пакета
try:
HelloPayloadModel.model_validate(payload)
except Exception as e:
except pydantic.ValidationError as error:
await self._send_error(seq, self.opcodes.SESSION_INIT,
self.error_types.INVALID_PAYLOAD, writer)
return None, None
@@ -33,4 +34,32 @@ class MainProcessors(BaseProcessor):
# Отправляем
await self._send(writer, packet)
return device_type, device_name
return device_type, device_name
async def ping(self, payload, seq, writer):
"""Обработчик пинга"""
# Валидируем данные пакета
try:
PingPayloadModel.model_validate(payload)
except pydantic.ValidationError as error:
self.logger.error(f"Возникли ошибки при валидации пакета: {error}")
await self._send_error(seq, self.opcodes.PING, self.error_types.INVALID_PAYLOAD, writer)
return
# Собираем пакет
packet = self.proto.pack_packet(
cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.PING, payload=None
)
# Отправляем
await self._send(writer, packet)
async def log(self, payload, seq, writer):
"""Обработчик лога"""
# Собираем пакет
packet = self.proto.pack_packet(
cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.LOG, payload=None
)
# Отправляем
await self._send(writer, packet)