Documentation
¶
Index ¶
- Variables
- func ReadPackAuto(r io.Reader, mp Mempool, auto func(packType PackType) (Pack, error)) (Pack, PackType, []byte, []byte, error)
- func UvarintSize(x uint64) (n int)
- func WriteAll(w io.Writer, buf []byte) (n int, err error)
- func WritePack(writer io.Writer, pack PackMarshalTo, data []byte) error
- func WritePack2Bytes(m Mempool, pack PackMarshalTo, data []byte) ([]byte, error)
- type Hello
- func (*Hello) Descriptor() ([]byte, []int)
- func (this *Hello) Equal(that interface{}) bool
- func (m *Hello) GetFeature() [][]byte
- func (m *Hello) GetLibraryVersion() uint64
- func (p *Hello) GetPackType() PackType
- func (m *Hello) GetProtocolVersion() uint64
- func (p *Hello) GetStreamId() uint64
- func (this *Hello) GoString() string
- func (m *Hello) Marshal() (dAtA []byte, err error)
- func (m *Hello) MarshalTo(dAtA []byte) (int, error)
- func (m *Hello) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*Hello) ProtoMessage()
- func (m *Hello) Reset()
- func (m *Hello) Size() (n int)
- func (this *Hello) String() string
- func (m *Hello) Unmarshal(dAtA []byte) error
- func (m *Hello) XXX_DiscardUnknown()
- func (m *Hello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Hello) XXX_Merge(src proto.Message)
- func (m *Hello) XXX_Size() int
- func (m *Hello) XXX_Unmarshal(b []byte) error
- type HelloR
- func (*HelloR) Descriptor() ([]byte, []int)
- func (this *HelloR) Equal(that interface{}) bool
- func (m *HelloR) GetDelay() uint64
- func (m *HelloR) GetFeature() [][]byte
- func (m *HelloR) GetLibraryVersion() uint64
- func (m *HelloR) GetMessage() string
- func (p *HelloR) GetPackType() PackType
- func (m *HelloR) GetProtocolVersion() uint64
- func (m *HelloR) GetStatus() uint64
- func (p *HelloR) GetStreamId() uint64
- func (this *HelloR) GoString() string
- func (m *HelloR) Marshal() (dAtA []byte, err error)
- func (m *HelloR) MarshalTo(dAtA []byte) (int, error)
- func (m *HelloR) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*HelloR) ProtoMessage()
- func (m *HelloR) Reset()
- func (m *HelloR) Size() (n int)
- func (this *HelloR) String() string
- func (m *HelloR) Unmarshal(dAtA []byte) error
- func (m *HelloR) XXX_DiscardUnknown()
- func (m *HelloR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *HelloR) XXX_Merge(src proto.Message)
- func (m *HelloR) XXX_Size() int
- func (m *HelloR) XXX_Unmarshal(b []byte) error
- type HelloRStatus
- type Mempool
- type Pack
- type PackMarshalTo
- type PackType
- type PackUnmarshal
- type StreamClose
- func (*StreamClose) Descriptor() ([]byte, []int)
- func (this *StreamClose) Equal(that interface{}) bool
- func (m *StreamClose) GetId() uint64
- func (p *StreamClose) GetPackType() PackType
- func (p *StreamClose) GetStreamId() uint64
- func (this *StreamClose) GoString() string
- func (m *StreamClose) Marshal() (dAtA []byte, err error)
- func (m *StreamClose) MarshalTo(dAtA []byte) (int, error)
- func (m *StreamClose) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*StreamClose) ProtoMessage()
- func (m *StreamClose) Reset()
- func (m *StreamClose) Size() (n int)
- func (this *StreamClose) String() string
- func (m *StreamClose) Unmarshal(dAtA []byte) error
- func (m *StreamClose) XXX_DiscardUnknown()
- func (m *StreamClose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *StreamClose) XXX_Merge(src proto.Message)
- func (m *StreamClose) XXX_Size() int
- func (m *StreamClose) XXX_Unmarshal(b []byte) error
- type StreamData
- func (*StreamData) Descriptor() ([]byte, []int)
- func (this *StreamData) Equal(that interface{}) bool
- func (m *StreamData) GetId() uint64
- func (p *StreamData) GetPackType() PackType
- func (p *StreamData) GetStreamId() uint64
- func (this *StreamData) GoString() string
- func (m *StreamData) Marshal() (dAtA []byte, err error)
- func (m *StreamData) MarshalTo(dAtA []byte) (int, error)
- func (m *StreamData) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*StreamData) ProtoMessage()
- func (m *StreamData) Reset()
- func (m *StreamData) Size() (n int)
- func (this *StreamData) String() string
- func (m *StreamData) Unmarshal(dAtA []byte) error
- func (m *StreamData) XXX_DiscardUnknown()
- func (m *StreamData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *StreamData) XXX_Merge(src proto.Message)
- func (m *StreamData) XXX_Size() int
- func (m *StreamData) XXX_Unmarshal(b []byte) error
- type StreamDown
- func (*StreamDown) Descriptor() ([]byte, []int)
- func (this *StreamDown) Equal(that interface{}) bool
- func (p *StreamDown) GetPackType() PackType
- func (p *StreamDown) GetStreamId() uint64
- func (this *StreamDown) GoString() string
- func (m *StreamDown) Marshal() (dAtA []byte, err error)
- func (m *StreamDown) MarshalTo(dAtA []byte) (int, error)
- func (m *StreamDown) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*StreamDown) ProtoMessage()
- func (m *StreamDown) Reset()
- func (m *StreamDown) Size() (n int)
- func (this *StreamDown) String() string
- func (m *StreamDown) Unmarshal(dAtA []byte) error
- func (m *StreamDown) XXX_DiscardUnknown()
- func (m *StreamDown) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *StreamDown) XXX_Merge(src proto.Message)
- func (m *StreamDown) XXX_Size() int
- func (m *StreamDown) XXX_Unmarshal(b []byte) error
- type StreamNew
- func (*StreamNew) Descriptor() ([]byte, []int)
- func (this *StreamNew) Equal(that interface{}) bool
- func (m *StreamNew) GetId() uint64
- func (p *StreamNew) GetPackType() PackType
- func (p *StreamNew) GetStreamId() uint64
- func (this *StreamNew) GoString() string
- func (m *StreamNew) Marshal() (dAtA []byte, err error)
- func (m *StreamNew) MarshalTo(dAtA []byte) (int, error)
- func (m *StreamNew) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*StreamNew) ProtoMessage()
- func (m *StreamNew) Reset()
- func (m *StreamNew) Size() (n int)
- func (this *StreamNew) String() string
- func (m *StreamNew) Unmarshal(dAtA []byte) error
- func (m *StreamNew) XXX_DiscardUnknown()
- func (m *StreamNew) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *StreamNew) XXX_Merge(src proto.Message)
- func (m *StreamNew) XXX_Size() int
- func (m *StreamNew) XXX_Unmarshal(b []byte) error
- type StreamRst
- func (*StreamRst) Descriptor() ([]byte, []int)
- func (this *StreamRst) Equal(that interface{}) bool
- func (m *StreamRst) GetId() uint64
- func (p *StreamRst) GetPackType() PackType
- func (p *StreamRst) GetStreamId() uint64
- func (this *StreamRst) GoString() string
- func (m *StreamRst) Marshal() (dAtA []byte, err error)
- func (m *StreamRst) MarshalTo(dAtA []byte) (int, error)
- func (m *StreamRst) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*StreamRst) ProtoMessage()
- func (m *StreamRst) Reset()
- func (m *StreamRst) Size() (n int)
- func (this *StreamRst) String() string
- func (m *StreamRst) Unmarshal(dAtA []byte) error
- func (m *StreamRst) XXX_DiscardUnknown()
- func (m *StreamRst) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *StreamRst) XXX_Merge(src proto.Message)
- func (m *StreamRst) XXX_Size() int
- func (m *StreamRst) XXX_Unmarshal(b []byte) error
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrInvalidLengthProtocol = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowProtocol = fmt.Errorf("proto: integer overflow") )
View Source
var DefaultMemPool = new(memPool)
View Source
var HelloRStatus_name = map[int32]string{
0: "HelloRStatusOk",
1: "HelloRStatusTimeout",
256: "HelloRStatusConnectionNotAllowedByRuleset",
}
View Source
var HelloRStatus_value = map[string]int32{
"HelloRStatusOk": 0,
"HelloRStatusTimeout": 1,
"HelloRStatusConnectionNotAllowedByRuleset": 256,
}
View Source
var IVersion uint64 = 0x0000000000000001
协议版本
View Source
var MagicClient = []byte("gomux-c")
协议魔数
View Source
var MagicServer = []byte("gomux-s")
View Source
var PackType_name = map[int32]string{
0: "UNIVERSAL",
1: "PackTypeHello",
2: "PackTypeHelloR",
16: "PackTypeStreamNew",
17: "PackTypeStreamData",
18: "PackTypeStreamDown",
19: "PackTypeStreamClose",
20: "PackTypeStreamRst",
22: "PackTypeStreamWindowsSet",
23: "PackTypeStreamWindowsSetR",
}
View Source
var PackType_value = map[string]int32{
"UNIVERSAL": 0,
"PackTypeHello": 1,
"PackTypeHelloR": 2,
"PackTypeStreamNew": 16,
"PackTypeStreamData": 17,
"PackTypeStreamDown": 18,
"PackTypeStreamClose": 19,
"PackTypeStreamRst": 20,
"PackTypeStreamWindowsSet": 22,
"PackTypeStreamWindowsSetR": 23,
}
Functions ¶
func ReadPackAuto ¶
func ReadPackAuto(r io.Reader, mp Mempool, auto func(packType PackType) (Pack, error)) (Pack, PackType, []byte, []byte, error)
读取并解析包 返回值:
pack 包 PackType 包类型 []byte 包全部数据,即从 Mempool 申请的空间已使用的部分。内存使用完毕时,可以使用 mp.Put 释放回内存池 []byte 附加数据 error
func WritePack2Bytes ¶
func WritePack2Bytes(m Mempool, pack PackMarshalTo, data []byte) ([]byte, error)
Types ¶
type Hello ¶
type Hello struct { // 协议版本 ProtocolVersion uint64 `protobuf:"varint,1,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` // 库的内部版本 LibraryVersion uint64 `protobuf:"varint,2,opt,name=library_version,json=libraryVersion,proto3" json:"library_version,omitempty"` // 支持的特征列表 // 一般约定是,排前面的优先支持,即当多个特征互相冲突时,协商时优先使用排行靠前的特征。 // 每个 bytes,最前面为 uvarint 值,表示特征id,后面为具体详细数据 Feature [][]byte `protobuf:"bytes,3,rep,name=feature,proto3" json:"feature,omitempty"` }
客户端发送第一次握手 让客户端优先发送第一个包的目的是为了方便后期扩展
func (*Hello) Descriptor ¶
func (*Hello) GetFeature ¶
func (*Hello) GetLibraryVersion ¶
func (*Hello) GetPackType ¶
func (*Hello) GetProtocolVersion ¶
func (*Hello) GetStreamId ¶
func (*Hello) ProtoMessage ¶
func (*Hello) ProtoMessage()
func (*Hello) XXX_DiscardUnknown ¶
func (m *Hello) XXX_DiscardUnknown()
func (*Hello) XXX_Marshal ¶
func (*Hello) XXX_Unmarshal ¶
type HelloR ¶
type HelloR struct { // 协议版本 ProtocolVersion uint64 `protobuf:"varint,1,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` // 库的内部版本 LibraryVersion uint64 `protobuf:"varint,2,opt,name=library_version,json=libraryVersion,proto3" json:"library_version,omitempty"` // 状态 Status uint64 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` // 延迟,当失败等错误时,客户端需要在 delay 秒后才能重试 Delay uint64 `protobuf:"varint,4,opt,name=delay,proto3" json:"delay,omitempty"` //错误消息 Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // 服务端返回最终支持的特征列表 Feature [][]byte `protobuf:"bytes,6,rep,name=feature,proto3" json:"feature,omitempty"` }
func (*HelloR) Descriptor ¶
func (*HelloR) GetFeature ¶
func (*HelloR) GetLibraryVersion ¶
func (*HelloR) GetMessage ¶
func (*HelloR) GetPackType ¶
func (*HelloR) GetProtocolVersion ¶
func (*HelloR) GetStreamId ¶
func (*HelloR) MarshalToSizedBuffer ¶
func (*HelloR) ProtoMessage ¶
func (*HelloR) ProtoMessage()
func (*HelloR) XXX_DiscardUnknown ¶
func (m *HelloR) XXX_DiscardUnknown()
func (*HelloR) XXX_Marshal ¶
func (*HelloR) XXX_Unmarshal ¶
type HelloRStatus ¶
type HelloRStatus int32
status 还是分开吧,如果统一空间浪费比较严重。
const ( HelloRStatusOk HelloRStatus = 0 HelloRStatusTimeout HelloRStatus = 1 HelloRStatusConnectionNotAllowedByRuleset HelloRStatus = 256 )
func (HelloRStatus) EnumDescriptor ¶
func (HelloRStatus) EnumDescriptor() ([]byte, []int)
func (HelloRStatus) String ¶
func (x HelloRStatus) String() string
type Pack ¶
type Pack interface { PackMarshalTo PackUnmarshal }
type PackMarshalTo ¶
type PackType ¶
type PackType int32
const ( UNIVERSAL PackType = 0 PackTypeHello PackType = 1 PackTypeHelloR PackType = 2 PackTypeStreamNew PackType = 16 // 流数据包 // 内部还可能会包含接收缓冲区剩余空间 PackTypeStreamData PackType = 17 PackTypeStreamDown PackType = 18 PackTypeStreamClose PackType = 19 PackTypeStreamRst PackType = 20 // 修改缓冲区大小 // 包内同时包含接收、发送双方的缓冲区字段 // 虽然流的双方都可以发送这个包 // 但是只有接收方发送的有效,另一方发送的只是建议 // 扩大缓冲区可以立刻生效 // 但是如果是缩小接收缓冲区,必须等到收到 SetR 后才能实际缩小接收缓冲区 PackTypeStreamWindowsSet PackType = 22 PackTypeStreamWindowsSetR PackType = 23 )
func ReadPack ¶
读取并解析包 返回值:
PackType 包类型 []byte 包全部数据,即从 Mempool 申请的空间已使用的部分。内存使用完毕时,可以使用 mp.Put 释放回内存池 []byte 序列化后的包数据 []byte 附加数据 error
func ReadPackBuf ¶
读取包到缓冲区 返回值:
PackType 包类型 []byte 包全部数据,即从 Mempool 申请的空间已使用的部分。内存使用完毕时,可以使用 mp.Put 释放回内存池 []byte 序列化后的包数据 []byte 附加数据 error
func (PackType) EnumDescriptor ¶
type PackUnmarshal ¶
type StreamClose ¶
type StreamClose struct {
Id uint64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
}
func (*StreamClose) Descriptor ¶
func (*StreamClose) Descriptor() ([]byte, []int)
func (*StreamClose) Equal ¶
func (this *StreamClose) Equal(that interface{}) bool
func (*StreamClose) GetId ¶
func (m *StreamClose) GetId() uint64
func (*StreamClose) GetPackType ¶
func (p *StreamClose) GetPackType() PackType
func (*StreamClose) GetStreamId ¶
func (p *StreamClose) GetStreamId() uint64
func (*StreamClose) GoString ¶
func (this *StreamClose) GoString() string
func (*StreamClose) Marshal ¶
func (m *StreamClose) Marshal() (dAtA []byte, err error)
func (*StreamClose) MarshalToSizedBuffer ¶
func (m *StreamClose) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*StreamClose) ProtoMessage ¶
func (*StreamClose) ProtoMessage()
func (*StreamClose) Reset ¶
func (m *StreamClose) Reset()
func (*StreamClose) Size ¶
func (m *StreamClose) Size() (n int)
func (*StreamClose) String ¶
func (this *StreamClose) String() string
func (*StreamClose) Unmarshal ¶
func (m *StreamClose) Unmarshal(dAtA []byte) error
func (*StreamClose) XXX_DiscardUnknown ¶
func (m *StreamClose) XXX_DiscardUnknown()
func (*StreamClose) XXX_Marshal ¶
func (m *StreamClose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*StreamClose) XXX_Merge ¶
func (m *StreamClose) XXX_Merge(src proto.Message)
func (*StreamClose) XXX_Size ¶
func (m *StreamClose) XXX_Size() int
func (*StreamClose) XXX_Unmarshal ¶
func (m *StreamClose) XXX_Unmarshal(b []byte) error
type StreamData ¶
type StreamData struct {
Id uint64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
}
func (*StreamData) Descriptor ¶
func (*StreamData) Descriptor() ([]byte, []int)
func (*StreamData) Equal ¶
func (this *StreamData) Equal(that interface{}) bool
func (*StreamData) GetId ¶
func (m *StreamData) GetId() uint64
func (*StreamData) GetPackType ¶
func (p *StreamData) GetPackType() PackType
func (*StreamData) GetStreamId ¶
func (p *StreamData) GetStreamId() uint64
func (*StreamData) GoString ¶
func (this *StreamData) GoString() string
func (*StreamData) Marshal ¶
func (m *StreamData) Marshal() (dAtA []byte, err error)
func (*StreamData) MarshalToSizedBuffer ¶
func (m *StreamData) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*StreamData) ProtoMessage ¶
func (*StreamData) ProtoMessage()
func (*StreamData) Reset ¶
func (m *StreamData) Reset()
func (*StreamData) Size ¶
func (m *StreamData) Size() (n int)
func (*StreamData) String ¶
func (this *StreamData) String() string
func (*StreamData) Unmarshal ¶
func (m *StreamData) Unmarshal(dAtA []byte) error
func (*StreamData) XXX_DiscardUnknown ¶
func (m *StreamData) XXX_DiscardUnknown()
func (*StreamData) XXX_Marshal ¶
func (m *StreamData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*StreamData) XXX_Merge ¶
func (m *StreamData) XXX_Merge(src proto.Message)
func (*StreamData) XXX_Size ¶
func (m *StreamData) XXX_Size() int
func (*StreamData) XXX_Unmarshal ¶
func (m *StreamData) XXX_Unmarshal(b []byte) error
type StreamDown ¶
type StreamDown struct { }
func (*StreamDown) Descriptor ¶
func (*StreamDown) Descriptor() ([]byte, []int)
func (*StreamDown) Equal ¶
func (this *StreamDown) Equal(that interface{}) bool
func (*StreamDown) GetPackType ¶
func (p *StreamDown) GetPackType() PackType
func (*StreamDown) GetStreamId ¶
func (p *StreamDown) GetStreamId() uint64
func (*StreamDown) GoString ¶
func (this *StreamDown) GoString() string
func (*StreamDown) Marshal ¶
func (m *StreamDown) Marshal() (dAtA []byte, err error)
func (*StreamDown) MarshalToSizedBuffer ¶
func (m *StreamDown) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*StreamDown) ProtoMessage ¶
func (*StreamDown) ProtoMessage()
func (*StreamDown) Reset ¶
func (m *StreamDown) Reset()
func (*StreamDown) Size ¶
func (m *StreamDown) Size() (n int)
func (*StreamDown) String ¶
func (this *StreamDown) String() string
func (*StreamDown) Unmarshal ¶
func (m *StreamDown) Unmarshal(dAtA []byte) error
func (*StreamDown) XXX_DiscardUnknown ¶
func (m *StreamDown) XXX_DiscardUnknown()
func (*StreamDown) XXX_Marshal ¶
func (m *StreamDown) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*StreamDown) XXX_Merge ¶
func (m *StreamDown) XXX_Merge(src proto.Message)
func (*StreamDown) XXX_Size ¶
func (m *StreamDown) XXX_Size() int
func (*StreamDown) XXX_Unmarshal ¶
func (m *StreamDown) XXX_Unmarshal(b []byte) error
type StreamNew ¶
type StreamNew struct { // 客户端为单数、服务端为双数 // 0 保留 Id uint64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` }
func (*StreamNew) Descriptor ¶
func (*StreamNew) GetPackType ¶
func (*StreamNew) GetStreamId ¶
func (*StreamNew) MarshalToSizedBuffer ¶
func (*StreamNew) ProtoMessage ¶
func (*StreamNew) ProtoMessage()
func (*StreamNew) XXX_DiscardUnknown ¶
func (m *StreamNew) XXX_DiscardUnknown()
func (*StreamNew) XXX_Marshal ¶
func (*StreamNew) XXX_Unmarshal ¶
type StreamRst ¶
type StreamRst struct {
Id uint64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
}
func (*StreamRst) Descriptor ¶
func (*StreamRst) GetPackType ¶
func (*StreamRst) GetStreamId ¶
func (*StreamRst) MarshalToSizedBuffer ¶
func (*StreamRst) ProtoMessage ¶
func (*StreamRst) ProtoMessage()
func (*StreamRst) XXX_DiscardUnknown ¶
func (m *StreamRst) XXX_DiscardUnknown()
func (*StreamRst) XXX_Marshal ¶
func (*StreamRst) XXX_Unmarshal ¶
Click to show internal directories.
Click to hide internal directories.