sharedstruct

package
v1.3.4 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const MaxByteLenOfCSPacketBody = 4 * 1024 * 1024

Variables

This section is empty.

Functions

func ByteLenOfCSPacketBody

func ByteLenOfCSPacketBody(header []byte) int

func ByteLenOfCSPacketHeader

func ByteLenOfCSPacketHeader() int

func ByteLenOfSSPacketHeader

func ByteLenOfSSPacketHeader() int

ByteLenOfSSPacketHeader is the v2 wire size (54 legacy + 32 trace ext).

func NewSpanID added in v1.2.5

func NewSpanID() [8]byte

NewSpanID returns a random 8-byte span id.

func NewTraceID added in v1.2.5

func NewTraceID() [16]byte

NewTraceID returns a random 16-byte trace id (non-cryptographic; used for log correlation, not security).

Types

type CSPacket

type CSPacket struct {
	Header CSPacketHeader
	Body   []byte
}

type CSPacketHeader

type CSPacketHeader struct {
	Version  uint16
	PassCode uint16
	Seq      uint32

	Uid uint64

	AppVersion uint32
	Cmd        uint32

	BodyLen uint32
}

注意这里的排列是考虑了内存对齐的情况,调整时请注意。

func (*CSPacketHeader) From

func (h *CSPacketHeader) From(b []byte)

func (*CSPacketHeader) Size added in v1.0.4

func (h *CSPacketHeader) Size() int

func (*CSPacketHeader) To

func (h *CSPacketHeader) To(b []byte)

func (*CSPacketHeader) ToBytes

func (h *CSPacketHeader) ToBytes() []byte

type SSPacket

type SSPacket struct {
	Header SSPacketHeader
	Body   []byte
}

func (*SSPacket) SendToChan

func (h *SSPacket) SendToChan(ch chan *SSPacket, timeout time.Duration) bool

type SSPacketHeader

type SSPacketHeader struct {
	SrcBusID uint32
	DstBusID uint32

	SrcTransID uint32
	DstTransID uint32

	Uid uint64

	RouterID uint64

	Cmd  uint32
	Zone uint32

	Ip   uint32
	Flag uint32

	BodyLen uint32
	CmdSeq  uint16 // Request时+1,Response时不变。用以标识收到的Response是对应哪个发出的Request

	// TraceID/SpanID 跨进程透传调用链标识;全零表示未启用。
	// 响应包通过复制请求头自然继承 trace(见 router.SendMsgBack)。
	TraceID [16]byte
	SpanID  [8]byte
	// DeadlineUnixMs 是本次请求的绝对截止时间(Unix 毫秒),0 表示无截止。
	// 接收端可据此丢弃已超期的请求,实现级联超时。
	DeadlineUnixMs int64
}

经过测试,结构体是以8字节为单位对齐的,要注意一下

v2 起头部追加 trace/deadline 透传字段(TraceID/SpanID/DeadlineUnixMs)。 这是集群内部协议的破坏性变更:新旧节点头长不一致(86 vs 54), 需要整组同时发版,不支持滚动混布。

func (*SSPacketHeader) Deadline added in v1.2.5

func (h *SSPacketHeader) Deadline() (time.Time, bool)

Deadline converts DeadlineUnixMs into (time.Time, ok) form.

func (*SSPacketHeader) DeadlineExceeded added in v1.2.5

func (h *SSPacketHeader) DeadlineExceeded(nowMs int64) bool

DeadlineExceeded reports whether the request carried a deadline that has already passed at nowMs.

func (*SSPacketHeader) From

func (h *SSPacketHeader) From(b []byte) error

func (*SSPacketHeader) HasTrace added in v1.2.5

func (h *SSPacketHeader) HasTrace() bool

HasTrace reports whether the header carries a propagated trace id.

func (*SSPacketHeader) SpanIDHex added in v1.2.5

func (h *SSPacketHeader) SpanIDHex() string

SpanIDHex returns the lowercase hex form of the header's span id.

func (*SSPacketHeader) To

func (h *SSPacketHeader) To(b []byte) error

func (*SSPacketHeader) ToBytes

func (h *SSPacketHeader) ToBytes() []byte

func (*SSPacketHeader) TraceIDHex added in v1.2.5

func (h *SSPacketHeader) TraceIDHex() string

TraceIDHex returns the lowercase hex form of the header's trace id, or "" when no trace is carried.

type TraceContext added in v1.2.5

type TraceContext struct {
	TraceID        [16]byte
	SpanID         [8]byte
	DeadlineUnixMs int64 // 0 = no deadline
}

TraceContext carries the cross-process trace identity and deadline that a caller stamps into the SSPacketHeader of an outbound request.

func (TraceContext) ApplyTo added in v1.2.5

func (tc TraceContext) ApplyTo(h *SSPacketHeader)

ApplyTo stamps the trace context into a packet header.

Jump to

Keyboard shortcuts

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