Skip to content

Commit 0bd0dab

Browse files
authored
Merge pull request #55 from JavaSaBr/feature-broker-30-move-class
[broker-30] Rename TopicNode to SubscriberNode etc.
2 parents 5db7fd7 + 8699e7e commit 0bd0dab

File tree

6 files changed

+113
-112
lines changed

6 files changed

+113
-112
lines changed

model/src/main/java/javasabr/mqtt/model/topic/tree/ConcurrentTopicTree.java renamed to model/src/main/java/javasabr/mqtt/model/subscriber/tree/ConcurrentSubscriberTree.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package javasabr.mqtt.model.topic.tree;
1+
package javasabr.mqtt.model.subscriber.tree;
22

33
import javasabr.mqtt.model.subscriber.SingleSubscriber;
44
import javasabr.mqtt.model.subscribtion.Subscription;
@@ -13,12 +13,12 @@
1313
import org.jspecify.annotations.Nullable;
1414

1515
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
16-
public class ConcurrentTopicTree implements ThreadSafe {
16+
public class ConcurrentSubscriberTree implements ThreadSafe {
1717

18-
TopicNode rootNode;
18+
SubscriberNode rootNode;
1919

20-
public ConcurrentTopicTree() {
21-
this.rootNode = new TopicNode();
20+
public ConcurrentSubscriberTree() {
21+
this.rootNode = new SubscriberNode();
2222
}
2323

2424
@Nullable

model/src/main/java/javasabr/mqtt/model/topic/tree/TopicNode.java renamed to model/src/main/java/javasabr/mqtt/model/subscriber/tree/SubscriberNode.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package javasabr.mqtt.model.topic.tree;
1+
package javasabr.mqtt.model.subscriber.tree;
22

33
import java.util.function.Supplier;
44
import javasabr.mqtt.base.util.DebugUtils;
@@ -22,16 +22,16 @@
2222
@Getter(AccessLevel.PACKAGE)
2323
@Accessors(fluent = true, chain = false)
2424
@FieldDefaults(level = AccessLevel.PRIVATE)
25-
class TopicNode extends TopicTreeBase {
25+
class SubscriberNode extends SubscriberTreeBase {
2626

27-
private final static Supplier<TopicNode> TOPIC_NODE_FACTORY = TopicNode::new;
27+
private final static Supplier<SubscriberNode> SUBSCRIBER_NODE_FACTORY = SubscriberNode::new;
2828

2929
static {
3030
DebugUtils.registerIncludedFields("childNodes", "subscribers");
3131
}
3232

3333
@Nullable
34-
volatile LockableRefToRefDictionary<String, TopicNode> childNodes;
34+
volatile LockableRefToRefDictionary<String, SubscriberNode> childNodes;
3535
@Nullable
3636
volatile LockableArray<Subscriber> subscribers;
3737

@@ -43,15 +43,15 @@ public SingleSubscriber subscribe(int level, SubscriptionOwner owner, Subscripti
4343
if (level == topicFilter.levelsCount()) {
4444
return addSubscriber(getOrCreateSubscribers(), owner, subscription, topicFilter);
4545
}
46-
TopicNode childNode = getOrCreateChildNode(topicFilter.segment(level));
46+
SubscriberNode childNode = getOrCreateChildNode(topicFilter.segment(level));
4747
return childNode.subscribe(level + 1, owner, subscription, topicFilter);
4848
}
4949

5050
public boolean unsubscribe(int level, SubscriptionOwner owner, TopicFilter topicFilter) {
5151
if (level == topicFilter.levelsCount()) {
5252
return removeSubscriber(subscribers(), owner, topicFilter);
5353
}
54-
TopicNode childNode = getOrCreateChildNode(topicFilter.segment(level));
54+
SubscriberNode childNode = getOrCreateChildNode(topicFilter.segment(level));
5555
return childNode.unsubscribe(level + 1, owner, topicFilter);
5656
}
5757

@@ -67,14 +67,14 @@ private void exactlyTopicMatch(
6767
int lastLevel,
6868
MutableArray<SingleSubscriber> result) {
6969
String segment = topicName.segment(level);
70-
TopicNode topicNode = childNode(segment);
71-
if (topicNode == null) {
70+
SubscriberNode subscriberNode = childNode(segment);
71+
if (subscriberNode == null) {
7272
return;
7373
}
7474
if (level == lastLevel) {
75-
appendSubscribersTo(result, topicNode);
75+
appendSubscribersTo(result, subscriberNode);
7676
} else if (level < lastLevel) {
77-
topicNode.matchesTo(level + 1, topicName, lastLevel, result);
77+
subscriberNode.matchesTo(level + 1, topicName, lastLevel, result);
7878
}
7979
}
8080

@@ -83,47 +83,47 @@ private void singleWildcardTopicMatch(
8383
TopicName topicName,
8484
int lastLevel,
8585
MutableArray<SingleSubscriber> result) {
86-
TopicNode topicNode = childNode(TopicFilter.SINGLE_LEVEL_WILDCARD);
87-
if (topicNode == null) {
86+
SubscriberNode subscriberNode = childNode(TopicFilter.SINGLE_LEVEL_WILDCARD);
87+
if (subscriberNode == null) {
8888
return;
8989
}
9090
if (level == lastLevel) {
91-
appendSubscribersTo(result, topicNode);
91+
appendSubscribersTo(result, subscriberNode);
9292
} else if (level < lastLevel) {
93-
topicNode.matchesTo(level + 1, topicName, lastLevel, result);
93+
subscriberNode.matchesTo(level + 1, topicName, lastLevel, result);
9494
}
9595
}
9696

9797
private void multiWildcardTopicMatch(MutableArray<SingleSubscriber> result) {
98-
TopicNode topicNode = childNode(TopicFilter.MULTI_LEVEL_WILDCARD);
99-
if (topicNode != null) {
100-
appendSubscribersTo(result, topicNode);
98+
SubscriberNode subscriberNode = childNode(TopicFilter.MULTI_LEVEL_WILDCARD);
99+
if (subscriberNode != null) {
100+
appendSubscribersTo(result, subscriberNode);
101101
}
102102
}
103103

104-
private TopicNode getOrCreateChildNode(String segment) {
105-
LockableRefToRefDictionary<String, TopicNode> childNodes = getOrCreateChildNodes();
104+
private SubscriberNode getOrCreateChildNode(String segment) {
105+
LockableRefToRefDictionary<String, SubscriberNode> childNodes = getOrCreateChildNodes();
106106
long stamp = childNodes.readLock();
107107
try {
108-
TopicNode topicNode = childNodes.get(segment);
109-
if (topicNode != null) {
110-
return topicNode;
108+
SubscriberNode subscriberNode = childNodes.get(segment);
109+
if (subscriberNode != null) {
110+
return subscriberNode;
111111
}
112112
} finally {
113113
childNodes.readUnlock(stamp);
114114
}
115115
stamp = childNodes.writeLock();
116116
try {
117117
//noinspection DataFlowIssue
118-
return childNodes.getOrCompute(segment, TOPIC_NODE_FACTORY);
118+
return childNodes.getOrCompute(segment, SUBSCRIBER_NODE_FACTORY);
119119
} finally {
120120
childNodes.writeUnlock(stamp);
121121
}
122122
}
123123

124124
@Nullable
125-
private TopicNode childNode(String segment) {
126-
LockableRefToRefDictionary<String, TopicNode> childNodes = childNodes();
125+
private SubscriberNode childNode(String segment) {
126+
LockableRefToRefDictionary<String, SubscriberNode> childNodes = childNodes();
127127
if (childNodes == null) {
128128
return null;
129129
}
@@ -135,7 +135,7 @@ private TopicNode childNode(String segment) {
135135
}
136136
}
137137

138-
private LockableRefToRefDictionary<String, TopicNode> getOrCreateChildNodes() {
138+
private LockableRefToRefDictionary<String, SubscriberNode> getOrCreateChildNodes() {
139139
if (childNodes == null) {
140140
synchronized (this) {
141141
if (childNodes == null) {

model/src/main/java/javasabr/mqtt/model/topic/tree/TopicTreeBase.java renamed to model/src/main/java/javasabr/mqtt/model/subscriber/tree/SubscriberTreeBase.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package javasabr.mqtt.model.topic.tree;
1+
package javasabr.mqtt.model.subscriber.tree;
22

33
import java.util.Objects;
44
import javasabr.mqtt.model.QoS;
@@ -18,7 +18,7 @@
1818

1919
@RequiredArgsConstructor
2020
@FieldDefaults(level = AccessLevel.PROTECTED, makeFinal = true)
21-
abstract class TopicTreeBase {
21+
abstract class SubscriberTreeBase {
2222

2323
/**
2424
* @return previous subscriber with the same owner
@@ -66,7 +66,7 @@ private static void addSharedSubscriber(
6666
String group = sharedTopicFilter.shareName();
6767
SharedSubscriber sharedSubscriber = (SharedSubscriber) subscribers
6868
.iterations()
69-
.findAny(group, TopicTreeBase::isSharedSubscriberWithGroup);
69+
.findAny(group, SubscriberTreeBase::isSharedSubscriberWithGroup);
7070

7171
if (sharedSubscriber == null) {
7272
sharedSubscriber = new SharedSubscriber(sharedTopicFilter);
@@ -76,8 +76,8 @@ private static void addSharedSubscriber(
7676
sharedSubscriber.addSubscriber(new SingleSubscriber(owner, subscription));
7777
}
7878

79-
protected static void appendSubscribersTo(MutableArray<SingleSubscriber> result, TopicNode topicNode) {
80-
LockableArray<Subscriber> subscribers = topicNode.subscribers();
79+
protected static void appendSubscribersTo(MutableArray<SingleSubscriber> result, SubscriberNode subscriberNode) {
80+
LockableArray<Subscriber> subscribers = subscriberNode.subscribers();
8181
if (subscribers == null) {
8282
return;
8383
}
@@ -125,7 +125,7 @@ private static boolean removeSharedSubscriber(
125125
String group = sharedTopicFilter.shareName();
126126
SharedSubscriber sharedSubscriber = (SharedSubscriber) subscribers
127127
.iterations()
128-
.findAny(group, TopicTreeBase::isSharedSubscriberWithGroup);
128+
.findAny(group, SubscriberTreeBase::isSharedSubscriberWithGroup);
129129
if (sharedSubscriber != null) {
130130
boolean removed = sharedSubscriber.removeSubscriberWithOwner(owner);
131131
if (sharedSubscriber.isEmpty()) {

model/src/main/java/javasabr/mqtt/model/topic/tree/package-info.java renamed to model/src/main/java/javasabr/mqtt/model/subscriber/tree/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
@NullMarked
2-
package javasabr.mqtt.model.topic.tree;
2+
package javasabr.mqtt.model.subscriber.tree;
33

44
import org.jspecify.annotations.NullMarked;

0 commit comments

Comments
 (0)