Exemple #1
0
        private static int DetermineSessionNumber(IBeaconConfiguration configuration, int beaconId)
        {
            if (configuration.PrivacyConfiguration.IsSessionNumberReportingAllowed)
            {
                return(beaconId);
            }

            return(1);
        }
Exemple #2
0
        private static long CreateDeviceId(IBeaconConfiguration configuration, IPrnGenerator randomGenerator)
        {
            if (configuration.PrivacyConfiguration.IsDeviceIdSendingAllowed)
            {
                return(configuration.OpenKitConfiguration.DeviceId);
            }

            return(randomGenerator.NextPositiveLong());
        }
Exemple #3
0
        /// <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);
 }