Skip to content

Commit

Permalink
[ntcore] Fix UID collisions between subscribers and multi-sub (#7198)
Browse files Browse the repository at this point in the history
The changes in #7189 caused an ambiguity between multi-subscribers and
normal subscribers, because the handle type no longer is sent to the network.

Multi-subscribers now go to the network with negative UIDs, normal
subscribers are positive UIDs.  UID 0 is never used.
  • Loading branch information
PeterJohnson authored Oct 12, 2024
1 parent f1e032f commit 25c2e26
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions ntcore/src/main/native/cpp/LocalStorage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,7 @@ LocalStorage::SubscriberData* LocalStorage::Impl::AddLocalSubscriber(
}
if (m_network && !subscriber->config.hidden) {
DEBUG4("-> NetworkSubscribe({})", topic->name);
m_network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
m_network->ClientSubscribe(1 + Handle{subscriber->handle}.GetIndex(),
{{topic->name}}, config);
}

Expand Down Expand Up @@ -650,7 +650,7 @@ LocalStorage::Impl::RemoveLocalSubscriber(NT_Subscriber subHandle) {
}
}
if (m_network && !subscriber->config.hidden) {
m_network->ClientUnsubscribe(Handle{subscriber->handle}.GetIndex());
m_network->ClientUnsubscribe(1 + Handle{subscriber->handle}.GetIndex());
}
}
return subscriber;
Expand Down Expand Up @@ -687,7 +687,7 @@ LocalStorage::MultiSubscriberData* LocalStorage::Impl::AddMultiSubscriber(
}
if (m_network && !subscriber->options.hidden) {
DEBUG4("-> NetworkSubscribe");
m_network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
m_network->ClientSubscribe(-1 - Handle{subscriber->handle}.GetIndex(),
subscriber->prefixes, subscriber->options);
}
return subscriber;
Expand All @@ -706,7 +706,7 @@ LocalStorage::Impl::RemoveMultiSubscriber(NT_MultiSubscriber subHandle) {
}
}
if (m_network && !subscriber->options.hidden) {
m_network->ClientUnsubscribe(Handle{subscriber->handle}.GetIndex());
m_network->ClientUnsubscribe(-1 - Handle{subscriber->handle}.GetIndex());
}
}
return subscriber;
Expand Down Expand Up @@ -1141,13 +1141,13 @@ void LocalStorage::Impl::StartNetwork(net::ClientMessageHandler* network) {
}
for (auto&& subscriber : m_subscribers) {
if (!subscriber->config.hidden) {
network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
network->ClientSubscribe(1 + Handle{subscriber->handle}.GetIndex(),
{{subscriber->topic->name}}, subscriber->config);
}
}
for (auto&& subscriber : m_multiSubscribers) {
if (!subscriber->options.hidden) {
network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
network->ClientSubscribe(-1 - Handle{subscriber->handle}.GetIndex(),
subscriber->prefixes, subscriber->options);
}
}
Expand Down

0 comments on commit 25c2e26

Please sign in to comment.