示例#1
0
        public void Prosledi(ReaderCACD r1, ReaderCCCL r2, ReaderCSCM r3, ReaderCCCS r4, Logger l)
        {
            lock (obj)
            {
                int granica = Cd.Count;
                for (int i = 0; i < granica; i++)
                {
                    if (Cd[i].Dataset == DataSet.DataSetSpisak.CACD)
                    {
                        for (int j = 0; j < granica; j++)
                        {
                            if (Cd[j].Dataset == DataSet.DataSetSpisak.CACD && Cd[i].Hc.ReceiverProperty[0].Code != Cd[j].Hc.ReceiverProperty[0].Code)
                            {
                                Tuple <Podatak, Podatak> t = new Tuple <Podatak, Podatak>(Cd[i].Hc.ReceiverProperty[0], Cd[j].Hc.ReceiverProperty[0]);
                                r1.Buffer.Add(t);
                                Cd.Remove(Cd[i]);
                                Cd.Remove(Cd[j - 1]);
                                granica = granica - 2;
                            }
                        }
                    }

                    else if (Cd[i].Dataset == DataSet.DataSetSpisak.CCCL)
                    {
                        for (int j = 0; j < granica; j++)
                        {
                            if (Cd[j].Dataset == DataSet.DataSetSpisak.CCCL && Cd[i].Hc.ReceiverProperty[0].Code != Cd[j].Hc.ReceiverProperty[0].Code)
                            {
                                Tuple <Podatak, Podatak> t = new Tuple <Podatak, Podatak>(Cd[i].Hc.ReceiverProperty[0], Cd[j].Hc.ReceiverProperty[0]);
                                r2.Buffer.Add(t);
                                Cd.Remove(Cd[i]);
                                Cd.Remove(Cd[j - 1]);
                                granica = granica - 2;
                            }
                        }
                    }
                    else if (Cd[i].Dataset == DataSet.DataSetSpisak.CSCM)
                    {
                        for (int j = 0; j < granica; j++)
                        {
                            if (Cd[j].Dataset == DataSet.DataSetSpisak.CSCM && Cd[i].Hc.ReceiverProperty[0].Code != Cd[j].Hc.ReceiverProperty[0].Code)
                            {
                                Tuple <Podatak, Podatak> t = new Tuple <Podatak, Podatak>(Cd[i].Hc.ReceiverProperty[0], Cd[j].Hc.ReceiverProperty[0]);
                                r3.Buffer.Add(t);
                                Cd.Remove(Cd[i]);
                                Cd.Remove(Cd[j - 1]);
                                granica = granica - 2;
                            }
                        }
                    }
                    else
                    {
                        for (int j = 0; j < granica; j++)
                        {
                            if (Cd[j].Dataset == DataSet.DataSetSpisak.CCCS && Cd[i].Hc.ReceiverProperty[0].Code != Cd[j].Hc.ReceiverProperty[0].Code)
                            {
                                Tuple <Podatak, Podatak> t = new Tuple <Podatak, Podatak>(Cd[i].Hc.ReceiverProperty[0], Cd[j].Hc.ReceiverProperty[0]);
                                r4.Buffer.Add(t);
                                Cd.Remove(Cd[i]);
                                Cd.Remove(Cd[j - 1]);
                                granica = granica - 2;
                            }
                        }
                    }
                }
                string s = String.Format("{0}: Replikator Receiver prosledjuje\n", DateTime.Now);
                l.Upisi(s);
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            Logger             l     = new Logger();
            Podatak            p     = new Podatak();
            Writer             w     = new Writer();
            ReplicatorSender   rs    = new ReplicatorSender();
            ReplicatorReceiver rr    = new ReplicatorReceiver();
            ReaderCACD         rCACD = new ReaderCACD();
            ReaderCCCL         rCCCL = new ReaderCCCL();
            ReaderCCCS         rCCCS = new ReaderCCCS();
            ReaderCSCM         rCSCM = new ReaderCSCM();
            Thread             t1;

            t1 = new Thread(() =>
            {
                while (true)
                {
                    lock (obj)
                    {
                        Array values  = Enum.GetValues(typeof(Code.CodeSpisak));
                        Random random = new Random();
                        Code.CodeSpisak randomCode = (Code.CodeSpisak)values.GetValue(random.Next(values.Length));
                        p.Code  = randomCode;
                        p.Value = random.Next(0, 1000);
                        w.P     = p;
                        w.Prosledi(rs, l);
                        rs.Prosledi(rr, l);
                        rr.Razvrstaj(l);
                        rr.Prosledi(rCACD, rCCCL, rCSCM, rCCCS, l);
                        rCACD.UpisiUBazu(l);
                        rCCCL.Deadband(l);
                        rCCCL.UpisiUBazu(l);
                        rCSCM.Deadband(l);
                        rCSCM.UpisiUBazu(l);
                        rCCCS.Deadband(l);
                        rCCCS.UpisiUBazu(l);
                        Thread.Sleep(2000);
                    }
                }
            });
            t1.IsBackground = true;
            t1.Start();
            //t2 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rs.Prosledi(rr, l);
            //    }
            //});
            //t3 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rr.Razvrstaj(l);
            //    }
            //});
            //t4 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rr.Prosledi(rCACD, rCCCL, rCSCM, rCCCS, l);
            //    }
            //});
            //t5 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rCACD.UpisiUBazu(l);
            //    }
            //});
            //t6 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rCCCL.UpisiUBazu(l);
            //    }
            //});
            //t7 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rCSCM.UpisiUBazu(l);
            //    }
            //});
            //t8 = new Thread(() =>
            //{
            //    while (true)
            //    {
            //        rCCCS.UpisiUBazu(l);
            //    }
            //});
            //t1.Start();
            //t2.Start();
            //t3.Start();
            //t4.Start();
            //t5.Start();
            //t6.Start();
            //t7.Start();
            //t8.Start();
            while (true)
            {
                Console.WriteLine("1. Unesite vrednost");
                Console.WriteLine("2. Iscitaj iz baze");
                Console.WriteLine("3. Exit");
                string str = Console.ReadLine();
                if (str == "1")
                {
                    lock (obj)
                    {
                        Console.WriteLine("Unesite vrednost:");
                        string a = Console.ReadLine();

                        p.Value = Convert.ToInt32(a);

                        Console.WriteLine("Izaberi code: \n");
                        Console.WriteLine("1. CODE_ANALOG\n");
                        Console.WriteLine("2. CODE_DIGITAL\n");
                        Console.WriteLine("3. CODE_CUSTOM\n");
                        Console.WriteLine("4. CODE_LIMITSET\n");
                        Console.WriteLine("5. CODE_SINGLENOE\n");
                        Console.WriteLine("6. CODE_MULTIPLENODE\n");
                        Console.WriteLine("7. CODE_CONSUMER\n");
                        Console.WriteLine("8. CODE_SOURCE\n");
                        Console.WriteLine("Za izlaz pritisni x");
                        a = Console.ReadLine();

                        switch (a)
                        {
                        case "1":
                            p.Code = Code.CodeSpisak.CODE_ANALOG;
                            break;

                        case "2":
                            p.Code = Code.CodeSpisak.CODE_DIGITAL;
                            break;

                        case "3":
                            p.Code = Code.CodeSpisak.CODE_CUSTOM;
                            break;

                        case "4":
                            p.Code = Code.CodeSpisak.CODE_LIMITSET;
                            break;

                        case "5":
                            p.Code = Code.CodeSpisak.CODE_SINGLENOE;
                            break;

                        case "6":
                            p.Code = Code.CodeSpisak.CODE_MULTIPLENODE;
                            break;

                        case "7":
                            p.Code = Code.CodeSpisak.CODE_CONSUMER;
                            break;

                        case "8":
                            p.Code = Code.CodeSpisak.CODE_SOURCE;
                            break;

                        case "x":
                            return;

                        default:
                            break;
                        }
                        w.P = p;
                        w.Prosledi(rs, l);
                        rs.Prosledi(rr, l);
                        rr.Razvrstaj(l);
                        rr.Prosledi(rCACD, rCCCL, rCSCM, rCCCS, l);
                        rCACD.UpisiUBazu(l);
                        rCCCL.Deadband(l);
                        rCCCL.UpisiUBazu(l);
                        rCSCM.Deadband(l);
                        rCSCM.UpisiUBazu(l);
                        rCCCS.Deadband(l);
                        rCCCS.UpisiUBazu(l);
                    }
                }
                else if (str == "2")
                {
                    lock (obj)
                    {
                        rCACD.IscitajIzBaze(l);
                        rCCCL.IscitajIzBaze(l);
                        rCSCM.IscitajIzBaze(l);
                        rCCCS.IscitajIzBaze(l);
                    }
                }
                else if (str == "3")
                {
                    lock (obj)
                    {
                        return;
                    }
                }
            }
        }