Ejemplo n.º 1
0
        public override TipoStato CambiaStato(TipoStato stato)
        {
            switch (stato)
            {
            case TipoStato.C:
                stato = TipoStato.P1;
                break;

            case TipoStato.P1:
                break;

            case TipoStato.D1:
                stato = TipoStato.P2;
                break;

            case TipoStato.P2:
                break;

            case TipoStato.D2:
                break;

            case TipoStato.R:
                stato = TipoStato.P1;
                break;

            case TipoStato.Q:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(stato);
        }
Ejemplo n.º 2
0
        private static void IterazioneComunica(StreamReader sr, StreamWriter sw, TipoStato stato)
        {
            while (true)
            {
                // lettura richiesta dal client
                string str = sr.ReadLine();
                Console.WriteLine(str);
                // Elaborazione e invio risposta
                try
                {
                    //Divisione messaggio
                    string strMsg = SplitString(str, ref stato);

                    //Creazione messaggio e ingresso e definizione stato
                    Messaggio msg             = null;
                    TipoStato statoSuccessivo = CreateMsgIng(strMsg, stato, out msg);

                    //Risposta dal server
                    RispostaServer(msg, stato, statoSuccessivo, sw);

                    if (statoSuccessivo == TipoStato.Q)
                    {
                        Console.WriteLine("Connessione chiusa");
                        break;
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Messaggio sconosciuto");
                    sw.WriteLine("{0} -ERR", stato.ToString());
                }
            }
        }
Ejemplo n.º 3
0
 public override TipoStato CambiaStato(TipoStato stato)
 {
     switch (stato)
     {
         case TipoStato.C:
             stato = TipoStato.Q;
             break;
         case TipoStato.P1:
             stato = TipoStato.Q;
             break;
         case TipoStato.D1:
             stato = TipoStato.Q;
             break;
         case TipoStato.P2:
             stato = TipoStato.Q;
             break;
         case TipoStato.D2:
             stato = TipoStato.Q;
             break;
         case TipoStato.R:
             stato = TipoStato.Q;
             break;
         case TipoStato.Q:
             break;
         default:
             throw new ArgumentOutOfRangeException();
     }
     return stato;
 }
Ejemplo n.º 4
0
        private static void IterazioneComunica(StreamReader sr, StreamWriter sw, TipoStato stato)
        {
            while (true)
            {
                // lettura richiesta dal client
                string str = sr.ReadLine();
                Console.WriteLine(str);
                // Elaborazione e invio risposta
                try
                {
                    //Divisione messaggio
                    string strMsg = SplitString(str, ref stato);

                    //Creazione messaggio e ingresso e definizione stato
                    Messaggio msg = null;
                    TipoStato statoSuccessivo = CreateMsgIng(strMsg, stato, out msg);

                    //Risposta dal server
                    RispostaServer(msg, stato, statoSuccessivo, sw);

                    if (statoSuccessivo == TipoStato.Q)
                    {
                        Console.WriteLine("Connessione chiusa");
                        break;
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Messaggio sconosciuto");
                    sw.WriteLine("{0} -ERR", stato.ToString());

                }
            }
        }
Ejemplo n.º 5
0
        static async Task ComunicaClientAsync(object param)
        {
            TcpClient     client  = (TcpClient)param;
            NetworkStream nsRead  = client.GetStream();
            NetworkStream nsWrite = client.GetStream();

            StreamReader sr = new StreamReader(nsRead);
            StreamWriter sw = new StreamWriter(nsWrite);

            sw.AutoFlush = true;

            TipoStato stato = TipoStato.C;

            while (stato != TipoStato.Q)
            {
                Console.Write("Digitare  il messaggio:  ");
                string risp = Console.ReadLine();
                risp = stato.ToString() + ' ' + risp;
                sw.WriteLine(risp);
                string[] msgRisp = sr.ReadLine().Split(' ');
                stato = (TipoStato)Enum.Parse(typeof(TipoStato), msgRisp[0], true);
                Console.WriteLine("");
                Console.WriteLine("La risposta è {0} {1}", msgRisp[0], msgRisp[1]);
                Console.WriteLine("-------------------------------");
                Console.WriteLine("");
            }
        }
Ejemplo n.º 6
0
 private static TipoStato CreateMsgIng(string strMsg, TipoStato stato, out Messaggio msg)
 {
     msg = MessaggioFactory.Create(strMsg);
     TipoComando ingresso = (TipoComando)Enum.Parse(typeof(TipoComando), strMsg.Split(' ')[0], true);
     Ingresso ing = IngressoFactory.Create(ingresso);
     TipoStato statoSuccessivo = ing.CambiaStato(stato);
     return statoSuccessivo;
 }
Ejemplo n.º 7
0
        private static TipoStato CreateMsgIng(string strMsg, TipoStato stato, out Messaggio msg)
        {
            msg = MessaggioFactory.Create(strMsg);
            TipoComando ingresso        = (TipoComando)Enum.Parse(typeof(TipoComando), strMsg.Split(' ')[0], true);
            Ingresso    ing             = IngressoFactory.Create(ingresso);
            TipoStato   statoSuccessivo = ing.CambiaStato(stato);

            return(statoSuccessivo);
        }
Ejemplo n.º 8
0
 private static void RispostaServer(Messaggio msg, TipoStato stato, TipoStato statoSuccessivo, StreamWriter sw)
 {
     if (msg != null && statoSuccessivo != stato)
     {
         Console.WriteLine(msg.GetType().ToString());
         sw.WriteLine("{0} +OK", statoSuccessivo.ToString());
     }
     else
     {
         Console.WriteLine("Messaggio sconosciuto");
         sw.WriteLine("{0} -ERR", stato.ToString());
     }
 }
Ejemplo n.º 9
0
        private static string SplitString(string str, ref TipoStato stato)
        {
            string[] strSplit = str.Split(' ');
            stato = (TipoStato)Enum.Parse(typeof(TipoStato), strSplit[0], true);
            string strMsg = "";

            if (strSplit.Length == 3)
            {
                strMsg = strSplit[1] + ' ' + strSplit[2];
            }
            else
            {
                strMsg = strSplit[1];
            }
            return(strMsg);
        }
Ejemplo n.º 10
0
        static void Comunica(object param)
        {
            TcpClient client = (TcpClient)param;

            Console.WriteLine("Sto avviando la comunicazione");
            NetworkStream nsRead  = client.GetStream();
            NetworkStream nsWrite = client.GetStream();

            StreamReader sr = new StreamReader(nsRead);
            StreamWriter sw = new StreamWriter(nsWrite);

            sw.AutoFlush = true;

            TipoStato stato = TipoStato.Nessuno;

            IterazioneComunica(sr, sw, stato);
        }
Ejemplo n.º 11
0
 //public abstract TipoStato CambiaStato(TipoStato stato);
 public virtual TipoStato CambiaStato(TipoStato stato)
 {
     TipoStato resp = TipoStato.Nessuno;
     return resp;
 }
Ejemplo n.º 12
0
        //public abstract TipoStato CambiaStato(TipoStato stato);

        public virtual TipoStato CambiaStato(TipoStato stato)
        {
            TipoStato resp = TipoStato.Nessuno;

            return(resp);
        }
Ejemplo n.º 13
0
 private static void RispostaServer(Messaggio msg, TipoStato stato, TipoStato statoSuccessivo, StreamWriter sw)
 {
     if (msg != null && statoSuccessivo != stato)
     {
         Console.WriteLine(msg.GetType().ToString());
         sw.WriteLine("{0} +OK", statoSuccessivo.ToString());
     }
     else
     {
         Console.WriteLine("Messaggio sconosciuto");
         sw.WriteLine("{0} -ERR", stato.ToString());
     }
 }
Ejemplo n.º 14
0
 private static string SplitString(string str, ref TipoStato stato)
 {
     string[] strSplit = str.Split(' ');
     stato = (TipoStato)Enum.Parse(typeof(TipoStato), strSplit[0], true);
     string strMsg = "";
     if (strSplit.Length == 3)
     {
         strMsg = strSplit[1] + ' ' + strSplit[2];
     }
     else
     {
         strMsg = strSplit[1];
     }
     return strMsg;
 }