public void Process(OperationContext context) { if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.OrderSandwich)) { // Компонент не обрабатывает текущую операцию, но имеет возможность считать нужную информацию _counter++; } else if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.GetOrderCount)) { context.Complete(_counter); } }
public void Process(OperationContext context) { var title = context.CurrentOperation.Title; if (title == nameof(IMotionPlugin.GetCoords)) { context.Complete(_odometry.GetCoords()); } else if (title == nameof(IMotionPlugin.GetVelocities)) { context.Complete(_odometry.GetVelocities()); } else if (title == nameof(IMotionPlugin.GetAbsCoords)) { var coords = _odometry.GetCoords(); context.Complete(_kinematics.ForwardPosTransform(coords)); } else if (title == nameof(IMotionPlugin.GetAbsVelocities)) { var velocities = _odometry.GetCoords(); context.Complete(_kinematics.ForwardVelocityTransform(velocities)); } }
public void Process(OperationContext context) { // Вместо константы "GetSubOfTheDayRecipe" используется непосредственно контракт сервиса // с целью более простого обновления наименований в будущем if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.GetSubOfTheDayRecipe)) { // Операция полностью выполнена, следующие обработчики в конвейере вызваны не будут var recipe = GetRecipe(); context.Complete(recipe); } else if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.OrderSubOfTheDay)) { // Вместо непосредственного вызова необходимых функций, операция трасформируется // в более простую и передаётся дальше. Таким образом компоненты остаются слабо связанными. var recipe = GetRecipe(); context.SetNextOperation(new Message(nameof(ISubDemoPlugin.OrderSandwich), recipe)); } }
public void Process(OperationContext context) { if (!_registry.List.Contains("Повар")) { return; } if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.OrderSandwich)) { // Входные данные операции передаются в свойстве Payload в типе, соответствующему контракту операции var recipe = context.CurrentOperation.Payload as Recipe; var sandwich = new Sandwich() { Depiction = $"Вкусный сэндвич, включающий {string.Join(", ", recipe.Ingridients)}" }; context.Complete(sandwich); } }
public void Process(OperationContext context) { if (context.CurrentOperation.Title == nameof(ISubDemoPlugin.FireEmployee)) { var count = _registry.List.Count; if (count > 0) { var firedIndex = new Random().Next(count); var firedEmployee = _registry.List[firedIndex]; _registry.List.RemoveAt(firedIndex); var args = new JobOpeningArgs() { Vacancy = firedEmployee }; _raiser.Post(nameof(ISubDemoPlugin.PositionOpened), args); context.Complete(); } } }