mirror of
https://github.com/hanzozt/dilithium.git
synced 2026-10-30 20:38:17 +00:00
65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package westworld3
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
"net"
|
|
)
|
|
|
|
type Instrument interface {
|
|
NewInstance(id string, peer *net.UDPAddr) InstrumentInstance
|
|
}
|
|
|
|
type InstrumentInstance interface {
|
|
// connection
|
|
Listener(addr *net.UDPAddr)
|
|
Hello(peer *net.UDPAddr)
|
|
Connected(peer *net.UDPAddr)
|
|
ConnectionError(peer *net.UDPAddr, err error)
|
|
Closed(peer *net.UDPAddr)
|
|
|
|
// wire
|
|
WireMessageTx(peer *net.UDPAddr, wm *wireMessage)
|
|
WireMessageRetx(peer *net.UDPAddr, wm *wireMessage)
|
|
WireMessageRx(peer *net.UDPAddr, wm *wireMessage)
|
|
UnknownPeer(peer *net.UDPAddr)
|
|
ReadError(peer *net.UDPAddr, err error)
|
|
UnexpectedMessageType(peer *net.UDPAddr, mt messageType)
|
|
|
|
// control
|
|
TxAck(peer *net.UDPAddr, wm *wireMessage)
|
|
RxAck(peer *net.UDPAddr, wm *wireMessage)
|
|
TxKeepalive(peer *net.UDPAddr, wm *wireMessage)
|
|
RxKeepalive(peer *net.UDPAddr, wm *wireMessage)
|
|
|
|
// txPortal
|
|
TxPortalCapacityChanged(peer *net.UDPAddr, capacity int)
|
|
TxPortalSzChanged(peer *net.UDPAddr, capacity int)
|
|
TxPortalRxSzChanged(peer *net.UDPAddr, sz int)
|
|
NewRetxMs(peer *net.UDPAddr, retxMs int)
|
|
NewRetxScale(peer *net.UDPAddr, retxScale float64)
|
|
DuplicateAck(peer *net.UDPAddr, ack int32)
|
|
|
|
// rxPortal
|
|
RxPortalSzChanged(peer *net.UDPAddr, capacity int)
|
|
DuplicateRx(peer *net.UDPAddr, wm *wireMessage)
|
|
|
|
// allocation
|
|
Allocate(id string)
|
|
|
|
// instrument lifecycle
|
|
Shutdown()
|
|
}
|
|
|
|
func NewInstrument(name string, config map[string]interface{}) (i Instrument, err error) {
|
|
switch name {
|
|
case "metrics":
|
|
return NewMetricsInstrument(config)
|
|
case "nil":
|
|
return NewNilInstrument(), nil
|
|
case "trace":
|
|
return NewTraceInstrument(config)
|
|
default:
|
|
return nil, errors.Errorf("unknown instrument '%s'", name)
|
|
}
|
|
}
|