private static int DetermineSessionNumber(IBeaconConfiguration configuration, int beaconId) { if (configuration.PrivacyConfiguration.IsSessionNumberReportingAllowed) { return(beaconId); } return(1); }
private static long CreateDeviceId(IBeaconConfiguration configuration, IPrnGenerator randomGenerator) { if (configuration.PrivacyConfiguration.IsDeviceIdSendingAllowed) { return(configuration.OpenKitConfiguration.DeviceId); } return(randomGenerator.NextPositiveLong()); }
/// <summary> /// Creates a new instance of type Beacon /// </summary> /// <param name="initializer">provider of relevant parameters to initialize / create the beacon</param> /// <param name="configuration">OpenKit related configuration</param> internal Beacon(IBeaconInitializer initializer, IBeaconConfiguration configuration) { beaconCache = initializer.BeaconCache; var beaconId = initializer.SessionIdProvider.GetNextSessionId(); SessionSequenceNumber = initializer.SessionSequenceNumber; beaconKey = new BeaconKey(beaconId, SessionSequenceNumber); SessionNumber = DetermineSessionNumber(configuration, beaconId); this.configuration = configuration; threadIdProvider = initializer.ThreadIdProvider; timingProvider = initializer.TimingProvider; SessionStartTime = timingProvider.ProvideTimestampInMilliseconds(); DeviceId = CreateDeviceId(configuration, initializer.RandomNumberGenerator); TrafficControlValue = initializer.RandomNumberGenerator.NextPercentageValue(); logger = initializer.Logger; var ipAddress = initializer.ClientIpAddress; if (ipAddress == null) { // A client IP address, which is a null, is valid. // The real IP address is determined on the server side. clientIpAddress = null; } else if (InetAddressValidator.IsValidIP(ipAddress)) { clientIpAddress = ipAddress; } else { if (logger.IsWarnEnabled) { logger.Warn($"Beacon: Client IP address validation failed: {ipAddress}"); } clientIpAddress = null; // determined on server side, based on remote IP address } basicBeaconData = CreateBasicBeaconData(); }
internal TestBeaconBuilder With(IBeaconConfiguration config) { configuration = config; return(this); }