Ejemplo n.º 1
0
 public bool Handle(Cooked message)
 {
     _dispatcher.Publish(new PriceFood(message.Order,
                                       message.CorrelationId,
                                       message.MessageId));
     return(true);
 }
Ejemplo n.º 2
0
        public OrderFulfillment(ITopicDispatcher dispatcher, OrderTaken initiatingMessage)
        {
            _dispatcher = dispatcher;

            _dispatcher.Publish(new CookFood(initiatingMessage.Order,
                                             initiatingMessage.CorrelationId,
                                             initiatingMessage.MessageId));
        }
        public OrderFulfillmentForDodgeyCustomer(ITopicDispatcher dispatcher, OrderTaken initiatingMessage)
        {
            _dispatcher = dispatcher;

            _dispatcher.Publish(new PriceFood(initiatingMessage.Order,
                                              initiatingMessage.CorrelationId,
                                              initiatingMessage.MessageId));
        }
Ejemplo n.º 4
0
        public void TakeOrder(int tableNumber, IEnumerable <OrderItem> orderItems, Guid id, bool dodgeyCustomer)
        {
            var order = new Order(tableNumber, id, _name, dodgeyCustomer);

            foreach (var item in orderItems)
            {
                order.AddItem(item);
            }

            _dispatcher.Publish(new OrderTaken(order, order.Id, null));
        }
Ejemplo n.º 5
0
        public bool Handle(PriceFood message)
        {
            Order order = message.Order;

            foreach (OrderItem item in order.Items)
            {
                double itemCost;
                if (_costs.TryGetValue(item.Name, out itemCost))
                {
                    item.Cost = itemCost;
                }
                else
                {
                    throw new InvalidOperationException(string.Format("No price found for item {0}", item.Name));
                }
            }

            _dispatcher.Publish(new Priced(order, message.CorrelationId, message.MessageId));

            return(true);
        }
Ejemplo n.º 6
0
        public bool TryPay(Guid orderId)
        {
            OrderMessage orderMessage;

            if (_ordersToBePaid.TryGetValue(orderId, out orderMessage))
            {
                Order orderToPay = orderMessage.Order;
                orderToPay.SettleBill();
                OrderMessage removedOrder;
                _ordersToBePaid.TryRemove(orderId, out removedOrder);
                _dispatcher.Publish(new Paid(orderToPay, orderMessage.CorrelationId, orderMessage.MessageId));

                ConsoleColor origColour = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("$");
                Console.ForegroundColor = origColour;

                return(true);
            }

            return(false);
        }
Ejemplo n.º 7
0
        public MessageDelay(ITopicDispatcher dispatcher)
        {
            if (dispatcher == null)
            {
                throw new ArgumentNullException("dispatcher");
            }
            _dispatcher = dispatcher;

            Task.Factory.StartNew(() =>
            {
                while (!Cancelled)
                {
                    var messages = _messagesToEcho.Where(x => x.HasExpired());

                    foreach (var message in messages)
                    {
                        _dispatcher.Publish((dynamic)message.Echo.Inner);
                    }

                    Thread.Sleep(1000);
                }
            });
        }
Ejemplo n.º 8
0
        public bool Handle(CookFood message)
        {
            Thread.Sleep(_sleepDuration);

            var order = message.Order;

            foreach (var item in order.Items)
            {
                IList <string> ingredients;
                if (_recipes.TryGetValue(item.Name, out ingredients))
                {
                    item.IngredientsUsed = ingredients;
                }
                else
                {
                    throw new Exception(string.Format("Cook doesn't know how to make {0}", item.Name));
                }
            }

            Console.Write("+");
            _dispatcher.Publish(new Cooked(order, message.CorrelationId, message.MessageId));

            return(true);
        }
Ejemplo n.º 9
0
 public bool Handle(Report message)
 {
     _dispatcher.Publish(new Completed(message.Order, message.CorrelationId, message.MessageId));
     return(true);
 }