Verified Commit 12f4660a authored by Jakob Moser's avatar Jakob Moser
Browse files

Implement message decoding

parent 6eae6429
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
from poolpay.model.messages.PacketDecodeError import PacketDecodeError
from poolpay.model.messages.UpdateBalanceMessage import UpdateBalanceMessage
from poolpay.model.messages.Message import Message
from poolpay.wire.Packet import Packet


MESSAGE_TYPES = (
    UpdateBalanceMessage,
)


def decode(packet: Packet) -> Message | None:
    """
    Try to decode the given packet into a semantic message. Return None if nothing could be decoded.
    """
    for ConcreteMessage in MESSAGE_TYPES:
        try:
            return ConcreteMessage.from_packet(packet)
        except PacketDecodeError:
            pass

    return None