public async Task Calc(CalculationContext context)
        {
            var input = await _inputService.GetInput();

            while (input != null)
            {
                try
                {
                    context.Execute(input);
                }
                catch (ParameterCountNotMatchExceptions e)
                {
                    await _outputService.Output(e.Message);
                }
                catch (InvalidOperationException invalidOperation)
                {
                    await _outputService.Output(invalidOperation.Message);
                }
                catch (Exception unExpectedException)
                {
                    if (IsDebugEnable)
                    {
                        await _outputService.Output(unExpectedException.ToString());
                    }
                    else
                    {
                        await _outputService.Output("system err");
                    }
                }

                await _outputService.Output(ViewModelBuilder.PresentStack(context.CalculationData));

                input = await _inputService.GetInput();
            }
        }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
        public async Task AddOutput(IOutputService outputService)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            var outputBlock = new ActionBlock <ArraySegment <byte> >(x => outputService.Output(x), new ExecutionDataflowBlockOptions {
                BoundedCapacity = 20
            });

            _renderTransformBlock.LinkTo(outputBlock);
        }
Example #3
0
        public void Run()
        {
            var commands      = Convert.ToInt32(_inputService.ReadNextInput());
            var startPosition = _inputService.ReadNextInput().Split(' ');

            var position = new Position(Convert.ToInt32(startPosition[0]), Convert.ToInt32(startPosition[1]));
            var robot    = new Robot(_cleanedSpots, position);

            for (int i = 0; i < commands; i++)
            {
                robot.Move(MoveCommand.Parse(_inputService.ReadNextInput()));
            }

            _outputService.Output($"=> Cleaned: {robot.CalculateCleanedSpots()}");
        }
Example #4
0
        public virtual void Process(PipelineArgs args)
        {
            if (SettingsService.Constraints.Any(c => !c.IsSatisfied(args)))
            {
                return;
            }

            var output = new OutputItem(this.Id, this.ProcessorName, args.GetType().FullName);

            try
            {
                foreach (var subhierarchy in hierarchy.Children)
                {
                    if (string.IsNullOrWhiteSpace(subhierarchy.Name))
                    {
                        continue;
                    }

                    if (subhierarchy.Name == Constants.ContextName)
                    {
                        foreach (var child in subhierarchy.Children)
                        {
                            OutputTaxonomyValueRecursive(new Sitecore.Context(), child, Constants.ContextName, output);
                        }
                    }
                    else if (subhierarchy.Name == Constants.ArgsName)
                    {
                        foreach (var child in subhierarchy.Children)
                        {
                            OutputTaxonomyValueRecursive(args, child, Constants.ArgsName, output);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                output.Entries.Add(new OutputMember("ERROR", ex.Message, null));
            }
            finally
            {
                OutputService.Output(output);
            }
        }