Documentation
¶
Index ¶
- Constants
- func ByteLenOfCSPacketBody(header []byte) int
- func ByteLenOfCSPacketHeader() int
- func ByteLenOfSSPacketHeader() int
- func NewSpanID() [8]byte
- func NewTraceID() [16]byte
- type CSPacket
- type CSPacketHeader
- type SSPacket
- type SSPacketHeader
- func (h *SSPacketHeader) Deadline() (time.Time, bool)
- func (h *SSPacketHeader) DeadlineExceeded(nowMs int64) bool
- func (h *SSPacketHeader) From(b []byte) error
- func (h *SSPacketHeader) HasTrace() bool
- func (h *SSPacketHeader) SpanIDHex() string
- func (h *SSPacketHeader) To(b []byte) error
- func (h *SSPacketHeader) ToBytes() []byte
- func (h *SSPacketHeader) TraceIDHex() string
- type TraceContext
Constants ¶
const MaxByteLenOfCSPacketBody = 4 * 1024 * 1024
Variables ¶
This section is empty.
Functions ¶
func ByteLenOfCSPacketBody ¶
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
}
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.