Add connection duration stats.

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2015-03-15 10:21:24 -07:00
parent 407f596b61
commit e79861c30a
1 changed files with 12 additions and 0 deletions

View File

@ -1,5 +1,8 @@
package org.whispersystems.textsecuregcm.websocket;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.SharedMetricRegistries;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
@ -18,6 +21,7 @@ import org.whispersystems.textsecuregcm.storage.Device;
import org.whispersystems.textsecuregcm.storage.MessagesManager;
import org.whispersystems.textsecuregcm.storage.PubSubListener;
import org.whispersystems.textsecuregcm.storage.PubSubManager;
import org.whispersystems.textsecuregcm.util.Constants;
import org.whispersystems.textsecuregcm.util.Pair;
import org.whispersystems.websocket.WebSocketClient;
import org.whispersystems.websocket.messages.WebSocketResponseMessage;
@ -26,6 +30,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
import static com.codahale.metrics.MetricRegistry.name;
import static org.whispersystems.textsecuregcm.entities.MessageProtos.OutgoingMessageSignal;
import static org.whispersystems.textsecuregcm.storage.PubSubProtos.PubSubMessage;
@ -33,6 +38,9 @@ public class WebSocketConnection implements PubSubListener {
private static final Logger logger = LoggerFactory.getLogger(WebSocketConnection.class);
private static final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME);
private static final Histogram durationHistogram = metricRegistry.histogram(name(WebSocketConnection.class, "connected_duration"));
private final AccountsManager accountsManager;
private final PushSender pushSender;
private final MessagesManager messagesManager;
@ -43,6 +51,8 @@ public class WebSocketConnection implements PubSubListener {
private final WebsocketAddress address;
private final WebSocketClient client;
private long connectionStartTime;
public WebSocketConnection(AccountsManager accountsManager,
PushSender pushSender,
MessagesManager messagesManager,
@ -62,11 +72,13 @@ public class WebSocketConnection implements PubSubListener {
}
public void onConnected() {
connectionStartTime = System.currentTimeMillis();
pubSubManager.subscribe(address, this);
processStoredMessages();
}
public void onConnectionLost() {
durationHistogram.update(System.currentTimeMillis() - connectionStartTime);
pubSubManager.unsubscribe(address, this);
}