Documentation
¶
Overview ¶
Package pion реализует порт ports.P2P поверх ICE + DTLS + SCTP (ADR-043, путь B+: без pion/webrtc и без медиастека).
Спецификация — photon-core/docs/p2p-session.md, написана до этого кода. Аутентификация peer'а — ADR-041, signaling — ADR-042, жизненный цикл — ADR-044, однонаправленные потоки — ADR-016.
Ни один тип Pion не пересекает границу порта: наружу идут []byte, ports.PublicKey, ports.Session/Connection/Stream и ports.Endpoint (ADR-043 §0).
Index ¶
- type Adapter
- func (a *Adapter) AcceptOffer(ctx context.Context, peer ports.PublicKey, offer []byte) ([]byte, ports.Session, error)
- func (a *Adapter) Close() error
- func (a *Adapter) CompleteSession(ctx context.Context, peer ports.PublicKey, answer []byte) (ports.Session, error)
- func (a *Adapter) CreateOffer(ctx context.Context, peer ports.PublicKey) ([]byte, error)
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Adapter ¶
type Adapter struct {
// contains filtered or unexported fields
}
Adapter реализует ports.P2P.
Владеет ресурсами СОГЛАСОВАНИЯ; ресурсами установленного соединения владеет session. Поэтому Close() не закрывает уже установленные сессии — прямое требование порта (ADR-044 §8).
func (*Adapter) AcceptOffer ¶
func (a *Adapter) AcceptOffer(ctx context.Context, peer ports.PublicKey, offer []byte) ([]byte, ports.Session, error)
AcceptOffer — шаг 2 отвечающего. Session возвращается ДО установления (ADR-044 §1): её методы блокируются до исхода.
func (*Adapter) Close ¶
Close прекращает НОВЫЕ согласования и освобождает их ресурсы. Уже установленные Session не закрывает — прямое требование порта; общий ресурс живёт, пока жива последняя сессия (ADR-044 §8). Идемпотентен.
type Config ¶
type Config struct {
// Identity и Self — ключ устройства, которым подписывается handshake
// ADR-041. Приватный ключ не покидает адаптер и никуда не передаётся
// (ADR-021).
Identity ports.Identity
Self ports.IdentityPair
// STUNTURN — адреса вида "stun:host:port" / "turn:host:port".
// Учётные данные TURN задаются здесь же (TURNUser/TURNPass): конкретный
// сервер — конфигурация развёртывания, а не предмет заморозки
// (ADR-043 §1).
STUNTURN []string
TURNUser string
TURNPass string
// ForceRelay исключает host- и srflx-кандидатов, оставляя только relay.
// Нужен для acceptance-проверки relay-пути: без него TURN может быть
// настроен и ни разу не использован, а прогон выглядел бы проверкой
// relay, не будучи ею (p2p-session.md §10.2).
ForceRelay bool
// EstablishTimeout — обязательный потолок согласования (ADR-044 §3).
// Без него зависание неотличимо от медленной сети.
EstablishTimeout time.Duration
// PeerLossTimeout — сколько тишины на ICE после установления означает,
// что собеседник исчез без закрытия (убит процесс, пропала сеть). По
// истечении сессия переходит в отказ: заблокированные чтения и запись
// возвращают ошибку, ресурсы сессии освобождаются. Ноль — умолчания
// pion/ice (5 с до disconnected и ещё 25 с до failed). Значение —
// конфигурация развёртывания, не порт: порт фиксирует лишь, что исход
// терминален (ADR-044).
PeerLossTimeout time.Duration
// contains filtered or unexported fields
}
Config — параметры адаптера.