Pular para o conteúdo principal

Camada de Transporte — Visao Geral

A camada de transporte abstrai como os dados fluem entre agentes. Toda implementação segue a interface TransportStrategy:

transport.write("canal", np.array([1.0, 2.0]))
data = transport.read("canal") # -> np.ndarray

Escolhendo o transporte

TransporteLatência tipicaTopologiaCaso de uso
SharedMemoryTransport< 1 µsmesma máquinaSimulação de alta frequência
ZMQTransport (PUB/SUB)~100 µs–1 msredeControlador em outra máquina, múltiplos observadores
ZMQReqRepTransport~100 µs–1 msredeSimulação lock-step sobre rede

Interface comum

from synapsys.transport import SharedMemoryTransport

with SharedMemoryTransport("bus", {"y": 2, "u": 1}, create=True) as t:
t.write("y", np.array([0.0, 0.0]))
y = t.read("y")

Implementando um transporte customizado

import numpy as np
from synapsys.transport import TransportStrategy

class RedisTransport(TransportStrategy):
def write(self, channel: str, data: np.ndarray) -> None:
self._redis.set(channel, data.tobytes())

def read(self, channel: str) -> np.ndarray:
raw = self._redis.get(channel)
return np.frombuffer(raw, dtype=np.float64)

def close(self) -> None:
self._redis.close()