Ejemplo n.º 1
0
        public const int AGENCY_COUNT = 4;               //creating a constant variable for the number of travel agency


        static void Main(string[] args)
        {
            Hotel[]  hotels = new Hotel[HOTEL_COUNT];                                    // creating the object of the hotel class
            Thread[] hotelThreadsToStart = new Thread[HOTEL_COUNT];                      //creating the thread object of the hotel

            Agency[] agencies             = new Agency[AGENCY_COUNT];                    //creating the object of the travel agency
            Thread[] agencyThreadsToStart = new Thread[AGENCY_COUNT];                    //creating the thread object of the agent

            bankService.Service1Client apply_service = new bankService.Service1Client(); //creating client for bank service

            OrderDispatcher orderDispatcher = new OrderDispatcher();



            Thread orderDispatcherThread = new Thread(orderDispatcher.processOrderQueue);

            //initialising the price cut thread
            for (int i = 0; i < HOTEL_COUNT; i++)
            {
                hotels[i]         = new Hotel();
                hotels[i].HotelId = i;

                Thread hotelPriceCutThread = new Thread(hotels[i].calculateNewRoomRate);
                hotelThreadsToStart[i] = hotelPriceCutThread;
                //creating a delegate for the the OrderDispatcher class
                OrderDispatcher.orderReceivedEvent += new OrderDispatcher.orderEventDelegate(hotels[i].handleOrderReceivedEvent);
            }
            //initialising the bank service thread connecting to the travel agency
            for (int i = 0; i < AGENCY_COUNT; i++)
            {
                agencies[i]          = new Agency();
                agencies[i].AgencyId = i;

                int ccNumber = apply_service.applyCCNumber(); //providing agency with a new credit card number by calling bank service
                agencies[i].AgencyCardNo = ccNumber;

                agencyThreadsToStart[i] = new Thread(agencies[i].agencyThreadMain);

                Hotel.priceCutEvent       += new Hotel.hotelEventDelegate(agencies[i].handlePriceCutEvent);
                Hotel.orderCompletedEvent += new Hotel.orderCompletedEventDelegate(agencies[i].handleOrederCompletedEvent);
            }
            //starting the travel agency thread
            for (int i = 0; i < AGENCY_COUNT; i++)
            {
                agencyThreadsToStart[i].Start();
            }


            orderDispatcherThread.Start();
            //starting the hotel threads
            for (int i = 0; i < HOTEL_COUNT; i++)
            {
                hotelThreadsToStart[i].Start();
            }
        }
Ejemplo n.º 2
0
        public static Buffer orderBuffer = new Buffer(); //creating an object of the Buffer class

        #endregion Fields

        #region Methods

        static void Main(string[] args)
        {
            Hotel[] hotels = new Hotel[HOTEL_COUNT];  // creating the object of the hotel class
            Thread[] hotelThreadsToStart = new Thread[HOTEL_COUNT]; //creating the thread object of the hotel

            Agency[] agencies = new Agency[AGENCY_COUNT]; //creating the object of the travel agency
            Thread[] agencyThreadsToStart = new Thread[AGENCY_COUNT];//creating the thread object of the agent

            bankService.Service1Client apply_service = new bankService.Service1Client(); //creating client for bank service

            OrderDispatcher orderDispatcher = new OrderDispatcher();

            Thread orderDispatcherThread = new Thread(orderDispatcher.processOrderQueue);

            //initialising the price cut thread
            for (int i = 0; i < HOTEL_COUNT; i++)
            {
                hotels[i] = new Hotel();
                hotels[i].HotelId = i;

                Thread hotelPriceCutThread = new Thread(hotels[i].calculateNewRoomRate);
                hotelThreadsToStart[i] = hotelPriceCutThread;
                //creating a delegate for the the OrderDispatcher class
                OrderDispatcher.orderReceivedEvent += new OrderDispatcher.orderEventDelegate(hotels[i].handleOrderReceivedEvent);

            }
            //initialising the bank service thread connecting to the travel agency
            for (int i = 0; i < AGENCY_COUNT; i++)
            {
                agencies[i] = new Agency();
                agencies[i].AgencyId = i;

                int ccNumber = apply_service.applyCCNumber(); //providing agency with a new credit card number by calling bank service
                agencies[i].AgencyCardNo = ccNumber;

                agencyThreadsToStart[i] = new Thread(agencies[i].agencyThreadMain);

                Hotel.priceCutEvent += new Hotel.hotelEventDelegate(agencies[i].handlePriceCutEvent);
                Hotel.orderCompletedEvent += new Hotel.orderCompletedEventDelegate(agencies[i].handleOrederCompletedEvent);
            }
            //starting the travel agency thread
            for (int i = 0; i < AGENCY_COUNT; i++)
            {
                agencyThreadsToStart[i].Start();
            }

            orderDispatcherThread.Start();
            //starting the hotel threads
            for (int i = 0; i < HOTEL_COUNT; i++)
            {
                hotelThreadsToStart[i].Start();
            }
        }