All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.launchdarkly.sdk.android.DiagnosticEvent Maven / Gradle / Ivy

package com.launchdarkly.sdk.android;

import android.os.Build;

import java.util.List;

@SuppressWarnings({"unused", "FieldCanBeLocal"}) // fields are for JSON serialization only
class DiagnosticEvent {

    final String kind;
    final long creationDate;
    final DiagnosticId id;

    DiagnosticEvent(String kind, long creationDate, DiagnosticId id) {
        this.kind = kind;
        this.creationDate = creationDate;
        this.id = id;
    }

    static class DiagnosticPlatform {
        final String name = "Android";
        final int androidSDKVersion = Build.VERSION.SDK_INT;

        DiagnosticPlatform() {
        }
    }

    static class DiagnosticConfiguration {
        private final boolean customBaseURI;
        private final boolean customEventsURI;
        private final boolean customStreamURI;
        private final int eventsCapacity;
        private final int connectTimeoutMillis;
        private final long eventsFlushIntervalMillis;
        private final boolean streamingDisabled;
        private final boolean allAttributesPrivate;
        private final long pollingIntervalMillis;
        private final long backgroundPollingIntervalMillis;
        private final boolean inlineUsersInEvents;
        private final boolean useReport;
        private final boolean backgroundPollingDisabled;
        private final boolean evaluationReasonsRequested;
        private final int mobileKeyCount;
        private final int diagnosticRecordingIntervalMillis;
        private final int maxCachedUsers;
        private final boolean autoAliasingOptOut;

        DiagnosticConfiguration(LDConfig config) {
            this.customBaseURI = !LDConfig.DEFAULT_POLL_URI.equals(config.getPollUri());
            this.customEventsURI = !LDConfig.DEFAULT_EVENTS_URI.equals(config.getEventsUri());
            this.customStreamURI = !LDConfig.DEFAULT_STREAM_URI.equals(config.getStreamUri());
            this.eventsCapacity = config.getEventsCapacity();
            this.connectTimeoutMillis = config.getConnectionTimeoutMillis();
            this.eventsFlushIntervalMillis = config.getEventsFlushIntervalMillis();
            this.streamingDisabled = !config.isStream();
            this.allAttributesPrivate = config.allAttributesPrivate();
            this.pollingIntervalMillis = config.getPollingIntervalMillis();
            this.backgroundPollingIntervalMillis = config.getBackgroundPollingIntervalMillis();
            this.inlineUsersInEvents = config.inlineUsersInEvents();
            this.useReport = config.isUseReport();
            this.backgroundPollingDisabled = config.isDisableBackgroundPolling();
            this.evaluationReasonsRequested = config.isEvaluationReasons();
            this.mobileKeyCount = config.getMobileKeys().size();
            this.diagnosticRecordingIntervalMillis = config.getDiagnosticRecordingIntervalMillis();
            this.maxCachedUsers = config.getMaxCachedUsers();
            this.autoAliasingOptOut = config.isAutoAliasingOptOut();
        }

    }

    static class Init extends DiagnosticEvent {
        final DiagnosticSdk sdk;
        final DiagnosticConfiguration configuration;
        final DiagnosticPlatform platform = new DiagnosticPlatform();

        Init(long creationDate, DiagnosticId diagnosticId, LDConfig config) {
            super("diagnostic-init", creationDate, diagnosticId);
            this.sdk = new DiagnosticSdk(config);
            this.configuration = new DiagnosticConfiguration(config);
        }
    }

    static class Statistics extends DiagnosticEvent {
        long dataSinceDate;
        long droppedEvents;
        long eventsInLastBatch;
        List streamInits;

        Statistics(long creationDate, DiagnosticId id, long dataSinceDate, long droppedEvents,
                   long eventsInLastBatch, List streamInits) {
            super("diagnostic", creationDate, id);
            this.dataSinceDate = dataSinceDate;
            this.droppedEvents = droppedEvents;
            this.eventsInLastBatch = eventsInLastBatch;
            this.streamInits = streamInits;
        }
    }

    static class StreamInit {
        long timestamp;
        int durationMillis;
        boolean failed;

        StreamInit(long timestamp, int durationMillis, boolean failed) {
            this.timestamp = timestamp;
            this.durationMillis = durationMillis;
            this.failed = failed;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy