예제 #1
0
        EmulationConfiguration GetEmulationConfiguration(Config.NetworkEmulation config)
        {
            EmulationConfiguration emulationConfiguration = null;

            if (config.EmulationType == NetworkEmProfile.Bandwidth)
            {
                emulationConfiguration = new BandwidthConfiguration
                {
                    DownstreamBandwidth = config.BandwidthDownstreamSpeed,
                    UpstreamBandwidth   = config.BandwidthUpstreamSpeed,
                    TargetEndpoints     = config.TargetEndpoints
                };
            }
            if (config.EmulationType == NetworkEmProfile.Corruption)
            {
                emulationConfiguration = new CorruptionConfiguration
                {
                    PacketPercentage = config.PacketPercentage,
                    TargetEndpoints  = config.TargetEndpoints
                };
            }
            if (config.EmulationType == NetworkEmProfile.Latency)
            {
                emulationConfiguration = new LatencyConfiguration
                {
                    FixedLatencyDelayMilliseconds = _config.LatencyDelay,
                    TargetEndpoints = config.TargetEndpoints
                };
            }

            /* TODO -CT
             * if (config.EmulationType == NetworkEmProfile.Disconnect)
             * {
             *      emulationConfiguration = new DisconnectConfiguration
             *      {
             *              ConnectionTime = config.ConnectionTime,
             *              DisconnectionTime = config.DisconnectionTime,
             *              PeriodicDisconnectionRate = config.PeriodicDisconnectionRate,
             *              TargetEndpoints = config.TargetEndpoints
             *      };
             * }
             */
            if (config.EmulationType == NetworkEmProfile.Loss)             //Random support implemented...
            {
                emulationConfiguration = new LossConfiguration
                {
                    //BurstRate = config.BurstRate,
                    //MaximumBurst = config.MaximumBurst,
                    //MinimumBurst = config.MinimumBurst,
                    //PeriodicLossPeriod = config.PeriodicLossPeriod,
                    RandomLossRate  = config.RandomLossRate,
                    TargetEndpoints = config.TargetEndpoints
                };
            }
            if (config.EmulationType == NetworkEmProfile.Reorder)
            {
                emulationConfiguration = new ReorderConfiguration
                {
                    CorrelationPercentage = config.CorrelationPercentage,
                    PacketPercentage      = config.PacketPercentage
                };
            }

            return(emulationConfiguration);
        }
예제 #2
0
        private EmulationConfiguration GetEmulationConfiguration(Config.NetworkEmulation config)
        {
            EmulationConfiguration emulationConfiguration = null;

            if (config.EmulationType == NetworkEmProfile.Bandwidth)
            {
                emulationConfiguration = new BandwidthConfiguration
                {
                    DownstreamBandwidth = config.BandwidthDownstreamSpeed,
                    UpstreamBandwidth   = config.BandwidthUpstreamSpeed,
                    TargetEndpoints     = config.TargetEndpoints
                };
            }
            if (config.EmulationType == NetworkEmProfile.Corruption)
            {
                emulationConfiguration = new CorruptionConfiguration
                {
                    PacketPercentage = config.PacketPercentage,
                    TargetEndpoints  = config.TargetEndpoints
                };
            }
            if (config.EmulationType == NetworkEmProfile.Latency)
            {
                emulationConfiguration = new LatencyConfiguration
                {
                    FixedLatencyDelayMilliseconds = _config.LatencyDelay,
                    TargetEndpoints = config.TargetEndpoints
                };
            }

            /* TODO -CT
             * if (config.EmulationType == NetworkEmProfile.Disconnect)
             * {
             *      emulationConfiguration = new DisconnectConfiguration
             *      {
             *              ConnectionTime = config.ConnectionTime,
             *              DisconnectionTime = config.DisconnectionTime,
             *              PeriodicDisconnectionRate = config.PeriodicDisconnectionRate,
             *              TargetEndpoints = config.TargetEndpoints
             *      };
             * }
             */
            if (config.EmulationType == NetworkEmProfile.Loss)             //Random and Burst are supported...
            {
                emulationConfiguration = new LossConfiguration
                {
                    LossRate        = config.LossRate,
                    LossType        = config.LossType,
                    TargetEndpoints = config.TargetEndpoints
                };

                if (config.LossType == LossType.Burst)
                {
                    ((LossConfiguration)emulationConfiguration).BurstRate = config.BurstRate;
                }
            }
            if (config.EmulationType == NetworkEmProfile.Reorder)
            {
                emulationConfiguration = new ReorderConfiguration
                {
                    CorrelationPercentage = config.CorrelationPercentage,
                    PacketPercentage      = config.PacketPercentage
                };
            }

            return(emulationConfiguration);
        }