Documentation
¶
Index ¶
- type AddNodeEvent
- type BaseEvent
- type ConnectEvent
- type Coordinate
- type DelayEvent
- type DisconnectEvent
- type Event
- type EventQueue
- type EventType
- type InternalID
- type InternalNode
- type InternalPeer
- type Logger
- type MovementInstruction
- type Node
- type NodeArguments
- type NodeID
- type NodeMovement
- type Peer
- type ReceiveEvent
- type Region
- type RegionCoord
- type RegionMap
- type RemoveNodeEvent
- type SendEvent
- type Simulator
- func (s *Simulator) AddNode(node Node, nodeMovement NodeMovement, delay time.Duration)
- func (s *Simulator) IsRunning() bool
- func (s *Simulator) IsTerminating() bool
- func (s *Simulator) NewConnectEvent(time time.Duration, nodeA *InternalNode, nodeB *InternalNode) *ConnectEvent
- func (s *Simulator) NewDisconnectEvent(time time.Duration, nodeA *InternalNode, nodeB *InternalNode) *DisconnectEvent
- func (s *Simulator) Nodes() []*InternalNode
- func (s *Simulator) Now() time.Time
- func (s *Simulator) Peers() []InternalPeer
- func (s *Simulator) Start()
- func (s *Simulator) Terminate()
- func (s *Simulator) Update(updateUntilTime time.Duration) error
- type TerminateEvent
- type TimestepEvent
- type TransmissionBehavior
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddNodeEvent ¶
type AddNodeEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*AddNodeEvent) EventType ¶
func (e *AddNodeEvent) EventType() EventType
func (*AddNodeEvent) Node ¶
func (e *AddNodeEvent) Node() *InternalNode
type BaseEvent ¶
type BaseEvent struct {
// contains filtered or unexported fields
}
func (*BaseEvent) ParentEvent ¶
func (*BaseEvent) SequenceNumber ¶
type ConnectEvent ¶
type ConnectEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*ConnectEvent) EventType ¶
func (e *ConnectEvent) EventType() EventType
func (*ConnectEvent) NodeA ¶
func (e *ConnectEvent) NodeA() *InternalNode
func (*ConnectEvent) NodeB ¶
func (e *ConnectEvent) NodeB() *InternalNode
type Coordinate ¶
func (*Coordinate) Distance ¶
func (a *Coordinate) Distance(b Coordinate) float64
type DelayEvent ¶
type DelayEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*DelayEvent) EventType ¶
func (e *DelayEvent) EventType() EventType
type DisconnectEvent ¶
type DisconnectEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*DisconnectEvent) EventType ¶
func (e *DisconnectEvent) EventType() EventType
func (*DisconnectEvent) NodeA ¶
func (e *DisconnectEvent) NodeA() *InternalNode
func (*DisconnectEvent) NodeB ¶
func (e *DisconnectEvent) NodeB() *InternalNode
type EventQueue ¶
type EventQueue []Event
An EventQueue implements heap.Interface and holds Items.
func (EventQueue) Len ¶
func (pq EventQueue) Len() int
func (EventQueue) Less ¶
func (pq EventQueue) Less(i, j int) bool
func (*EventQueue) Next ¶
func (pq *EventQueue) Next() any
func (*EventQueue) Pop ¶
func (pq *EventQueue) Pop() any
func (*EventQueue) Push ¶
func (pq *EventQueue) Push(x any)
func (EventQueue) Swap ¶
func (pq EventQueue) Swap(i, j int)
type InternalID ¶
type InternalID int
type InternalNode ¶
type InternalNode struct {
// contains filtered or unexported fields
}
func (*InternalNode) Coords ¶
func (n *InternalNode) Coords() Coordinate
func (*InternalNode) Data ¶
func (n *InternalNode) Data() *map[string]interface{}
func (*InternalNode) Node ¶
func (n *InternalNode) Node() Node
func (*InternalNode) NodeID ¶
func (n *InternalNode) NodeID() NodeID
type InternalPeer ¶
type InternalPeer struct {
// contains filtered or unexported fields
}
func (*InternalPeer) Data ¶
func (p *InternalPeer) Data(node *InternalNode) *map[string]any
func (*InternalPeer) NodeA ¶
func (p *InternalPeer) NodeA() *InternalNode
func (*InternalPeer) NodeB ¶
func (p *InternalPeer) NodeB() *InternalNode
type MovementInstruction ¶
type MovementInstruction struct {
Coords Coordinate
Time time.Duration
}
func NewMovementInstruction ¶
func NewMovementInstruction(x float64, y float64, time time.Duration) MovementInstruction
type Node ¶
type Node interface {
OnConnect(peer Peer, id NodeID)
OnDisconnect(peer Peer, id NodeID)
OnReceivePacket(peer Peer, packet []byte, id NodeID)
OnStart(sim NodeArguments)
ID() NodeID
OnTerminate()
TransmissionBehavior() TransmissionBehavior
}
func NodeFromEvent ¶
type NodeArguments ¶
type NodeMovement ¶
type NodeMovement interface {
StartPosition() Coordinate
RegisterMovements(Coordinate) MovementInstruction
}
type ReceiveEvent ¶
type ReceiveEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*ReceiveEvent) EventType ¶
func (e *ReceiveEvent) EventType() EventType
func (*ReceiveEvent) OriginNodeID ¶
func (e *ReceiveEvent) OriginNodeID() NodeID
func (*ReceiveEvent) Packet ¶
func (e *ReceiveEvent) Packet() []byte
func (*ReceiveEvent) Target ¶
func (e *ReceiveEvent) Target() *InternalNode
type Region ¶
type Region struct {
Coordinate RegionCoord
Nodes []*InternalNode
}
func NewRegion ¶
func NewRegion(c RegionCoord) *Region
func (*Region) AddNode ¶
func (r *Region) AddNode(node *InternalNode)
func (*Region) RemoveNode ¶
func (r *Region) RemoveNode(node *InternalNode)
type RegionCoord ¶
type RegionMap ¶
type RegionMap struct {
// contains filtered or unexported fields
}
func NewRegionMap ¶
func (*RegionMap) AddNode ¶
func (r *RegionMap) AddNode(node *InternalNode)
func (*RegionMap) CoordToRegionCoord ¶
func (r *RegionMap) CoordToRegionCoord(c Coordinate) RegionCoord
func (*RegionMap) MoveNode ¶
func (r *RegionMap) MoveNode(node *InternalNode, old Coordinate, new Coordinate)
func (*RegionMap) WithinRange ¶
func (r *RegionMap) WithinRange(node *InternalNode) ([]*InternalNode, []*InternalNode)
type RemoveNodeEvent ¶
type RemoveNodeEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*RemoveNodeEvent) EventType ¶
func (e *RemoveNodeEvent) EventType() EventType
func (*RemoveNodeEvent) Node ¶
func (e *RemoveNodeEvent) Node() *InternalNode
type SendEvent ¶
type SendEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*SendEvent) Origin ¶
func (e *SendEvent) Origin() *InternalNode
func (*SendEvent) TargetNodeID ¶
type Simulator ¶
type Simulator struct {
// contains filtered or unexported fields
}
func NewSimulator ¶
func (*Simulator) AddNode ¶
func (s *Simulator) AddNode(node Node, nodeMovement NodeMovement, delay time.Duration)
func (*Simulator) IsTerminating ¶
func (*Simulator) NewConnectEvent ¶
func (s *Simulator) NewConnectEvent(time time.Duration, nodeA *InternalNode, nodeB *InternalNode) *ConnectEvent
func (*Simulator) NewDisconnectEvent ¶
func (s *Simulator) NewDisconnectEvent(time time.Duration, nodeA *InternalNode, nodeB *InternalNode) *DisconnectEvent
func (*Simulator) Nodes ¶
func (s *Simulator) Nodes() []*InternalNode
func (*Simulator) Peers ¶
func (s *Simulator) Peers() []InternalPeer
type TerminateEvent ¶
type TerminateEvent struct {
BaseEvent
// contains filtered or unexported fields
}
func (*TerminateEvent) Error ¶
func (e *TerminateEvent) Error() error
func (*TerminateEvent) EventType ¶
func (e *TerminateEvent) EventType() EventType
type TimestepEvent ¶
type TimestepEvent struct {
BaseEvent
}
func (*TimestepEvent) EventType ¶
func (e *TimestepEvent) EventType() EventType
type TransmissionBehavior ¶
type TransmissionBehavior interface {
Transmission(Coordinate, Coordinate, []byte) (shouldBeDropped bool, delay time.Duration)
}
Click to show internal directories.
Click to hide internal directories.