Exemple #1
0
        public Przeplyw()
        {
            ld = new Load();
               // KontrolaParzystosci kp = new KontrolaParzystosci();
            //Blad bl = new Blad();
            wejscie =ld.pobierzPaskiZPliku(fileName);
            //wejscie = ld.paskiWejsciowe;/

            if ((RaiDSyM.typRaida==0)||(RaiDSyM.typRaida==1))
            {
                dysk0=new List<byte[]>();
                dysk1=new List<byte[]>();
            }
            if ((RaiDSyM.typRaida == 0) || (RaiDSyM.typRaida == 1) || (RaiDSyM.typRaida == 3))
            {
                dysk0 = new List<byte[]>();
                dysk1 = new List<byte[]>();
                dysk2 = new List<byte[]>();
                dysk3 = new List<byte[]>();

            }

            //rds = new RaiDSyM();
            Thread thread = new Thread(Run);
            thread.IsBackground = true;
            thread.Start();
        }
Exemple #2
0
        private void btnPoziomRaid_Click(object sender, EventArgs e)
        {
            bool dobrze = false;

            try
            {
                typRaida = System.Int32.Parse(txtBoxPoziomRaid.Text);

            }
            catch (Exception exp)
            {
                MessageBox.Show("Wprowadzono Błąd przy wprowadzaniu Poziomu RAid");
                dobrze = true;
            }

            if ((typRaida == 1) || (typRaida == 0) || (typRaida == 3))
            {
                pracuj = true;
                txtBoxPoziomRaid.Visible = false;
                btnPoziomRaid.Visible = false;
                lblPoziomRaid.Visible = false;
                gBoxBledy.Visible = true;

                d = new Dysk();
                p = new Przeplyw();
                pasek = new Pasek();
                pasek1 = new Pasek();
                l = new Load();
                l.zapis("Program Włączono");

                if (typRaida == 0)
                {
                    rbWielokrotne.Visible = false;
                    rbPojedyncze.Visible = false;
                }
                if (typRaida == 1)
                {
                    lblDlaRaid0.Text = "Dla Raid1 można wstrzykiwać błędy tolerowane przez układ, \n"+
                        " lub błędy przekraczające zakres tolerancji ";
                }
                if (typRaida == 3)
                {
                    lblDlaRaid0.Text = "Dla Raid3 można wstrzykiwać błędy tolerowane przez układ, \n" +
                        " lub błędy przekraczające zakres tolerancji ";
                }

            }
            else if (!dobrze)
                MessageBox.Show("Wprowadzono Błąd przy wprowadzaniu Poziomu RAid");
        }
