mirror of
https://github.com/nadoo/glider.git
synced 2026-04-24 21:20:12 +08:00
37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
package session
|
|
|
|
import "encoding/binary"
|
|
|
|
// Command types for the anytls session protocol.
|
|
const (
|
|
cmdWaste byte = 0 // padding, discarded
|
|
cmdSYN byte = 1 // stream open
|
|
cmdPSH byte = 2 // data push
|
|
cmdFIN byte = 3 // stream close (EOF)
|
|
cmdSettings byte = 4 // client -> server settings
|
|
cmdAlert byte = 5 // alert message
|
|
cmdUpdatePaddingScheme byte = 6 // update padding scheme
|
|
cmdSYNACK byte = 7 // server -> client stream opened (v2)
|
|
cmdHeartRequest byte = 8 // keepalive request (v2)
|
|
cmdHeartResponse byte = 9 // keepalive response (v2)
|
|
cmdServerSettings byte = 10 // server -> client settings (v2)
|
|
)
|
|
|
|
const headerSize = 1 + 4 + 2 // cmd(1) + streamID(4) + length(2)
|
|
|
|
type frame struct {
|
|
cmd byte
|
|
sid uint32
|
|
data []byte
|
|
}
|
|
|
|
func newFrame(cmd byte, sid uint32) frame {
|
|
return frame{cmd: cmd, sid: sid}
|
|
}
|
|
|
|
type rawHeader [headerSize]byte
|
|
|
|
func (h rawHeader) Cmd() byte { return h[0] }
|
|
func (h rawHeader) StreamID() uint32 { return binary.BigEndian.Uint32(h[1:]) }
|
|
func (h rawHeader) Length() uint16 { return binary.BigEndian.Uint16(h[5:]) }
|