mirror of https://github.com/gsi-upm/soil
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
541 B
Python
36 lines
541 B
Python
from dataclasses import dataclass, field
|
|
from typing import Any
|
|
from uuid import uuid4
|
|
|
|
|
|
class Event:
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class Message:
|
|
payload: Any
|
|
sender: Any = None
|
|
expiration: float = None
|
|
timestamp: float = None
|
|
id: int = field(default_factory=uuid4)
|
|
|
|
def expired(self, when):
|
|
return self.expiration is not None and self.expiration < when
|
|
|
|
|
|
class Reply(Message):
|
|
source: Message
|
|
|
|
|
|
class Ask(Message):
|
|
reply: Message = None
|
|
|
|
|
|
class Tell(Message):
|
|
pass
|
|
|
|
|
|
class TimedOut(Exception):
|
|
pass
|