public void setOneCell(String s)
                {
                    try
                    {
                        sembuffersync.WaitOne(3);//If semaphore is zero then wait until it becomes non zero
                        lock (queue)
                        {
                            //Console.WriteLine("Entered lock : ");
                            queue.EnqueueOne(s);

                            // Console.WriteLine("Enqued successfully : ");

                            //Implement an enqueue
                            //Once one cell is set break out of the loop and not to set all other empty cells.
                        }
                        string      valtobepassed = getOneCell();
                        ChickenFarm order         = new ChickenFarm();
                        order.GetOrderfromBuffer(valtobepassed);

                        //need to update the CellArray's empty position with the incoming string from the ChickenFarm/Retailer
                        // Call setOneCell and getOneCell methods
                    }
                    catch (Exception ex)
                    {
                        //Console.WriteLine(ex.Message);
                    }
                }
            //a function call to decoder to convert the string recieved from multicellbuffer to object.
            //for each order we have a new thread from order processing class to process the order based on the current price.
            //Counter variable count, when count = 10 chicken farm terminates.

            public void farmerFunc()
            {
                while (count < 10)
                {
                    int price = PricingModel();
                    Thread.Sleep(500);
                    ChickenFarm.changePrice(price);
                }
            }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //  Buffer between server and client
            MultiCellBuffer buffer = new MultiCellBuffer(3);

            ChickenFarm c = new ChickenFarm(buffer);                   //  Give buffer and P value (optional) to server program
            Retailer    r = new Retailer(c.getSessionToken(), buffer); //  Give server session token and buffer to client program


            c.priceCut    += new priceCutEvent(r.UpdatePrice);
            r.orderPlaced += new orderPlacedEvent(c.ProcessOrder);
            OrderProcessing.processingDone += new orderProcessedEvent(r.OrderProcessed);

            //  Start Threads
            r.StartRetailers(5);
            c.StartServer();
        }
                public void retailerFunc()
                {
                    Thread.Sleep(500);
                    ChickenFarm chicken    = new ChickenFarm();
                    OrderClass  ob         = new OrderClass();
                    int         senderId   = Convert.ToInt32(Thread.CurrentThread.Name);
                    int         cardNumber = rng.Next(5000, 7000);
                    int         amount     = rng.Next(50, 100);

                    ob.setSenderId(senderId);
                    ob.setCardNo(cardNumber);
                    ob.setAmount(amount);

                    //Now we should send this object to the encoder to convert into string
                    String          Encoder_result = Encoder(ob);
                    MultiCellBuffer cell_order     = new MultiCellBuffer();

                    cell_order.setOneCell(Encoder_result);
                }
 static void Main(string[] args)
 {
     try
     {
         //create buffer classes, instantiate objects, create and start threads
         ChickenFarm chicken = new ChickenFarm();
         Thread      farmer  = new Thread(new ThreadStart(chicken.farmerFunc));
         farmer.Start();
         Retailer chickenstore = new Retailer();
         ChickenFarm.priceCut += new priceCutEvent(chickenstore.chickenOnSale);
         Thread[] retailers = new Thread[5];
         for (int i = 0; i < 5; i++)
         {
             retailers[i]      = new Thread(new ThreadStart(chickenstore.retailerFunc));
             retailers[i].Name = (i + 1).ToString();
             retailers[i].Start();
         }
     }
     catch (Exception ex)
     {
         // Console.WriteLine(ex.Message);
     }
 }
 public void FarmSomeChickensTest()
 {
     var target = new ChickenFarm(); // TODO: Initialize to an appropriate value
     target.FarmSomeChickens();
     Assert.Inconclusive("A method that does not return a value cannot be verified.");
 }