server

package
v0.0.0-...-35f3e1e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

Package server implements simple Unicast PTP UDP server.

Package server implements simple Unicast PTP UDP server.

Package server implements simple Unicast PTP UDP server.

Package server implements simple Unicast PTP UDP server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ReadPidFile

func ReadPidFile(path string) (int, error)

ReadPidFile read a pid file from a path location and returns a pid

Types

type Config

type Config struct {
	StaticConfig
	DynamicConfig
	// contains filtered or unexported fields
}

Config is a server config structure

func (*Config) CreatePidFile

func (c *Config) CreatePidFile() error

CreatePidFile creates a pid file in a defined location

func (*Config) DeletePidFile

func (c *Config) DeletePidFile() error

DeletePidFile deletes a pid file from a defined location

func (*Config) IfaceHasIP

func (c *Config) IfaceHasIP() (bool, error)

IfaceHasIP checks if selected IP is on interface

type DynamicConfig

type DynamicConfig struct {
	// ClockAccuracy to report via announce messages. Time Accurate within 100ns
	ClockAccuracy ptp.ClockAccuracy
	// ClockClass to report via announce messages. 6 - Locked with Primary Reference Clock
	ClockClass ptp.ClockClass
	// DrainInterval is an interval for drain checks
	DrainInterval time.Duration
	// MaxSubDuration is a maximum sync/announce/delay_resp subscription duration
	MaxSubDuration time.Duration
	// MetricInterval is an interval of resetting metrics
	MetricInterval time.Duration
	// MinSubInterval is a minimum interval of the sync/announce subscription messages
	MinSubInterval time.Duration
	// UTCOffset is a current UTC offset.
	UTCOffset time.Duration
}

DynamicConfig is a set of dynamic options which don't need a server restart

func ReadDynamicConfig

func ReadDynamicConfig(path string) (*DynamicConfig, error)

ReadDynamicConfig reads dynamic config from the file

func (*DynamicConfig) UTCOffsetSanity

func (dc *DynamicConfig) UTCOffsetSanity() error

UTCOffsetSanity checks if UTC offset value has an adequate value As of Apr 2022 TAI UTC offset is 37 seconds

func (*DynamicConfig) Write

func (dc *DynamicConfig) Write(path string) error

Write dynamic config to a file

type Server

type Server struct {
	Config *Config
	Stats  stats.Stats
	Checks []drain.Drain
	// contains filtered or unexported fields
}

Server is PTP unicast server

func (*Server) Drain

func (s *Server) Drain()

Drain traffic

func (*Server) Start

func (s *Server) Start() error

Start the workers send bind to event and general UDP ports

func (*Server) Undrain

func (s *Server) Undrain()

Undrain traffic

type StaticConfig

type StaticConfig struct {
	ConfigFile      string
	DebugAddr       string
	DomainNumber    uint
	DrainFileName   string
	DSCP            int
	Interface       string
	IP              net.IP
	LogLevel        string
	MonitoringPort  int
	PidFile         string
	QueueSize       int
	RecvWorkers     int
	SendWorkers     int
	TimestampType   timestamp.Timestamp
	UndrainFileName string
}

StaticConfig is a set of static options which require a server restart

type SubscriptionClient

type SubscriptionClient struct {
	sync.Mutex
	// contains filtered or unexported fields
}

SubscriptionClient is sending subscriptionType messages periodically

func NewSubscriptionClient

func NewSubscriptionClient(q chan *SubscriptionClient, gq chan *SubscriptionClient, eclisa, gclisa unix.Sockaddr, st ptp.MessageType, sc *Config, i time.Duration, e time.Time) *SubscriptionClient

NewSubscriptionClient gets minimal required arguments to create a subscription

func (*SubscriptionClient) Announce

func (sc *SubscriptionClient) Announce() *ptp.Announce

Announce returns ptp Announce packet

func (*SubscriptionClient) DelayResp

func (sc *SubscriptionClient) DelayResp() *ptp.DelayResp

