aboutsummaryrefslogtreecommitdiff
path: root/weed/mq/topic/topic.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2023-08-20 22:53:05 -0700
committerchrislu <chris.lu@gmail.com>2023-08-20 22:53:05 -0700
commit01d70c21f30988bffa37ffdcb6b80f1646293390 (patch)
treeace1aa23be04dc833092e1a33fcf36237b11798f /weed/mq/topic/topic.go
parent3650e5adda604dc7507ba3f0f63799c4cbfa4dfe (diff)
downloadseaweedfs-01d70c21f30988bffa37ffdcb6b80f1646293390.tar.xz
seaweedfs-01d70c21f30988bffa37ffdcb6b80f1646293390.zip
Squashed commit of the following:
commit 32f4b1a13057d56b6de487cdb80ff7c205af01a6 Author: chrislu <chris.lu@gmail.com> Date: Sun Aug 20 22:52:19 2023 -0700 fix compilation commit e77ad33b7ca0423138fbae26a4433b60923a9588 Author: chrislu <chris.lu@gmail.com> Date: Sun Aug 20 22:46:44 2023 -0700 pub commit f431f30cc7ca277ca299e3cd118c05537fb9f5c3 Author: chrislu <chris.lu@gmail.com> Date: Sun Aug 20 13:27:39 2023 -0700 fix generic type commit 4e9dcb18293fd1e3e306e2dceb995dfd67a35e1d Merge: 30f942580 16e3f2d52 Author: chrislu <chris.lu@gmail.com> Date: Sun Aug 20 12:47:14 2023 -0700 Merge branch 'master' into pubsub commit 30f942580ad1bb32ae94aade2e3a21ec3ab63e21 Author: chrislu <chris.lu@gmail.com> Date: Sun Aug 20 11:10:58 2023 -0700 wip commit f8b00980bc2f3879bb43decffd9a08d842f196f2 Author: chrislu <chris.lu@gmail.com> Date: Tue Jul 25 09:14:35 2023 -0700 add design document commit 08d2bebe42a26ebc39f1542f54d99e73620727dd Author: chrislu <chris.lu@gmail.com> Date: Tue Jul 25 09:14:06 2023 -0700 minor commit bcfa7982b262a40fcdce6fc6613fad2ce07c13da Author: chrislu <chris.lu@gmail.com> Date: Tue Jul 25 09:13:49 2023 -0700 rename
Diffstat (limited to 'weed/mq/topic/topic.go')
-rw-r--r--weed/mq/topic/topic.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/weed/mq/topic/topic.go b/weed/mq/topic/topic.go
new file mode 100644
index 000000000..430999179
--- /dev/null
+++ b/weed/mq/topic/topic.go
@@ -0,0 +1,73 @@
+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
+}