mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 01:28:27 +08:00
issue: #38399 - Make a timetick-commit-based write ahead buffer at write side. - Add a switchable scanner at read side to transfer the state between catchup and tailing read Signed-off-by: chyezh <chyezh@outlook.com>
33 lines
985 B
Go
33 lines
985 B
Go
package message
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// HandleParam is the parameter for handler.
|
|
type HandleParam struct {
|
|
Ctx context.Context
|
|
Upstream <-chan ImmutableMessage
|
|
Message ImmutableMessage
|
|
}
|
|
|
|
// HandleResult is the result of handler.
|
|
type HandleResult struct {
|
|
Incoming ImmutableMessage // Not nil if upstream return new message.
|
|
MessageHandled bool // True if Message is handled successfully.
|
|
Error error // Error is context is canceled.
|
|
}
|
|
|
|
// Handler is used to handle message read from log.
|
|
type Handler interface {
|
|
// Handle is the callback for handling message.
|
|
// Return true if the message is consumed, false if the message is not consumed.
|
|
// Should return error if and only if ctx is done.
|
|
// !!! It's a bad implementation for compatibility for msgstream,
|
|
// will be removed in the future.
|
|
Handle(param HandleParam) HandleResult
|
|
|
|
// Close is called after all messages are handled or handling is interrupted.
|
|
Close()
|
|
}
|