Exemplo n.º 1
0
        public List <char[]> GetBytes()
        {
            List <char[]> ret = new List <char[]>();
            //String comm = Enum.GetName(Command.GetType(), Command);
            String patron       = "{0:D" + MAX_OPCODE_LENGTH + "}";
            String commonHeader = Command + String.Format(patron, OpCode);

            List <char[]> payloads = Payload.GetBytes();

            foreach (var item in payloads)
            {
                int length = item.Length;

                //  Console.WriteLine( ConversionUtil.GetString(item));

                String frame   = commonHeader + String.Format("{0:D" + MAX_LENGTH_LENGTH + "}", length);
                char[] tmp     = new char[frame.Length + length];
                char[] framArr = ConversionUtil.GetBytes(frame);
                for (int i = 0; i < framArr.Length; i++)
                {
                    tmp[i] = framArr[i];
                }

                for (int i = 0; i < item.Length; i++)
                {
                    tmp[framArr.Length + i] = item[i];
                }
                ret.Add(tmp);
            }


            return(ret);
        }
Exemplo n.º 2
0
        public virtual List <char[]> GetBytes()
        {
            var ret = new List <char[]>();

            ret.Add(ConversionUtil.GetBytes(Message));
            return(ret);
        }
Exemplo n.º 3
0
        public override List <char[]> GetBytes()
        {
            int    destinationLength = Destination.Length == 0 ? 0 : 1 + Destination.Length;
            string destinationStr    = (destinationLength > 0 ? (Destination + SEPARATOR) : ("NONE" + SEPARATOR));

            int NEW_MAX_CHUNK = MAX_CHUNK - destinationLength;
            var ret           = new List <char[]>();

            if (Message.Length < NEW_MAX_CHUNK)
            {
                String subFrame = String.Format("{0:D" + SIZES_LENGTH + "}" + SEPARATOR + "{1:D" + SIZES_LENGTH + "}" + SEPARATOR + destinationStr, 1, 1);
                ret.Add(ConversionUtil.GetBytes(subFrame + Message));
            }
            else
            {
                int parts = (Message.Length) / NEW_MAX_CHUNK;
                int rest  = (Message.Length) % NEW_MAX_CHUNK;

                if (rest > 0)
                {
                    parts++;
                }

                for (int i = 0; i < parts; i++)
                {
                    String subFrame = String.Format("{0:D" + SIZES_LENGTH + "}" + SEPARATOR + "{1:D" + SIZES_LENGTH + "}" + SEPARATOR +
                                                    destinationStr, parts, i + 1);


                    if (Message.Length - i * NEW_MAX_CHUNK > NEW_MAX_CHUNK)
                    {
                        ret.Add(ConversionUtil.GetBytes(subFrame + Message.Substring(i * NEW_MAX_CHUNK, NEW_MAX_CHUNK)));
                    }
                    else
                    {
                        ret.Add(ConversionUtil.GetBytes(subFrame + Message.Substring(i * NEW_MAX_CHUNK, Message.Length - i * NEW_MAX_CHUNK)));
                    }
                }
            }
            return(ret);
        }
Exemplo n.º 4
0
 /// <summary>
 /// el payload por defecto asume que el mensaje no se parte, o sea que el payload tiene menos o 10000 caracteres
 /// </summary>
 /// <param name="bytes"></param>
 public Payload(char[] bytes)
 {
     Message = ConversionUtil.GetString(bytes);
 }