Exemple #3
0
        public static bool sprawdzIstnieniePaska(int nrDysku, int nrPaska, int typRaida)
        {
            Load ld = new Load();

            switch (typRaida)
            {
                case 0:
                    if (nrDysku == 0)
                    {
                        for (int i=0;i<127;i+=2)
                        {
                            if (nrPaska == i)
                            {
                                Przeplyw.blad = true;
                                dalej = true;
                                Przeplyw.paski.ElementAt(nrPaska).kolor = System.Drawing.Color.Red;

                                String komunikat = string.Format("Wystąpił bład w Dysku 0, w pasku {0},"+
                                                                " Zapis został wstrzymany, ponieważ ten błąd uniemożliwia odczyt zapisanych" +
                                                                 " danych w Raid0 (dalszy zapis nie ma sensu)",nrPaska );

                                MessageBox.Show(komunikat,"Błąd przekraczający zakres tolerancji symulowanego układu");
                                ld.zapis(komunikat);

                                break;
                            }
                        }
                    }
                    else if (nrDysku == 1)
                    {
                        for (int i = 1; i < 128; i += 2)
                        {
                            if (nrPaska == i)
                            {
                                Przeplyw.blad = true;
                                dalej = true;
                                Przeplyw.paski.ElementAt(nrPaska).kolor = System.Drawing.Color.Red;

                                String komunikat = string.Format("Wystąpił bład w Dysku 1, w pasku {0}," +
                                                                " Zapis został wstrzymany, ponieważ ten błąd uniemożliwia odczyt zapisanych" +
                                                                 " danych w Raid0 (dalszy zapis nie ma sensu)", nrPaska);

                                MessageBox.Show(komunikat, "Błąd przekraczający zakres tolerancji symulowanego układu");
                                ld.zapis(komunikat);
                                break;
                            }
                        }
                    }
                    break;
                case 1:
                    try
                    {
                        if (RaiDSyM.bladWielokrotny)
                        {
                            for (int i = 0; i < 127; i++)
                            {
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    int dysk=1;
                                    if (i%2==0)
                                        dysk=0;
                                    Przeplyw.paski.ElementAt(i).kolor =System.Drawing.Color.Red;
                                    string komunikat=string.Format("Wystąpił błąd w pasku {0}, w dysku {1}",Przeplyw.paski.ElementAt(i).nrPasku,dysk);
                                    ld.zapis(komunikat);

                                }
                            bladWielokrotny = true;
                            }

                        }

                        else
                        {
                            if (nrDysku == 0)
                            {
                                for (int i = 0; i < 127; i+=2)
                                {
                                    if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                    {
                                        Przeplyw.blad = true;
                                        dalej = true;
                                        Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                        x = Przeplyw.paski.ElementAt(i).x;
                                        y = Przeplyw.paski.ElementAt(i).y;
                                        String komunikat = string.Format("Wystąpił bład w Dysku 0, w pasku {0}," +
                                                                       "Błąd zostanie niebawem naprawiony poprzez skopiowania paska {0} z Dysku 1 do Dysku 0 ", nrPaska);

                                        MessageBox.Show(komunikat, "Błąd naprawialny przez układ, nie  przekraczający zakresu tolerancji symulowanego układu");
                                        ld.zapis(komunikat);
                                        break;
                                    }
                                }
                            }
                            if (nrDysku == 1)
                            {
                                for (int i = 1; i < 127; i += 2)
                                {
                                    if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                    {
                                        Przeplyw.blad = true;
                                        dalej = true;
                                        Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                        x = Przeplyw.paski.ElementAt(i).x;
                                        y = Przeplyw.paski.ElementAt(i).y;
                                        String komunikat = string.Format("Wystąpił bład w Dysku 1, w pasku {0}," +
                                                                                                           "Błąd zostanie niebawem naprawiony poprzez skopiowania paska {0} z Dysku 0 do Dysku 1 ", nrPaska);

                                        MessageBox.Show(komunikat, "Błąd naprawialny przez układ, nie  przekraczający zakresu tolerancji symulowanego układu");
                                        ld.zapis(komunikat);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    { }
                    break;
                case 3:
                    try
                    {

                        if (RaiDSyM.bladWielokrotny)
                        {

                             if (nrDysku == 0)
                        {
                            for (int i = 0; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {

                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    Przeplyw.paski.ElementAt(i+1).kolor = System.Drawing.Color.Red;

                                    string komunikat = string.Format("Wystąpił błąd w dysku 0 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    komunikat = string.Format("Wystąpił błąd w dysku 1 w pasku {0} zawartość paska: null", nrPaska+1);
                                    ld.zapis(komunikat);

                                    bladWielokrotny = true;
                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 1)
                        {
                            for (int i = 1; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {

                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    Przeplyw.paski.ElementAt(i + 1).kolor = System.Drawing.Color.Red;

                                    string komunikat = string.Format("Wystąpił błąd w dysku 1 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    komunikat = string.Format("Wystąpił błąd w dysku 2 w pasku {0} zawartość paska: null", nrPaska + 1);
                                    ld.zapis(komunikat);

                                    bladWielokrotny = true;
                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 2)
                        {
                            for (int i = 2; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    Przeplyw.paski.ElementAt(i + 1).kolor = System.Drawing.Color.Red;

                                    string komunikat = string.Format("Wystąpił błąd w dysku 2 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    komunikat = string.Format("Wystąpił błąd w dysku 3 w pasku {0} zawartość paska: null", nrPaska + 1);
                                    ld.zapis(komunikat);

                                    bladWielokrotny = true;
                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 3)
                        {
                            for (int i = 3; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    Przeplyw.paski.ElementAt(i -1).kolor = System.Drawing.Color.Red;

                                    string komunikat = string.Format("Wystąpił błąd w dysku 3 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    komunikat = string.Format("Wystąpił błąd w dysku 2 w pasku {0} zawartość paska: null", nrPaska*3+2 );
                                    ld.zapis(komunikat);

                                    bladWielokrotny = true;
                                    break;
                                }
                            }
                            }

                        }

                        else
                        {

                        if (nrDysku == 0)
                        {
                            for (int i = 0; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    nrWLiscie = i;
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    x = Przeplyw.paski.ElementAt(i).x;
                                    y = Przeplyw.paski.ElementAt(i).y;

                                    Przeplyw.dysk0.Insert(nrPas, null);  //{2;2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};

                                    string komunikat = string.Format("Wystąpił błąd w dysku 0 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    dalej = true;
                                    Przeplyw.blad = true;
                                    bladDysku = 0;
                                    numPaska = nrPaska;
                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 1)
                        {
                            for (int i = 1; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    nrWLiscie = i;
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    x = Przeplyw.paski.ElementAt(i).x;
                                    y = Przeplyw.paski.ElementAt(i).y;
                                    Przeplyw.dysk1.Insert(nrPas, null);  //{2;2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
                                    string komunikat = string.Format("Wystąpił błąd w dysku 1 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    dalej = true;
                                    Przeplyw.blad = true;
                                    bladDysku = 1;
                                    numPaska = nrPaska;

                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 2)
                        {
                            for (int i = 2; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    nrWLiscie = i;
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    x = Przeplyw.paski.ElementAt(i).x;
                                    y = Przeplyw.paski.ElementAt(i).y;
                                    Przeplyw.dysk2.Insert(nrPas, null);  //{2;2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
                                    string komunikat = string.Format("Wystąpił błąd w dysku 2 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    dalej = true;
                                    Przeplyw.blad = true;
                                    bladDysku = 2;
                                    numPaska = nrPaska;
                                    break;
                                }

                            }
                        }
                        else if (nrDysku == 3)
                        {
                            for (int i = 3; i < Przeplyw.paski.Count; i += 4)
                            {
                                nrPas = i / 4;
                                if (Przeplyw.paski.ElementAt(i).nrPasku == nrPaska)
                                {
                                    nrWLiscie = i;
                                    Przeplyw.paski.ElementAt(i).kolor = System.Drawing.Color.Red;
                                    x = Przeplyw.paski.ElementAt(i).x;
                                    y = Przeplyw.paski.ElementAt(i).y;
                                    Przeplyw.dysk3.Insert(nrPas, null);  //{2;2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
                                    string komunikat = string.Format("Wystąpił błąd w dysku 3 w pasku {0} zawartość paska: null", nrPaska);
                                    ld.zapis(komunikat);
                                    dalej = true;
                                    Przeplyw.blad = true;
                                    bladDysku = 3;
                                    numPaska = nrPaska;
                                    break;
                                }
                            }
                            }
                        }
                    }
                    catch (Exception excep)
                    { }
                    break;
                default:

                    break;
            }

            return dalej;
        }