protocol

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package protocol defines the control protocol messages for otun.

Index

Constants

View Source
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, token 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"`
	Token     string `json:"token,omitempty"`
}

RegisterMessage is sent by the client to request a tunnel.

func NewRegisterMessage

func NewRegisterMessage(subdomain, token 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.

Jump to

Keyboard shortcuts

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