Exemplo n.º 1
0
        public static async Task <Tuple <bool, Int32> > DeserializeAsync(IReadableStreamAsync stream, Int32 defaultVal)
        {
            var  bytes          = new byte[sizeof(Int32)];
            bool stillConnected = await stream.ReadAllAsync(bytes, 0, bytes.Length);

            if (!stillConnected)
            {
                return(new Tuple <bool, Int32>(false, defaultVal));
            }

            Int32 iNetworkOrder = BitConverter.ToInt32(bytes, 0);
            Int32 i             = IPAddress.NetworkToHostOrder(iNetworkOrder);

            return(new Tuple <bool, Int32>(true, i));
        }
Exemplo n.º 2
0
        public static async Task <Tuple <bool, string> > DeserializeAsync(IReadableStreamAsync stream, string defaultVal)
        {
            // first read length of string
            var res = await DeserializeAsync(stream, 0);

            bool stillConnected = res.Item1;
            int  length         = res.Item2;

            if (!stillConnected)
            {
                return(new Tuple <bool, string>(false, defaultVal));
            }

            // length check
            if (length < 0 || length > MAX_STRING_LEN)
            {
                // if other end sends bad length, we can't currently handle it  DEV: improve
                return(new Tuple <bool, string>(false, defaultVal));
            }

            var bytes = new byte[length];

            stillConnected = await stream.ReadAllAsync(bytes, 0, bytes.Length);

            if (!stillConnected)
            {
                return(new Tuple <bool, string>(false, defaultVal));
            }
            try
            {
                string s = m_asciiEncoder.GetString(bytes);
                return(new Tuple <bool, string>(true, s));
            }
            catch
            {
                // if other end sends bad info, we can't currently handle it  DEV: improve
                return(new Tuple <bool, string>(false, defaultVal));
            }
        }
 public DeserializationAdapterAsync(IReadableStreamAsync stream)
 {
     m_inStream = stream;
 }