protocol

package module
v0.0.0-...-aa5265f Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2022 License: MIT Imports: 11 Imported by: 1

Documentation

Index

Constants

View Source
const (
	ErrInvalidRune        errStr = "invalid rune"
	ErrInvalidPacketType  errStr = "invalid packet type: %s"
	ErrInvalidPacketData  errStr = "invalid packet data: %s"
	ErrInvalidHandshake   errStr = "[%s] invalid handshake data"
	ErrHandshakeDecode    errStr = "[%s] handshake decode: %w"
	ErrHandshakeEncode    errStr = "[%s] handshake encode: %w"
	ErrPacketDecode       errStr = "[%s] packet decode: %w"
	ErrPacketEncode       errStr = "[%s] packet encode: %w"
	ErrPayloadDecode      errStr = "[%s] payload decode: %w"
	ErrPayloadEncode      errStr = "[%s] payload encode: %w"
	ErrBuffReaderRequired errStr = "please use a *bufio.Reader"
)
View Source
const RecordSeparator = 0x1e

Variables

View Source
var NewPacketDecoderV2 _packetDecoderV2 = func(r io.Reader) *PacketDecoderV2 { return &PacketDecoderV2{r: r} }
View Source
var NewPacketDecoderV3 _packetDecoderV3 = func(r io.Reader) *PacketDecoderV3 {
	return &PacketDecoderV3{PacketDecoderV2: &PacketDecoderV2{r: r}}
}
View Source
var NewPacketEncoderV2 _packetEncoderV2 = func(w io.Writer) *PacketEncoderV2 { return &PacketEncoderV2{w: w} }
View Source
var NewPacketEncoderV3 _packetEncoderV3 = func(w io.Writer) *PacketEncoderV3 {
	return &PacketEncoderV3{PacketEncoderV2: &PacketEncoderV2{w: w}}
}
View Source
var NewPayloadDecoderV2 _payloadDecoderV2 = func(r io.Reader) *PayloadDecoderV2 {
	return &PayloadDecoderV2{r: r}
}
View Source
var NewPayloadDecoderV3 _payloadDecoderV3 = func(r io.Reader) *PayloadDecoderV3 {
	return &PayloadDecoderV3{PayloadDecoderV2: &PayloadDecoderV2{r: r}}
}
View Source
var NewPayloadDecoderV4 _payloadDecoderV4 = func(r io.Reader) *PayloadDecoderV4 {
	dec := &PayloadDecoderV4{
		PayloadDecoderV3: &PayloadDecoderV3{
			PayloadDecoderV2: &PayloadDecoderV2{r: r},
		},
	}
	dec.buf = bufio.NewReader(dec.r)
	return dec
}
View Source
var NewPayloadEncoderV2 _payloadEncoderV2 = func(w io.Writer) *PayloadEncoderV2 {
	return &PayloadEncoderV2{w: w}
}
View Source
var NewPayloadEncoderV3 _payloadEncoderV3 = func(w io.Writer) *PayloadEncoderV3 {
	return &PayloadEncoderV3{PayloadEncoderV2: &PayloadEncoderV2{w: w}}
}
View Source
var NewPayloadEncoderV4 _payloadEncoderV4 = func(w io.Writer) *PayloadEncoderV4 {
	return &PayloadEncoderV4{PayloadEncoderV3: &PayloadEncoderV3{
		PayloadEncoderV2: &PayloadEncoderV2{w: w},
	}}
}

Functions

func Btol

func Btol(p []byte) uint64

Btol is bytes to len conversion. This []byte slice to a number []byte{4,5,5} => 455

func CopyRuneN

func CopyRuneN(dst io.Writer, src io.Reader, n int64) (written int64, err error)

CopyRuneN copies n runes (or until an error) from src to dst. It returns the number of runes copied and the earliest error encountered while copying. On return, written == n, if and only if err == nil.

func Ltob

func Ltob(u uint64) []byte

Ltob is len to bytes conversion. This converts a number to a []byte slice 455 => []byte{4,5,5}

Types

type Duration

type Duration time.Duration

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() (b []byte, err error)

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(b []byte) error

type HandshakeV2

type HandshakeV2 struct {
	SID         string   `json:"sid"`
	Upgrades    []string `json:"upgrades"`
	PingTimeout Duration `json:"pingTimeout"`
}

type HandshakeV3

type HandshakeV3 struct {
	HandshakeV2
	PingInterval Duration `json:"pingInterval"`
}

type Packet

type Packet struct {
	T PacketType  `json:"type"`
	D interface{} `json:"data"`
}

func (*Packet) PacketRef

func (pac *Packet) PacketRef() *Packet

func (Packet) PacketVal

func (pac Packet) PacketVal() Packet

type PacketDecoder

type PacketDecoder interface{ From(io.Reader) PacketReader }

