mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 09:38:39 +08:00
issue: #33285 - add idAlloc interface - fix binary unsafe bug for message - fix service discovery lost when repeated address with different server id --------- Signed-off-by: chyezh <chyezh@outlook.com>
79 lines
2.6 KiB
Go
79 lines
2.6 KiB
Go
package message
|
|
|
|
var (
|
|
_ BasicMessage = (*messageImpl)(nil)
|
|
_ MutableMessage = (*messageImpl)(nil)
|
|
_ ImmutableMessage = (*immutableMessageImpl)(nil)
|
|
)
|
|
|
|
// BasicMessage is the basic interface of message.
|
|
type BasicMessage interface {
|
|
// MessageType returns the type of message.
|
|
MessageType() MessageType
|
|
|
|
// Version returns the message version.
|
|
// 0: old version before streamingnode.
|
|
// from 1: new version after streamingnode.
|
|
Version() Version
|
|
|
|
// Message payload.
|
|
Payload() []byte
|
|
|
|
// EstimateSize returns the estimated size of message.
|
|
EstimateSize() int
|
|
|
|
// Properties returns the message properties.
|
|
// Should be used with read-only promise.
|
|
Properties() RProperties
|
|
}
|
|
|
|
// MutableMessage is the mutable message interface.
|
|
// Message can be modified before it is persistent by wal.
|
|
type MutableMessage interface {
|
|
BasicMessage
|
|
|
|
// WithLastConfirmed sets the last confirmed message id of current message.
|
|
// !!! preserved for streaming system internal usage, don't call it outside of log system.
|
|
WithLastConfirmed(id MessageID) MutableMessage
|
|
|
|
// WithTimeTick sets the time tick of current message.
|
|
// !!! preserved for streaming system internal usage, don't call it outside of log system.
|
|
WithTimeTick(tt uint64) MutableMessage
|
|
|
|
// WithVChannel sets the virtual channel of current message.
|
|
// !!! preserved for streaming system internal usage, don't call it outside of log system.
|
|
WithVChannel(vChannel string) MutableMessage
|
|
|
|
// IntoImmutableMessage converts the mutable message to immutable message.
|
|
IntoImmutableMessage(msgID MessageID) ImmutableMessage
|
|
}
|
|
|
|
// ImmutableMessage is the read-only message interface.
|
|
// Once a message is persistent by wal or temporary generated by wal, it will be immutable.
|
|
type ImmutableMessage interface {
|
|
BasicMessage
|
|
|
|
// WALName returns the name of message related wal.
|
|
WALName() string
|
|
|
|
// VChannel returns the virtual channel of current message.
|
|
// Available only when the message's version greater than 0.
|
|
// Otherwise, it will panic.
|
|
VChannel() string
|
|
|
|
// TimeTick returns the time tick of current message.
|
|
// Available only when the message's version greater than 0.
|
|
// Otherwise, it will panic.
|
|
TimeTick() uint64
|
|
|
|
// LastConfirmedMessageID returns the last confirmed message id of current message.
|
|
// last confirmed message is always a timetick message.
|
|
// Read from this message id will guarantee the time tick greater than this message is consumed.
|
|
// Available only when the message's version greater than 0.
|
|
// Otherwise, it will panic.
|
|
LastConfirmedMessageID() MessageID
|
|
|
|
// MessageID returns the message id of current message.
|
|
MessageID() MessageID
|
|
}
|