mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 12:18:09 +01:00
Send all messages via keyspace notifications when a feature flag is enabled.
This commit is contained in:
committed by
Jon Chambers
parent
c02b255766
commit
fadcf62166
@@ -300,7 +300,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||
PubSubManager pubSubManager = new PubSubManager(pubsubClient, dispatchManager);
|
||||
APNSender apnSender = new APNSender(accountsManager, config.getApnConfiguration());
|
||||
GCMSender gcmSender = new GCMSender(accountsManager, config.getGcmConfiguration().getApiKey());
|
||||
WebsocketSender websocketSender = new WebsocketSender(messagesManager, pubSubManager, clientPresenceManager);
|
||||
WebsocketSender websocketSender = new WebsocketSender(messagesManager, pubSubManager, clientPresenceManager, featureFlagsManager);
|
||||
RateLimiters rateLimiters = new RateLimiters(config.getLimitsConfiguration(), cacheCluster);
|
||||
|
||||
AccountAuthenticator accountAuthenticator = new AccountAuthenticator(accountsManager);
|
||||
|
||||
@@ -69,21 +69,43 @@ public class WebsocketSender {
|
||||
private final MessagesManager messagesManager;
|
||||
private final PubSubManager pubSubManager;
|
||||
private final ClientPresenceManager clientPresenceManager;
|
||||
private final FeatureFlagsManager featureFlagsManager;
|
||||
|
||||
public WebsocketSender(MessagesManager messagesManager, PubSubManager pubSubManager, ClientPresenceManager clientPresenceManager) {
|
||||
private static final String KEYSPACE_DELIVERY_FEATURE_FLAG = "keyspace-delivery-for-all-messages";
|
||||
|
||||
public WebsocketSender(MessagesManager messagesManager, PubSubManager pubSubManager, ClientPresenceManager clientPresenceManager, final FeatureFlagsManager featureFlagsManager) {
|
||||
this.messagesManager = messagesManager;
|
||||
this.pubSubManager = pubSubManager;
|
||||
this.clientPresenceManager = clientPresenceManager;
|
||||
this.featureFlagsManager = featureFlagsManager;
|
||||
}
|
||||
|
||||
public boolean sendMessage(Account account, Device device, Envelope message, Type channel, boolean online) {
|
||||
final boolean clientPresent = clientPresenceManager.isPresent(account.getUuid(), device.getId());
|
||||
|
||||
if (online) {
|
||||
if (clientPresenceManager.isPresent(account.getUuid(), device.getId())) {
|
||||
if (clientPresent) {
|
||||
ephemeralOnlineCounter.increment();
|
||||
messagesManager.insertEphemeral(account.getUuid(), device.getId(), message);
|
||||
return true;
|
||||
} else {
|
||||
ephemeralOfflineCounter.increment();
|
||||
return false;
|
||||
}
|
||||
} else if (featureFlagsManager.isFeatureFlagActive(KEYSPACE_DELIVERY_FEATURE_FLAG)) {
|
||||
messagesManager.insert(account.getUuid(), device.getId(), message);
|
||||
|
||||
if (clientPresent) {
|
||||
if (channel == Type.APN) apnOnlineMeter.mark();
|
||||
else if (channel == Type.GCM) gcmOnlineMeter.mark();
|
||||
else websocketOnlineMeter.mark();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
if (channel == Type.APN) apnOfflineMeter.mark();
|
||||
else if (channel == Type.GCM) gcmOfflineMeter.mark();
|
||||
else websocketOfflineMeter.mark();
|
||||
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
@@ -95,7 +117,7 @@ public class WebsocketSender {
|
||||
|
||||
pubSubManager.publish(address, pubSubMessage);
|
||||
|
||||
if (clientPresenceManager.isPresent(account.getUuid(), device.getId())) {
|
||||
if (clientPresent) {
|
||||
if (channel == Type.APN) apnOnlineMeter.mark();
|
||||
else if (channel == Type.GCM) gcmOnlineMeter.mark();
|
||||
else websocketOnlineMeter.mark();
|
||||
|
||||
Reference in New Issue
Block a user