type PacketDecoderV2

type PacketDecoderV2 struct {
	// contains filtered or unexported fields
}

func (*PacketDecoderV2) Decode

func (dec *PacketDecoderV2) Decode(packet *PacketV2) error

type PacketDecoderV3

type PacketDecoderV3 struct{ *PacketDecoderV2 }

func (*PacketDecoderV3) Decode

func (dec *PacketDecoderV3) Decode(packet *PacketV3) error

type PacketEncoder

type PacketEncoder interface{ To(io.Writer) PacketWriter }

type PacketEncoderV2

type PacketEncoderV2 struct {
	// contains filtered or unexported fields
}

func (*PacketEncoderV2) Encode

func (enc *PacketEncoderV2) Encode(packet PacketV2) (err error)

type PacketEncoderV3

type PacketEncoderV3 struct{ *PacketEncoderV2 }

func (*PacketEncoderV3) Encode

func (enc *PacketEncoderV3) Encode(packet PacketV3) (err error)

type PacketReader

type PacketReader interface{ ReadPacket(PacketRef) error }

type PacketRef

type PacketRef interface{ PacketRef() *Packet }

type PacketType

type PacketType byte
const (
	OpenPacket PacketType = iota
	ClosePacket
	PingPacket
	PongPacket
	MessagePacket
	UpgradePacket
	NoopPacket

	BinaryPacket PacketType = 255
)

func (PacketType) Bytes

func (pt PacketType) Bytes() []byte

func (*PacketType) Read

func (pt *PacketType) Read(p []byte) (n int, err error)

func (PacketType) String

func (pt PacketType) String() string

func (*PacketType) Write

func (pt *PacketType) Write(p []byte) (n int, err error)

type PacketV2

type PacketV2 struct{ Packet }

type PacketV3

type PacketV3 struct {
	Packet

	IsBinary bool
}

PacketV3 is defined: https://github.com/socketio/engine.io-protocol/tree/v3

type PacketV4

type PacketV4 = PacketV3

type PacketVal

type PacketVal interface{ PacketVal() Packet }

type PacketWriter

type PacketWriter interface{ WritePacket(PacketVal) error }

type Payload

type Payload []Packet

func (*Payload) PayloadRef

func (pay *Payload) PayloadRef() *Payload

func (Payload) PayloadVal

func (pay Payload) PayloadVal() Payload

type PayloadDecoder

type PayloadDecoder interface{ From(io.Reader) PayloadReader }

type PayloadDecoderV2

type PayloadDecoderV2 struct {
	// contains filtered or unexported fields
}

func (*PayloadDecoderV2) Decode

func (dec *PayloadDecoderV2) Decode(payV2 *PayloadV2) (err error)

type PayloadDecoderV3

type PayloadDecoderV3 struct {
	*PayloadDecoderV2

	IsXHR2 bool
}

func (*PayloadDecoderV3) Decode

func (dec *PayloadDecoderV3) Decode(payV3 *PayloadV3) (err error)

type PayloadDecoderV4

type PayloadDecoderV4 struct {
	*PayloadDecoderV3
	// contains filtered or unexported fields
}

func (*PayloadDecoderV4) Decode

func (dec *PayloadDecoderV4) Decode(payload *PayloadV4) (err error)

type PayloadEncoder

type PayloadEncoder interface{ To(io.Writer) PayloadWriter }

type PayloadEncoderV2

type PayloadEncoderV2 struct {
	// contains filtered or unexported fields
}

func (*PayloadEncoderV2) Encode

func (enc *PayloadEncoderV2) Encode(payload PayloadV2) error

type PayloadEncoderV3

type PayloadEncoderV3 struct {
	*PayloadEncoderV2

	IsXHR2 bool
}

func (*PayloadEncoderV3) Encode

func (enc *PayloadEncoderV3) Encode(payload PayloadV3) error

type PayloadEncoderV4

type PayloadEncoderV4 struct{ *PayloadEncoderV3 }

func (*PayloadEncoderV4) Encode

func (enc *PayloadEncoderV4) Encode(payload PayloadV4) error

type PayloadReader

type PayloadReader interface{ ReadPayload(PayloadRef) error }

type PayloadRef

type PayloadRef interface{ PayloadRef() *Payload }

type PayloadV2

type PayloadV2 []PacketV2

PayloadV2 is defined: https://github.com/socketio/engine.io-protocol/tree/v2

type PayloadV3

type PayloadV3 []PacketV3

PayloadV3 is defined: https://github.com/socketio/engine.io-protocol/tree/v3

type PayloadVal

type PayloadVal interface{ PayloadVal() Payload }

type PayloadWriter

type PayloadWriter interface{ WritePayload(PayloadVal) error }

Jump to

Keyboard shortcuts

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