12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package topic
- import (
- "fmt"
- "github.com/seaweedfs/seaweedfs/weed/filer"
- "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb"
- "time"
- )
- type Namespace string
- type Topic struct {
- Namespace Namespace
- Name string
- }
- func NewTopic(namespace Namespace, name string) Topic {
- return Topic{
- Namespace: namespace,
- Name: name,
- }
- }
- func FromPbTopic(topic *mq_pb.Topic) Topic {
- return Topic{
- Namespace: Namespace(topic.Namespace),
- Name: topic.Name,
- }
- }
- func (tp Topic) String() string {
- return fmt.Sprintf("%s.%s", tp.Namespace, tp.Name)
- }
- type Segment struct {
- Topic Topic
- Id int32
- Partition Partition
- LastModified time.Time
- }
- func FromPbSegment(segment *mq_pb.Segment) *Segment {
- return &Segment{
- Topic: Topic{
- Namespace: Namespace(segment.Namespace),
- Name: segment.Topic,
- },
- Id: segment.Id,
- Partition: Partition{
- RangeStart: segment.Partition.RangeStart,
- RangeStop: segment.Partition.RangeStop,
- RingSize: segment.Partition.RingSize,
- },
- }
- }
- func (segment *Segment) ToPbSegment() *mq_pb.Segment {
- return &mq_pb.Segment{
- Namespace: string(segment.Topic.Namespace),
- Topic: segment.Topic.Name,
- Id: segment.Id,
- Partition: &mq_pb.Partition{
- RingSize: segment.Partition.RingSize,
- RangeStart: segment.Partition.RangeStart,
- RangeStop: segment.Partition.RangeStop,
- },
- }
- }
- func (segment *Segment) DirAndName() (dir string, name string) {
- dir = fmt.Sprintf("%s/%s/%s", filer.TopicsDir, segment.Topic.Namespace, segment.Topic.Name)
- name = fmt.Sprintf("%4d.segment", segment.Id)
- return
- }
|