Esempio n. 1
0
 protected override void RadiObradu()
 {
     while (radi)
     {
         StranaOglasa stranaOglasa = procitaneStrane.Uzmi() as StranaOglasa;
         if (stranaOglasa != null)
         {
             Common.Model.Vehicle.Automobile auto = null;
             try
             {
                 if (stranaOglasa.Procitaj())
                 {
                     auto = stranaOglasa.Automobil;
                     if (auto != null)
                     {
                         autoDB.Save(auto);
                         Dnevnik.PisiSaImenomThreda("Dodat oglas u bazu: " + auto.ToString());
                     }
                 }
                 else
                 {
                     Dnevnik.PisiSaThredomGreska("Nisam uspeo da pročitam stranu. URL: " + stranaOglasa.Adresa);
                 }
             }
             catch (Exception ex)
             {
                 EventLogger.WriteEventError(string.Format("Nisam uspeo da dodam automobil (br.ogl.{0}) u bazu.\nURL: {1}", auto.BrojOglasa, stranaOglasa.Adresa), ex);
             }
         }
         else
         {
             EventLogger.WriteEventWarning("Dobijena null vrednost za stranu iz liste procitanih strana. Proveri zasto.");
         }
     }
 }
Esempio n. 2
0
 public void Stop()
 {
     Dnevnik.PisiSaImenomThreda("Zaustavljanje threadova.");
     try
     {
         for (int i = 0; i < pisacZaglavlja.Length; i++)
         {
             pisacZaglavlja[i].Zaustavi();
         }
         for (int i = 0; i < citacZaglavlja.Length; i++)
         {
             citacZaglavlja[i].Zaustavi();
         }
         for (int i = 0; i < citacOglasa.Length; i++)
         {
             citacOglasa[i].Zaustavi();
         }
         Procode.PolovniAutomobili.Data.Provider.DataInstance.Data.Close();
         Dnevnik.PisiSaImenomThreda("Glavna obrada zaustavljena. Poslate komande za zaustavljanje.");
     }
     catch (Exception ex)
     {
         EventLogger.WriteEventError("Glavna obrada nije uspešno zaustavljena.", ex);
     }
 }
Esempio n. 3
0
        public Strana Uzmi()
        {
            Strana s = null;

            lock (lokerListe)
            {
                while (Lista.Count == 0)
                {
                    lock (lokerRadi)
                    {
                        if (!radi)
                        {
                            return(null);
                        }
                    }
                    Dnevnik.PisiSaImenomThreda("Uspavan. Lista je prazna. Elemenata " + Lista.Count + ".");
                    Monitor.Wait(lokerListe);
                    Dnevnik.PisiSaImenomThreda("Probuđen. Lista je bila prazna. Elemenata " + Lista.Count + ".");
                }
                s = (Strana)Lista.Dequeue();
                switch (Common.Korisno.Korisno.disciplina)
                {
                case Common.Korisno.Korisno.Disciplina.dPulse:
                    Dnevnik.PisiSaImenomThreda("Budim sledećeg. Uzeo element. Elemenata " + Lista.Count + ".");
                    Monitor.Pulse(lokerListe);
                    break;

                case Common.Korisno.Korisno.Disciplina.dPulseAll:
                    Dnevnik.PisiSaImenomThreda("Budim sve. Uzeo element. Elemenata " + Lista.Count + ".");
                    Monitor.PulseAll(lokerListe);
                    break;
                }
                return(s);
            }
        }
Esempio n. 4
0
        public void Dodaj(Strana strana)
        {
            lock (lokerListe)
            {
                while (Lista.Count == velicina) // provera da li je lista puna
                {
                    lock (lokerRadi)
                    {
                        if (!radi)
                        {
                            return;
                        }
                    }
                    Dnevnik.PisiSaImenomThreda("Uspavan. Lista puna. Elemenata " + Lista.Count + ".");
                    Monitor.Wait(lokerListe);
                    Dnevnik.PisiSaImenomThreda("Probuđen. Lista je bila puna. Elemenata " + Lista.Count + ".");
                }
                Lista.Enqueue(strana);
                switch (Common.Korisno.Korisno.disciplina)
                {
                case Common.Korisno.Korisno.Disciplina.dPulse:
                    Dnevnik.PisiSaImenomThreda("Budim slecećeg. Dodao element. Elemenata " + Lista.Count + ".");
                    Monitor.Pulse(lokerListe);
                    break;

                case Common.Korisno.Korisno.Disciplina.dPulseAll:
                    Dnevnik.PisiSaImenomThreda("Budim sve. Dodao element. Elemenata " + Lista.Count + ".");
                    Monitor.PulseAll(lokerListe);
                    break;
                }
            }
        }
Esempio n. 5
0
        private void Obrada()
        {
            Dnevnik.PisiSaImenomThreda("Obrada pokrenuta.");
            try
            {
                while (radi)
                {
                    ProcitajZaglavlja();

                    // malo logovanja
                    string porukaOZavrsetku = String.Format("Thread {0} je završio sa dohvatanjem zaglavlja. Čekam da završe ostali pisci zaglavlja.", Pisac.Name);
                    EventLogger.WriteEventInfo(porukaOZavrsetku);
                    Dnevnik.PisiSaImenomThreda(porukaOZavrsetku);

                    // sinhronizacija na barijeri
                    if (barijera.PisacZaglavljaZavrsio() == 0)
                    {
                        brojacStranaZaglavlja.Ponisti();
                    }

                    /*if (Common.BrojacPisacaZaglavlja.BrojAktivnihPisacaZaglavlja == 0)
                     * {
                     *  brojacStranaZaglavlja.Ponisti();
                     * }*/
                }
            }
            catch (Exception ex)
            {
                EventLogger.WriteEventError("Greska pri pokretanju obrade zaglavlja", ex);
            }
            Dnevnik.PisiSaImenomThreda("Obrada završena.");
            Dnevnik.Isprazni();
        }
