/* This function runs in a thread and will remain alive until all of the airline threads * have ended. The function checks whether or not a price drop event has occured by * checking the value of 'priceDropOccured'. If a price drop occurs then this function * creates an OrderObject and sends it to the MultiCellBuffer. */ public void runAgency() { // Run the thread while the airline thread is still alive. while(airline.IsAlive) { if(priceDropOccured) { // Get the previous price and new price (used for calculating ticket need) int previousPrice = ((PriceDropEventArgs)currentEventArgs).getPrevious(); int lowPrice = ((PriceDropEventArgs)currentEventArgs).getLow(); int ticketNeed = calculateTicketNeed(previousPrice, lowPrice); OrderObject order = new OrderObject(agencyName, generateCreditNo(), ticketNeed, lowPrice); string encodedOrderString= Encoder.encodeOrder(order); lock (buffer) { buffer.setOneCell(encodedOrderString); } // Reset the priceDropOccured data member once it's been handeled. priceDropOccured = false; } } }
public static string encodeOrder(OrderObject order) { string encodedOrderString = string.Format("{0}.{1}.{2}.{3}", order.getId(), order.getCardNo(), order.getAmount(), order.getUnitPrice()); return encodedOrderString; }