mirror of https://github.com/milvus-io/milvus.git
206 lines
4.6 KiB
Go
206 lines
4.6 KiB
Go
package msgstream
|
|
|
|
import (
|
|
"github.com/gogo/protobuf/proto"
|
|
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
|
|
)
|
|
|
|
type MsgType = internalPb.MsgType
|
|
|
|
type TsMsg interface {
|
|
BeginTs() Timestamp
|
|
EndTs() Timestamp
|
|
Type() MsgType
|
|
HashKeys() []int32
|
|
Marshal(*TsMsg) ([]byte, error)
|
|
Unmarshal([]byte) (*TsMsg, error)
|
|
}
|
|
|
|
type BaseMsg struct {
|
|
BeginTimestamp Timestamp
|
|
EndTimestamp Timestamp
|
|
HashValues []int32
|
|
}
|
|
|
|
func (bm *BaseMsg) BeginTs() Timestamp {
|
|
return bm.BeginTimestamp
|
|
}
|
|
|
|
func (bm *BaseMsg) EndTs() Timestamp {
|
|
return bm.EndTimestamp
|
|
}
|
|
|
|
func (bm *BaseMsg) HashKeys() []int32 {
|
|
return bm.HashValues
|
|
}
|
|
|
|
/////////////////////////////////////////Insert//////////////////////////////////////////
|
|
type InsertMsg struct {
|
|
BaseMsg
|
|
internalPb.InsertRequest
|
|
}
|
|
|
|
func (it *InsertMsg) Type() MsgType {
|
|
return it.MsgType
|
|
}
|
|
|
|
func (it *InsertMsg) Marshal(input *TsMsg) ([]byte, error) {
|
|
insertMsg := (*input).(*InsertMsg)
|
|
insertRequest := &insertMsg.InsertRequest
|
|
mb, err := proto.Marshal(insertRequest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mb, nil
|
|
}
|
|
|
|
func (it *InsertMsg) Unmarshal(input []byte) (*TsMsg, error) {
|
|
insertRequest := internalPb.InsertRequest{}
|
|
err := proto.Unmarshal(input, &insertRequest)
|
|
insertMsg := &InsertMsg{InsertRequest: insertRequest}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tsMsg TsMsg = insertMsg
|
|
return &tsMsg, nil
|
|
}
|
|
|
|
/////////////////////////////////////////Delete//////////////////////////////////////////
|
|
type DeleteMsg struct {
|
|
BaseMsg
|
|
internalPb.DeleteRequest
|
|
}
|
|
|
|
func (dt *DeleteMsg) Type() MsgType {
|
|
return dt.MsgType
|
|
}
|
|
|
|
func (dt *DeleteMsg) Marshal(input *TsMsg) ([]byte, error) {
|
|
deleteTask := (*input).(*DeleteMsg)
|
|
deleteRequest := &deleteTask.DeleteRequest
|
|
mb, err := proto.Marshal(deleteRequest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mb, nil
|
|
}
|
|
|
|
func (dt *DeleteMsg) Unmarshal(input []byte) (*TsMsg, error) {
|
|
deleteRequest := internalPb.DeleteRequest{}
|
|
err := proto.Unmarshal(input, &deleteRequest)
|
|
deleteMsg := &DeleteMsg{DeleteRequest: deleteRequest}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tsMsg TsMsg = deleteMsg
|
|
return &tsMsg, nil
|
|
}
|
|
|
|
/////////////////////////////////////////Search//////////////////////////////////////////
|
|
type SearchMsg struct {
|
|
BaseMsg
|
|
internalPb.SearchRequest
|
|
}
|
|
|
|
func (st *SearchMsg) Type() MsgType {
|
|
return st.MsgType
|
|
}
|
|
|
|
func (st *SearchMsg) Marshal(input *TsMsg) ([]byte, error) {
|
|
searchTask := (*input).(*SearchMsg)
|
|
searchRequest := &searchTask.SearchRequest
|
|
mb, err := proto.Marshal(searchRequest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mb, nil
|
|
}
|
|
|
|
func (st *SearchMsg) Unmarshal(input []byte) (*TsMsg, error) {
|
|
searchRequest := internalPb.SearchRequest{}
|
|
err := proto.Unmarshal(input, &searchRequest)
|
|
searchMsg := &SearchMsg{SearchRequest: searchRequest}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tsMsg TsMsg = searchMsg
|
|
return &tsMsg, nil
|
|
}
|
|
|
|
/////////////////////////////////////////SearchResult//////////////////////////////////////////
|
|
type SearchResultMsg struct {
|
|
BaseMsg
|
|
internalPb.SearchResult
|
|
}
|
|
|
|
func (srt *SearchResultMsg) Type() MsgType {
|
|
return srt.MsgType
|
|
}
|
|
|
|
func (srt *SearchResultMsg) Marshal(input *TsMsg) ([]byte, error) {
|
|
searchResultTask := (*input).(*SearchResultMsg)
|
|
searchResultRequest := &searchResultTask.SearchResult
|
|
mb, err := proto.Marshal(searchResultRequest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mb, nil
|
|
}
|
|
|
|
func (srt *SearchResultMsg) Unmarshal(input []byte) (*TsMsg, error) {
|
|
searchResultRequest := internalPb.SearchResult{}
|
|
err := proto.Unmarshal(input, &searchResultRequest)
|
|
searchResultMsg := &SearchResultMsg{SearchResult: searchResultRequest}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tsMsg TsMsg = searchResultMsg
|
|
return &tsMsg, nil
|
|
}
|
|
|
|
/////////////////////////////////////////TimeTick//////////////////////////////////////////
|
|
type TimeTickMsg struct {
|
|
BaseMsg
|
|
internalPb.TimeTickMsg
|
|
}
|
|
|
|
func (tst *TimeTickMsg) Type() MsgType {
|
|
return tst.MsgType
|
|
}
|
|
|
|
func (tst *TimeTickMsg) Marshal(input *TsMsg) ([]byte, error) {
|
|
timeTickTask := (*input).(*TimeTickMsg)
|
|
timeTick := &timeTickTask.TimeTickMsg
|
|
mb, err := proto.Marshal(timeTick)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mb, nil
|
|
}
|
|
|
|
func (tst *TimeTickMsg) Unmarshal(input []byte) (*TsMsg, error) {
|
|
timeTickMsg := internalPb.TimeTickMsg{}
|
|
err := proto.Unmarshal(input, &timeTickMsg)
|
|
timeTick := &TimeTickMsg{TimeTickMsg: timeTickMsg}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tsMsg TsMsg = timeTick
|
|
return &tsMsg, nil
|
|
}
|
|
|
|
///////////////////////////////////////////Key2Seg//////////////////////////////////////////
|
|
//type Key2SegMsg struct {
|
|
// BaseMsg
|
|
// internalPb.Key2SegMsg
|
|
//}
|
|
//
|
|
//func (k2st *Key2SegMsg) Type() MsgType {
|
|
// return
|
|
//}
|