milvus/pkg/streaming/util/message/message_id.go
Zhen Ye 99dff06391
enhance: using streaming service in insert/upsert/flush/delete/querynode (#35406)
issue: #33285

- using streaming service in insert/upsert/flush/delete/querynode
- fixup flusher bugs and refactor the flush operation
- enable streaming service for dml and ddl
- pass the e2e when enabling streaming service
- pass the integration tst when enabling streaming service

---------

Signed-off-by: chyezh <chyezh@outlook.com>
Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
2024-08-29 10:03:08 +08:00

56 lines
1.4 KiB
Go

package message
import (
"github.com/cockroachdb/errors"
"github.com/milvus-io/milvus/pkg/util/typeutil"
)
var (
// messageIDUnmarshaler is the map for message id unmarshaler.
messageIDUnmarshaler typeutil.ConcurrentMap[string, MessageIDUnmarshaler]
ErrInvalidMessageID = errors.New("invalid message id")
)
// RegisterMessageIDUnmsarshaler register the message id unmarshaler.
func RegisterMessageIDUnmsarshaler(name string, unmarshaler MessageIDUnmarshaler) {
_, loaded := messageIDUnmarshaler.GetOrInsert(name, unmarshaler)
if loaded {
panic("MessageID Unmarshaler already registered: " + name)
}
}
// MessageIDUnmarshaler is the unmarshaler for message id.
type MessageIDUnmarshaler = func(b string) (MessageID, error)
// UnmsarshalMessageID unmarshal the message id.
func UnmarshalMessageID(name string, b string) (MessageID, error) {
unmarshaler, ok := messageIDUnmarshaler.Get(name)
if !ok {
panic("MessageID Unmarshaler not registered: " + name)
}
return unmarshaler(b)
}
// MessageID is the interface for message id.
type MessageID interface {
// WALName returns the name of message id related wal.
WALName() string
// LT less than.
LT(MessageID) bool
// LTE less than or equal to.
LTE(MessageID) bool
// EQ Equal to.
EQ(MessageID) bool
// Marshal marshal the message id.
Marshal() string
// Convert into string for logging.
String() string
}