You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
package protocol
|
|
|
|
import (
|
|
"github.com/seaweedfs/seaweedfs/weed/mq/kafka/consumer_offset"
|
|
)
|
|
|
|
// offsetStorageAdapter adapts consumer_offset.OffsetStorage to ConsumerOffsetStorage interface
|
|
type offsetStorageAdapter struct {
|
|
storage consumer_offset.OffsetStorage
|
|
}
|
|
|
|
// newOffsetStorageAdapter creates a new adapter
|
|
func newOffsetStorageAdapter(storage consumer_offset.OffsetStorage) ConsumerOffsetStorage {
|
|
return &offsetStorageAdapter{storage: storage}
|
|
}
|
|
|
|
func (a *offsetStorageAdapter) CommitOffset(group, topic string, partition int32, offset int64, metadata string) error {
|
|
return a.storage.CommitOffset(group, topic, partition, offset, metadata)
|
|
}
|
|
|
|
func (a *offsetStorageAdapter) FetchOffset(group, topic string, partition int32) (int64, string, error) {
|
|
return a.storage.FetchOffset(group, topic, partition)
|
|
}
|
|
|
|
func (a *offsetStorageAdapter) FetchAllOffsets(group string) (map[TopicPartition]OffsetMetadata, error) {
|
|
offsets, err := a.storage.FetchAllOffsets(group)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Convert from consumer_offset types to protocol types
|
|
result := make(map[TopicPartition]OffsetMetadata, len(offsets))
|
|
for tp, om := range offsets {
|
|
result[TopicPartition{Topic: tp.Topic, Partition: tp.Partition}] = OffsetMetadata{
|
|
Offset: om.Offset,
|
|
Metadata: om.Metadata,
|
|
}
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func (a *offsetStorageAdapter) DeleteGroup(group string) error {
|
|
return a.storage.DeleteGroup(group)
|
|
}
|
|
|
|
func (a *offsetStorageAdapter) Close() error {
|
|
return a.storage.Close()
|
|
}
|
|
|