protocol

package
v0.0.0-...-17d74a4 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2021 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrorCodeNoMessage          = 100
	ErrorMsgNoMessage           = "no message"
	ErrorCodeInvalidMessageFile = 101
	ErrorMsgInvalidMessageFile  = "invalid message file content"
	ErrCodeQueueLimit           = 102
	ErrorMsgQueueLimit          = "queue capacity is limit"
	ErrCodeMsgSizeTooLarge      = 103
	ErrMsgMsgSizeTooLarge       = "message size too large"
)

Functions

This section is empty.

Types

type Error

type Error struct {
	Code    int
	Message string
	Tm      time.Time
}

func NewError

func NewError(code int, msg string) *Error

func (*Error) Error

func (m *Error) Error() string

type MessageConsumer

type MessageConsumer struct {
	Num  uint64
	Size uint32 //等于Data和Crc的长度之和
	Data []byte
	Crc  uint32
}

消费的消息格式

func MessageStorageToMessageConsumer

func MessageStorageToMessageConsumer(msg *MessageStorage) *MessageConsumer

type MessagePublisher

type MessagePublisher struct {
	Num       uint64
	Size      uint32 //等于后续字段长度之和
	TopicSize uint16
	Topic     []byte
	Data      []byte
	Crc       uint32
}

发布的消息格式

type MessageQuery

type MessageQuery struct {
	Topic      string
	MessagePos uint64
	Limit      int
	Result     chan *MessageQueryResult //查询结果
}

对存储引擎的查询请求抽象

type MessageQueryResult

type MessageQueryResult struct {
	Message *MessageConsumer
	Error   error
}

type MessageStorage

type MessageStorage struct {
	Num      uint64
	Size     uint32 //等于Data和crc的长度之和
	Data     []byte
	Crc      uint32
	TailSize uint32 //等于size, 放在每一条消息记录的末尾,方便对消息文件进行从尾部开始的回溯
}

数据文件单条记录,数据文件由n条MessageStorage组成,其中整数字段均为BigEndian

func MessagePublisherToMessageStorage

func MessagePublisherToMessageStorage(msg *MessagePublisher) *MessageStorage

func NewMessageStorage

func NewMessageStorage(data []byte, messageNum uint64) *MessageStorage

type Storage

type Storage interface {
	SaveMessage(msg *MessageStorage) error
	QueryMessage(query *MessageQuery)
}

Jump to

Keyboard shortcuts

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