Documentation
¶
Overview ¶
Package protocol defines the control protocol messages for otun.
Index ¶
- Constants
- type ControlStream
- func (c *ControlStream) Close() error
- func (c *ControlStream) ReadMessage() (any, error)
- func (c *ControlStream) SendError(message string) error
- func (c *ControlStream) SendHeartbeat() error
- func (c *ControlStream) SendHeartbeatAck() error
- func (c *ControlStream) SendRegister(subdomain string) error
- func (c *ControlStream) SendRegistered(url, subdomain string) error
- type ErrorMessage
- type HeartbeatAckMessage
- type HeartbeatMessage
- type RegisterMessage
- type RegisteredMessage
Constants ¶
const ( TypeRegister = "register" TypeRegistered = "registered" TypeHeartbeat = "heartbeat" TypeHeartbeatAck = "heartbeat_ack" TypeError = "error" )
Message types for the control protocol.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ControlStream ¶
type ControlStream struct {
// contains filtered or unexported fields
}
ControlStream handles reading and writing control messages over a stream.
func NewControlStream ¶
func NewControlStream(stream io.ReadWriteCloser) *ControlStream
NewControlStream creates a new control stream handler.
func (*ControlStream) Close ¶
func (c *ControlStream) Close() error
Close closes the underlying stream.
func (*ControlStream) ReadMessage ¶
func (c *ControlStream) ReadMessage() (any, error)
ReadMessage reads and returns the next control message. Returns one of: *RegisterMessage, *RegisteredMessage, *HeartbeatMessage, *HeartbeatAckMessage, or *ErrorMessage.
func (*ControlStream) SendError ¶
func (c *ControlStream) SendError(message string) error
SendError sends an error message.
func (*ControlStream) SendHeartbeat ¶
func (c *ControlStream) SendHeartbeat() error
SendHeartbeat sends a heartbeat message.
func (*ControlStream) SendHeartbeatAck ¶
func (c *ControlStream) SendHeartbeatAck() error
SendHeartbeatAck sends a heartbeat acknowledgment message.
func (*ControlStream) SendRegister ¶
func (c *ControlStream) SendRegister(subdomain string) error
SendRegister sends a register message.
func (*ControlStream) SendRegistered ¶
func (c *ControlStream) SendRegistered(url, subdomain string) error
SendRegistered sends a registered message.
type ErrorMessage ¶
type ErrorMessage struct {
Type string `json:"type"` // always "error"
Message string `json:"message"`
}
ErrorMessage is sent in either direction to report an error.
func NewErrorMessage ¶
func NewErrorMessage(message string) *ErrorMessage
NewErrorMessage creates an error message.
type HeartbeatAckMessage ¶
type HeartbeatAckMessage struct {
Type string `json:"type"` // always "heartbeat_ack"
}
HeartbeatAckMessage is sent by the server as a keepalive pong.
func NewHeartbeatAckMessage ¶
func NewHeartbeatAckMessage() *HeartbeatAckMessage
NewHeartbeatAckMessage creates a heartbeat acknowledgment message.
type HeartbeatMessage ¶
type HeartbeatMessage struct {
Type string `json:"type"` // always "heartbeat"
}
HeartbeatMessage is sent by the client as a keepalive ping.
func NewHeartbeatMessage ¶
func NewHeartbeatMessage() *HeartbeatMessage
NewHeartbeatMessage creates a heartbeat message.
type RegisterMessage ¶
type RegisterMessage struct {
Type string `json:"type"` // always "register"
Subdomain string `json:"subdomain,omitempty"`
}
RegisterMessage is sent by the client to request a tunnel.
func NewRegisterMessage ¶
func NewRegisterMessage(subdomain string) *RegisterMessage
NewRegisterMessage creates a register message.
type RegisteredMessage ¶
type RegisteredMessage struct {
Type string `json:"type"` // always "registered"
URL string `json:"url"`
Subdomain string `json:"subdomain"`
}
RegisteredMessage is sent by the server to confirm tunnel registration.
func NewRegisteredMessage ¶
func NewRegisteredMessage(url, subdomain string) *RegisteredMessage
NewRegisteredMessage creates a registered message.