Пример #1
0
        public static CakeMachine GetCakeMachine(DurationType durationType)
        {
            switch (durationType)
            {
            case DurationType.Seconds:
                var slowReportingDuration   = new Duration(1, durationType);
                var slowPrepareDuration     = new Duration(5, 8, durationType);
                var slowCookDuration        = new Duration(10, durationType);
                var slowPackageDuration     = new Duration(2, durationType);
                var slowDurationSettings    = new DurationSettings(slowPrepareDuration, slowCookDuration, slowPackageDuration);
                var slowReportingSettings   = new ReportingSettings(slowReportingDuration, true);
                var slowCakeMachineSettings = new CakeMachineSettings(slowDurationSettings, slowReportingSettings);
                return(new CakeMachine(slowCakeMachineSettings));

            case DurationType.Milliseconds:
                var fastReportingDuration   = new Duration(100, durationType);
                var fastPrepareDuration     = new Duration(50, 80, durationType);
                var fastCookDuration        = new Duration(70, 90, durationType);
                var fastPackageDuration     = new Duration(30, durationType);
                var fastDurationSettings    = new DurationSettings(fastPrepareDuration, fastCookDuration, fastPackageDuration);
                var fastReportingSettings   = new ReportingSettings(fastReportingDuration, true);
                var fastCakeMachineSettings = new CakeMachineSettings(fastDurationSettings, fastReportingSettings);
                return(new CakeMachine(fastCakeMachineSettings));

            default:
                throw new ArgumentOutOfRangeException($"{durationType}");
            }
        }
Пример #2
0
 public CakeService(DurationSettings settings)
 {
     _cakes = new ConcurrentBag <Cake>();
     _durationSettingsModel = settings;
     _prepareOptions        = new ExecutionDataflowBlockOptions {
         MaxDegreeOfParallelism = settings.PrepareMaxDegree
     };
     _cookOptions = new ExecutionDataflowBlockOptions {
         MaxDegreeOfParallelism = settings.CookMaxDegree
     };
     _packageOptions = new ExecutionDataflowBlockOptions {
         MaxDegreeOfParallelism = settings.PackageMaxDegree
     };
     _reportingTimer = new ReportingTimer(settings.ReportingDuration, OnReportingTimerEvent);
 }
 public CakeMachineSettings(DurationSettings durationSettings, ReportingSettings reportingSettings)
 {
     DurationSettings    = durationSettings;
     ReportingSettings   = reportingSettings;
     ParallelismSettings = new ParallelismSettings();
 }