public void processOrder() { encryptionServiceClient = new EncryptionService.ServiceClient(); bankServiceClient = new BankService.Service1Client(); String validatedCardDetails; if ((hotel.NoOfRoom - order.Amount) >= 0) { String encryptedCardNo = encryptionServiceClient.Encrypt(order.CardNo); try { validatedCardDetails = bankServiceClient.validateCard(encryptedCardNo); } catch (Exception exp) { validatedCardDetails = "Card number not verified"; Console.WriteLine("Card number not verified"); } if (validatedCardDetails.Equals("valid")) { hotel.NoOfRoom = hotel.NoOfRoom - order.Amount; order.OrderPrice = hotel.getPrice() * order.Amount + hotel.getTaxPercentage() * hotel.getPrice() * order.Amount + hotel.getLocationCharge(); Console.WriteLine("Order Processed:" + counter + " || Ordering Parties: " + order.SenderId + "-> " + order.ReceiverId + " || No of rooms requested:" + order.Amount + "|| Price charged:" + order.OrderPrice + " || Rooms remaining:" + hotel.NoOfRoom); counter++; } else { Console.WriteLine("Order Rejected:" + counter + " || Ordering Parties: " + order.SenderId + "-> " + order.ReceiverId + "|| No of rooms requested:" + order.Amount + "|| Reason: Rooms not available"); counter++; } } else { Console.WriteLine("Order Rejected:" + counter + " || Ordering Parties: " + order.SenderId + "-> " + order.ReceiverId + "|| No of rooms requested:" + order.Amount + "|| Reason: Rooms not available"); counter++; } Boolean b = true; while (b) { if (Program.processedOrder.getBuffer(order.SenderId) == null) { lock (Program.processedOrder) { Program.processedOrder.setBuffer(order.SenderId + "and" + order.ReceiverId); b = false; } } } }
public void run() { while (true) { Thread.Sleep(500); //Aborting Threads after the hotel supplier thread has stopped running if (totalRuns == maxRuns) { manualReset.Set(); agencyCount++; Thread.CurrentThread.Abort(); } manualReset.WaitOne(); if (totalRuns == maxRuns) { agencyCount++; if (agencyCount == 4) { try { Console.WriteLine("Program ran successfully"); Console.ReadLine(); } catch { } } Thread.CurrentThread.Abort(); } bankServiceClient = new BankService.Service1Client(); OrderClass order = new OrderClass(); order.ReceiverId = supplierName; order.SenderId = Thread.CurrentThread.Name; // order amount based on the previos price and the new price if(previousPrice<newPrice) { order.Amount = random.Next(1, 10); } else { order.Amount = random.Next(10, 15); } while ( order.CardNo == null || "".Equals(order.CardNo)) { order.CardNo = Convert.ToString(bankServiceClient.getCard()); if(order.CardNo.Equals('0')) { Console.WriteLine("Card will be issued after checking the available card numbers"); } } //placing order in the buffer after encoding Boolean b = true; DateTime time = DateTime.Now; while (b) { for (int i = 0; i < 3; i++) { if (Program.buffer[i].getBuffer("temp") == null) { lock (Program.buffer[i]) { time = DateTime.Now; Program.buffer[i].setBuffer(new Encoder().encode(order)); b = false; } break; } } } //checking the processed order; b = true; Thread.Sleep(500); string orderString = order.SenderId + "and" + order.ReceiverId; while (b) { if (Program.processedOrder.getBuffer(orderString) != null) { Console.WriteLine("Time taken to process the order is :" + (DateTime.Now - time).TotalSeconds + " seconds"); b = false; } else Thread.Sleep(500); } manualReset.Reset(); totalRuns++; } }