예제 #1
0
        private void btnAccedi_Click(object sender, EventArgs e)
        {
            string    nomeSorgente = (string)comboBoxSorgente.SelectedItem;
            ISorgente sorgente     = null;

            if (nomeSorgente == "Locale")
            {
                if (_controller.Autentica(this.textUsername.Text, this.textPassword.Text))
                {
                    sorgente = _factory.NuovaSorgenteLocale();
                }
                else
                {
                    MessageBox.Show("Coppia utente e password non corretta. Impossibile accedere.", "Credenziali non valide", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                IStazione stazione = _stazioniController.Cerca(nomeSorgente)[0];
                try
                {
                    sorgente = _factory.NuovaSorgenteRemota(stazione, this.textUsername.Text, this.textPassword.Text);
                }
                catch (CredenzialiInvalideEccezione e1)
                {
                    MessageBox.Show("Coppia utente e password non corretta. Il server ha rifiutato la connessione.", "Credenziali non valide", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (NonFidatoEccezione e2)
                {
                    MessageBox.Show("Il certificato della stazione remota non è valido.", "Errore certificato", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (RispostaInvalidaEccezione e3)
                {
                    MessageBox.Show("Il server non ha restituito una risposta valida", "Risposta invalida", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }


            if (sorgente != null)
            {
                this.Hide();
                Form         mainForm = new MainForm(_gestioneUtentiController, _stazioniController, _storicoController, sorgente, _gestoreEventi, _controller);
                DialogResult res      = mainForm.ShowDialog();
                CaricaSorgenti();
                this.Show();
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            Stazione stazione = new Stazione
            {
                Nome                   = "BolognaA1",
                Locazione              = "Bologna",
                IndirizzoDiRete        = IPAddress.Parse("127.0.0.1"),
                Porta                  = 8001,
                ImprontaChiavePubblica = "E2C9153221FE658AFDCEBE095EE5D2392AF8C4AE"
            };

            if (File.Exists("test_client.db"))
            {
                File.Delete("test_client.db");
            }

            GestioneStazioniController stazioni = new GestioneStazioniController("test_client.db");

            stazioni.Registra(stazione);

            CreatoreConnessioni creatore       = new CreatoreConnessioni(stazioni);
            SorgenteFactory     factory        = new SorgenteFactory(creatore, null, null);
            ISorgente           sorgenteRemota = factory.NuovaSorgenteRemota(stazione, "tizio", "password");

            Thread threadSorgente = new Thread(() => sorgenteRemota.CicloPrincipale());

            threadSorgente.Start();

            //IAnalisi analisi = new AnalisiGrezza();
            //sorgenteRemota.AggiungiAnalisi(analisi);

            //IAnalisi magnitudo = new AnalisiMagnitudine();
            //sorgenteRemota.AggiungiAnalisi(magnitudo);

            //magnitudo.RicevitoriRisultato += valore => Console.WriteLine(valore);

            threadSorgente.Join();
        }