Beispiel #1
0
        // Décode (statiquement) un tableau de bytes, pour y avoir une instance d'un paquet
        public static bool  Decoder(byte[] Data, out absPaquet Paquet)
        {
            Paquet = null;
            object     paquetInst;
            TypePaquet type;
            Type       t;

            if (Data.Length < 2)
            {
                return(false);
            }

            type = (TypePaquet)Data[1];

            // Un petit peu de cassage de tête (J'avais bien l'intention de tout faire par réflection, mais bon..)
            IEnumerator <Type> Enumerator = s_lClassesEnfant.GetEnumerator();

            while (Enumerator.MoveNext())
            {
                t = Enumerator.Current;
                // Recherche du bon type de trame
                if (getTypePaquet(t) == type)
                {
                    // Lorsqu'on le trouve, on l'instancie
                    paquetInst = Activator.CreateInstance(t);
                    if (paquetInst is absPaquet)
                    {
                        Paquet = (absPaquet)paquetInst;
                        // Si le paquet est décodable (le format est bon)
                        if (!Paquet.Decode(Data))
                        {
                            return(false);
                        }
                        return(true);
                    }
                }
            }

            return(false);
        }
Beispiel #2
0
 // Encode statiquement un paquet pour y avoir le tableau d'octets
 public static bool Encoder(absPaquet Paquet, out byte[] Data)
 {
     return(Paquet.Encode(out Data));
 }