DelayResp returns ptp Delay Response packet

func (*SubscriptionClient) Expired

func (sc *SubscriptionClient) Expired() bool

Expired checks if the subscription expired or not

func (*SubscriptionClient) Followup

func (sc *SubscriptionClient) Followup() *ptp.FollowUp

Followup returns ptp Follow Up packet

func (*SubscriptionClient) IncSequenceID

func (sc *SubscriptionClient) IncSequenceID()

IncSequenceID adds 1 to a sequence id

func (*SubscriptionClient) Once

func (sc *SubscriptionClient) Once()

Once adds itself to the worker queue once

func (*SubscriptionClient) OnceSignaling

func (sc *SubscriptionClient) OnceSignaling()

OnceSignaling adds itself to the worker signaling queue once

func (*SubscriptionClient) Running

func (sc *SubscriptionClient) Running() bool

Running returns the running bool

func (*SubscriptionClient) SetExpire

func (sc *SubscriptionClient) SetExpire(expire time.Time)

SetExpire atomically sets expire

func (*SubscriptionClient) SetGclisa

func (sc *SubscriptionClient) SetGclisa(gclisa unix.Sockaddr)

SetGclisa atomically sets gclisa

func (*SubscriptionClient) SetInterval

func (sc *SubscriptionClient) SetInterval(interval time.Duration)

SetInterval atomically sets interval

func (*SubscriptionClient) Signaling

func (sc *SubscriptionClient) Signaling() *ptp.Signaling

Signaling returns ptp Signaling packet granting the requested subscription

func (*SubscriptionClient) Start

func (sc *SubscriptionClient) Start(ctx context.Context)

Start launches the subscription timers and exit on expire

func (*SubscriptionClient) Stop

func (sc *SubscriptionClient) Stop()

Stop stops the subscription

func (*SubscriptionClient) Sync

func (sc *SubscriptionClient) Sync() *ptp.SyncDelayReq

Sync returns ptp Sync packet

func (*SubscriptionClient) UpdateAnnounce

func (sc *SubscriptionClient) UpdateAnnounce()

UpdateAnnounce updates ptp Announce packet

func (*SubscriptionClient) UpdateAnnounceDelayReq

func (sc *SubscriptionClient) UpdateAnnounceDelayReq(cf ptp.Correction, seq uint16)

UpdateAnnounceDelayReq updates ptp Announce Delay Req payload

func (*SubscriptionClient) UpdateAnnounceFollowUp

func (sc *SubscriptionClient) UpdateAnnounceFollowUp(transmitted time.Time)

UpdateAnnounceFollowUp updates ptp Announce Follow Up payload

func (*SubscriptionClient) UpdateDelayResp

func (sc *SubscriptionClient) UpdateDelayResp(h *ptp.Header, received time.Time)

UpdateDelayResp updates ptp Delay Response packet

func (*SubscriptionClient) UpdateFollowup

func (sc *SubscriptionClient) UpdateFollowup(hwts time.Time)

UpdateFollowup updates ptp Follow Up packet

func (*SubscriptionClient) UpdateSignalingCancel

func (sc *SubscriptionClient) UpdateSignalingCancel()

UpdateSignalingCancel updates ptp Signaling packet canceling the requested subscription

func (*SubscriptionClient) UpdateSignalingGrant

func (sc *SubscriptionClient) UpdateSignalingGrant(sg *ptp.Signaling, mt ptp.UnicastMsgTypeAndFlags, interval ptp.LogInterval, duration uint32)

UpdateSignalingGrant updates ptp Signaling packet granting the requested subscription

func (*SubscriptionClient) UpdateSync

func (sc *SubscriptionClient) UpdateSync()

UpdateSync updates ptp Sync packet

func (*SubscriptionClient) UpdateSyncDelayReq

func (sc *SubscriptionClient) UpdateSyncDelayReq(received time.Time, seq uint16)

UpdateSyncDelayReq updates ptp SyncDelayReq packet

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL