31 lines
572 B
Go
31 lines
572 B
Go
package hookdeliveryforwarder
|
|
|
|
import "time"
|
|
|
|
type Checkpointer interface {
|
|
GetOrCreate(hookID int64) (*State, error)
|
|
Update(hookID int64, pos *State) error
|
|
}
|
|
|
|
type InMemoryCheckpointer struct {
|
|
t time.Time
|
|
id int64
|
|
}
|
|
|
|
func (p *InMemoryCheckpointer) GetOrCreate(hookID int64) (*State, error) {
|
|
return &State{DeliveredAt: p.t}, nil
|
|
}
|
|
|
|
func (p *InMemoryCheckpointer) Update(hookID int64, pos *State) error {
|
|
p.t = pos.DeliveredAt
|
|
p.id = pos.ID
|
|
|
|
return nil
|
|
}
|
|
|
|
func NewInMemoryLogPositionProvider() Checkpointer {
|
|
return &InMemoryCheckpointer{
|
|
t: time.Now(),
|
|
}
|
|
}
|