private void AddSeatToRoom(LabelIdMapping labelIdMapping) { if (_seats.All(x => x.Id != labelIdMapping.Id)) { _seats.Add(labelIdMapping); } }
private void buttonProcessOrder_Click(object sender, RoutedEventArgs e) { LabelIdMapping labelId = listOrders.SelectedItem as LabelIdMapping; Message message = orderQueue.ReceiveById(labelId.Id); listOrders.Items.Remove(labelId); listOrders.SelectedIndex = -1; buttonProcessOrder.IsEnabled = false; textCompany.Text = string.Empty; textContact.Text = string.Empty; textCourse.Text = string.Empty; MessageBox.Show("Course order processed", "Course Order Receiver", MessageBoxButton.OK, MessageBoxImage.Information); }
private void PeekMessages() { using (MessageEnumerator messagesEnumerator = orderQueue.GetMessageEnumerator2()) { while (messagesEnumerator.MoveNext(TimeSpan.FromHours(3))) { var labelId = new LabelIdMapping() { Id = messagesEnumerator.Current.Id, Label = messagesEnumerator.Current.Label }; Dispatcher.Invoke(DispatcherPriority.Normal, new Action <LabelIdMapping>(AddListItem), labelId); } } MessageBox.Show("No orders in the last 3 hours. Exiting thread", "Course Order Receiver", MessageBoxButton.OK, MessageBoxImage.Information); }
private void PeekMessages() { using (MessageEnumerator messagesEnumerator = orderQueue.GetMessageEnumerator2()) { while (messagesEnumerator.MoveNext(TimeSpan.FromHours(3))) { var labelId = new LabelIdMapping() { Id = messagesEnumerator.Current.Id, Label = messagesEnumerator.Current.Label }; Dispatcher.Invoke(DispatcherPriority.Normal, new Action<LabelIdMapping>(AddListItem), labelId); } } MessageBox.Show("No orders in the last 3 hours. Exiting thread", "Course Order Receiver", MessageBoxButton.OK, MessageBoxImage.Information); }
private IEnumerable <LabelIdMapping> PeekMessages(MessageQueue queue) { var counter = 0; using (var msgEnumerator = queue.GetMessageEnumerator2()) { while (msgEnumerator.MoveNext(TimeSpan.FromMilliseconds(10)) && msgEnumerator.Current != null) { counter++; var labelId = new LabelIdMapping { Id = msgEnumerator.Current.Id, Label = msgEnumerator.Current.Label }; Dispatcher.Invoke(new Action <LabelIdMapping>(AddSeatToRoom), labelId); } } return((counter > 0) ? _seats : new List <LabelIdMapping>()); }
/// <summary> /// SelectedIndex Changed event handler for ListBox /// - Peeks at the Message selected in the Queue /// and Display information about the CD order in the queue /// </summary> private void lBOrders_SelectedIndexChanged(object sender, EventArgs e) { LabelIdMapping labelID = (LabelIdMapping)lBOrders.SelectedItem; if (labelID == null) { return; } MessagePropertyFilter filter = new MessagePropertyFilter(); filter.SetDefaults(); filter.Priority = true; mqOrderQueue.MessageReadPropertyFilter = filter; System.Messaging.Message message = mqOrderQueue.PeekById(labelID.Id); if (message.Body is CDOrder) { if (message.Priority > MessagePriority.Normal) { lblFast.Visible = true; } else { lblFast.Visible = false; } CDOrder cdOrder = message.Body as CDOrder; tBCDTitle.Text = cdOrder.Product.Title; tBCount.Text = cdOrder.Quantity.ToString(); tBCompany.Text = cdOrder.Customer.Company; tBContact.Text = cdOrder.Customer.Contact; tBSent.Text = cdOrder.OrderTime.ToString("f"); btnProcess.Enabled = true; } else { MessageBox.Show("The selected Item is not a book order"); } }
/// <summary> /// Thread function to peek at the messages in the Queue /// Adds newly arrived Orders in the message queue to the ListBox /// </summary> protected void PeekMessages() { MessageEnumerator messageEnum = mqOrderQueue.GetMessageEnumerator2(); //We keep track of Messages in List box already ordersRetrieved = new ArrayList(); //The MessageEnumerator walks through the messages in the queue //MoveNext is set to a 4 hour time-out if no messages are in the queue while (messageEnum.MoveNext(new TimeSpan(4, 0, 0))) { LabelIdMapping labelID = new LabelIdMapping(messageEnum.Current.Label, messageEnum.Current.Id); if (!ordersRetrieved.Contains(messageEnum.Current.Id)) { // lBOrders.Items.Add(labelID); this.lBOrders.Invoke(new AddListBoxDelegate(AddListBox), labelID); } this.ordersRetrieved.Add(messageEnum.Current.Id); } }
private void btnProcess_Click(object sender, EventArgs e) { //The LabelIdMapping helps to map the Label of a message with the message Id. //This enables each message to be uniquely identified LabelIdMapping labelID = (LabelIdMapping)lBOrders.SelectedItem; System.Messaging.Message message = mqOrderQueue.ReceiveById(labelID.Id); lBOrders.Items.Remove(labelID); lBOrders.SelectedIndex = -1; btnProcess.Enabled = false; System.Messaging.Message response = new System.Messaging.Message(); CDOrder ackOrder = message.Body as CDOrder; if (null != ackOrder) { ackOrder.OrderTime = DateTime.Now; response.Body = ackOrder; response.Label = message.Label; response.CorrelationId = message.Id; message.ResponseQueue.Send(response); tBCDTitle.Text = String.Empty; tBCount.Text = String.Empty; tBCompany.Text = String.Empty; tBContact.Text = String.Empty; tBSent.Text = String.Empty; MessageBox.Show("The order was shipped"); } else { MessageBox.Show("There is an unexpected item in the Queue"); } }
private void listOrders_SelectionChanged(object sender, RoutedEventArgs e) { LabelIdMapping labelId = listOrders.SelectedItem as LabelIdMapping; if (labelId == null) { return; } orderQueue.MessageReadPropertyFilter.Priority = true; Message message = orderQueue.PeekById(labelId.Id); CourseOrder order = message.Body as CourseOrder; if (order != null) { textCourse.Text = order.Course.Title; textCompany.Text = order.Customer.Company; textContact.Text = order.Customer.Contact; buttonProcessOrder.IsEnabled = true; if (message.Priority > MessagePriority.Normal) { labelPriority.Visibility = Visibility.Visible; } else { labelPriority.Visibility = Visibility.Hidden; } } else { MessageBox.Show("The selected item is not a course order", "Course Order Receiver", MessageBoxButton.OK, MessageBoxImage.Warning); } }
/// <summary> /// Function to Add incoming CD Orders to the ListBox /// </summary> private void AddListBox(LabelIdMapping labelID) { lBOrders.Items.Add(labelID); }
private void AddListItem(LabelIdMapping labelIdMapping) { listOrders.Items.Add(labelIdMapping); }