Esempio n. 6
0
 /// <summary>
 /// Starter procedura za Thread. Ona poziva proceduru RadiObradu u kojoj se izvrsava petlja obrade.
 /// </summary>
 private void Obrada()
 {
     Dnevnik.PisiSaImenomThreda("Obrada pokrenuta.");
     try
     {
         RadiObradu();
     }
     catch (Exception ex)
     {
         Common.EventLogger.WriteEventError("Greska u RadiObradu().", ex);
     }
     Dnevnik.PisiSaThredom("Obrada završena.", true);
 }
Esempio n. 7
0
        protected override void OnStop()
        {
            obrada.Stop();
            obrada = null;

            string poruka = "Servis je zaustavljen.";

            EventLogger.WriteEventInfo(poruka);
            Dnevnik.PisiSaImenomThreda(poruka);

            Dnevnik.Isprazni();
            base.OnStop();
        }
Esempio n. 8
0
 public void DodajMem(Automobile automobil, string threadName)
 {
     lock (lokerListeAutomobila)
     {
         Lista.Add(automobil);
         TimeSpan ts = DateTime.Now.Subtract(vremeSnimanja);
         if (ts.Minutes >= limitSnimanjeMinuti && Lista.Count >= limitSnimanjeRedovi)
         {
             SnimiCSV("c:\\temp\\" + threadName + "_" + DateTime.Now.ToString().Replace(":", "_") + ".csv");
             vremeSnimanja = DateTime.Now;
             Dnevnik.PisiSaImenomThreda("Snimljen CSV.");
         }
     }
 }
Esempio n. 9
0
 public void NeRadi(string koJeZvao)
 {
     lock (lokerRadi)
     {
         if (radi)
         {
             radi = false;
             lock (lokerListe)
             {
                 Dnevnik.PisiSaImenomThreda(string.Format("Budim sve! (zaustavljanje-zaglavlja) /{0}/", koJeZvao));
                 Monitor.PulseAll(lokerListe);
             }
         }
     }
 }
Esempio n. 10
0
        protected override void OnStart(string[] args)
        {
            base.OnStart(args); // Da li je ovo potrebno?
            //pozovi thread
            obrada = new GlavnaObrada(null);
            try
            {
                string poruka = "Pokrecem servis.";
                //EventLogger.WriteEventInfo(poruka);
                Dnevnik.PisiSaImenomThreda(poruka);

                obrada.Start();

                poruka = "Servis je pokrenut.\n" + obrada.ToString();
                EventLogger.WriteEventInfo(poruka);
                Dnevnik.PisiSaImenomThreda(poruka);
            }
            catch (Exception ex)
            {
                string poruka = "Nisam uspeo da pokrenem servis.";
                EventLogger.WriteEventError(poruka, ex);
                Dnevnik.PisiSaThredomGreska(poruka);
            }
        }
 protected override void RadiObradu()
 {
     while (radi)
     {
         Strana strana = procitaneStrane.Uzmi(); // base property, strane zaglavlja.
         //Console.WriteLine(strana.Adresa); //
         if (strana != null)
         {
             List <string> adreseOglasa = strana.DajAdreseOglasa();
             if (adreseOglasa != null)
             {
                 if (adreseOglasa.Count != 0)
                 {
                     foreach (string adresa in adreseOglasa)
                     {
                         Strana stranaOglasa = new StranaOglasa(adresa);
                         procitaneStraneOglasa.Dodaj(stranaOglasa);
                         if (!radi)
                         {
                             return;
                         }
                     }
                     Dnevnik.PisiSaImenomThreda("Obrađeno je zaglavlje: " + strana.Adresa);
                 }
                 else
                 {
                     brojacStranaZaglavlja.Ponisti();
                 }
             }
             else
             {
                 Dnevnik.PisiSaThredomGreska("Nije obrađena strana zaglavlja: " + strana.Adresa);
             }
         }
     }
 }
Esempio n. 12
0
        private void ProcitajZaglavlja()
        {
            Common.BrojacPisacaZaglavlja.UvecajBrojAktivnihPisacaZaglavlja();
            uint   i;
            string adresa;

            i = brojacStranaZaglavlja.Sledeci();
            try
            {
                adresa = DajAdresuZaglavlja(i);
                Common.Http.Strana strana = new Common.Http.StranaZaglavlja(adresa);
                while (strana.Procitaj())
                {
                    procitaneStrane.Dodaj(strana);  // dodaje u deljenu listu u memoriju
                    if (!radi)
                    {
                        return;
                    }
                    i      = brojacStranaZaglavlja.Sledeci();
                    adresa = DajAdresuZaglavlja(i);
                    strana = new Common.Http.StranaZaglavlja(adresa);
                }
                Dnevnik.PisiSaImenomThreda("Više nema zaglavlja za čitanje.");
                //brojacStranaZaglavlja.Ponisti();   // ponistavam brojac da krene iz pocetka ???????
            }
            catch (Exception ex)
            {
                string porukaGreske = "Citac zaglavlja nije uspesno zavrsio.";
                EventLogger.WriteEventError(porukaGreske, ex);
                Dnevnik.PisiSaImenomThreda(porukaGreske);
            }
            finally
            {
                Common.BrojacPisacaZaglavlja.SmanjiBrojAktivnihPisacaZaglavlja();
            }
        }