예제 #1
0
        public override IotRequest ResolvePackage(IBufferStream bufferStream)
        {
            var header = new byte[headerLength + 2];

            bufferStream.Read(header, 0, header.Length);
            var headerHex = header.ToHex();

            if (headerHex.Left(2 * headerLength) == this.header)
            {
                var body = new byte[base.Size - 2 - headerLength];
                bufferStream.Read(body, 0, body.Length);
                return(new IotRequest(this, body));
            }
            return(null);
        }
    public override BinaryRequestInfo ResolvePackage(IBufferStream bufferStream)
    {
        byte[] header = new byte[HeaderSize];
        bufferStream.Read(header, 0, HeaderSize);

        int bodyLength = Size - HeaderSize;

        byte[] data = new byte[bodyLength];
        bufferStream.Read(data, 0, bodyLength);

        //BinaryRequestInfo requestInfo = new BinaryRequestInfo(Encoding.UTF8.GetString(data1), data1);

        //return requestInfo;
        return(new BinaryRequestInfo(data));
    }
예제 #3
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            var lenBytes = new byte[length];

            bufferStream.Read(lenBytes, 0, length);
            return(BitConverter.ToInt32(lenBytes, 0));
        }
        public static byte[] Read(this IBufferStream bufferStream)
        {
            var buffer = new byte[bufferStream.Length];

            bufferStream.Read(buffer, 0, (int)bufferStream.Length);
            return(buffer);
        }
예제 #5
0
        public override PackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] data = new byte[bufferStream.Length];
            bufferStream.Read(data, 0, Convert.ToInt32(bufferStream.Length));
            string message = Encoding.ASCII.GetString(data);

            return(ResolvePackage(data));
        }
예제 #6
0
            protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
            {
                byte[] lenbuffer = new byte[length];
                bufferStream.Read(lenbuffer, 0, length);
                int nLen = BitConverter.ToInt16(lenbuffer, 0);

                return(nLen);
            }
예제 #7
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            byte[] header = new byte[bufferStream.Length];
            bufferStream.Read(header, 0, (int)bufferStream.Length);
            var headerData = new byte[4];

            Array.Copy(header, 6, headerData, 0, 4);
            return(BitConverter.ToInt32(headerData, 0) + 2);
        }
예제 #8
0
        public override TPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            var buffer = bufferStream.Read();

            var cmdCode = buffer.CloneRange(0, 4);
            var length  = BitConverter.ToInt32(buffer.CloneRange(4, 4), 0);
            var body    = buffer.CloneRange(8, length);

            return(LoadRequestInfo(cmdCode, body));
        }
예제 #9
0
            protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
            {
                byte[] lenbuffer = new byte[length];
                bufferStream.Read(lenbuffer, 0, length);
                int nLen = (int)lenbuffer[0] * 256 + (int)lenbuffer[1];

                //BitConverter.ToInt16(lenbuffer, 0);
                //Debug.LogWarning("length---------" + nLen);
                return(nLen);
            }
예제 #10
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            byte[] headData = new byte[8];
            bufferStream.Read(headData, 0, 8);

            byte[] length1 = new byte[4];
            Array.Copy(headData, 4, length1, 0, 4);

            return(BitConverter.ToInt32(length1, 0));
        }
예제 #11
0
        public override TPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            var buffer = bufferStream.Read();

            var cmdCode = buffer.CloneRange(0, RouteProvider.RouteLength);
            var length  = BitConverter.ToInt32(buffer.CloneRange(RouteProvider.RouteLength, 4), 0);
            var body    = buffer.CloneRange(RouteProvider.RouteLength + 4, length);

            return(LoadPackageInfo(cmdCode, body));
        }
예제 #12
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            bufferStream.Skip(FixedHeaderTryConst.KEYSIZE);
            byte[] bodySizeBuf = new byte[FixedHeaderTryConst.BODYSIZE_LEN];
            //注意 Read方法的第二个参数,目标数组的偏移
            bufferStream.Read(bodySizeBuf, 0, FixedHeaderTryConst.BODYSIZE_LEN);

            return(PackageBodyOperator.GetBodyLen(bodySizeBuf));
            //throw new NotImplementedException();
        }
예제 #13
0
        public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] bytes = new byte[bufferStream.Length];
            bufferStream.Read(bytes, 0, bytes.Length);
            string str = System.Text.Encoding.ASCII.GetString(bytes);

            str = str.Replace("\0", string.Empty);
            str = str.Replace("\r", string.Empty);

            return(new StringPackageInfo(str, "", null));
        }
예제 #14
0
        public override MsgBinaryRequestInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] headData = new byte[8];
            bufferStream.Read(headData, 0, 8);

            var length1 = new byte[4];

            Array.Copy(headData, 4, length1, 0, 4);

            int bodyLength = BitConverter.ToInt32(length1, 0);

            var bodyData = new byte[bodyLength];

            bufferStream.Read(bodyData, 0, bodyLength);
            ;

            MsgBinaryRequestInfo requestInfo = new MsgBinaryRequestInfo(Encoding.UTF8.GetString(headData, 0, 4), bodyData);

            return(requestInfo);
        }
예제 #15
0
        public override ClientPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            var bodyBuffer = new byte[bufferStream.Length];

            bufferStream.Read(bodyBuffer, 0, (int)bufferStream.Length);
            return(new ClientPackageInfo
            {
                BodySize = bodyBuffer.Length,
                Body = bodyBuffer
            });
        }
예제 #16
0
            public override FPackageInfo ResolvePackage(IBufferStream bufferStream)
            {
                var PackageTogalSize = (int)(bufferStream.Length);

                bufferStream.Skip(H_SIZE);

                byte[] data = new byte[PackageTogalSize - H_SIZE];
                bufferStream.Read(data, 0, PackageTogalSize - H_SIZE);

                return(new FPackageInfo(data));
            }
예제 #17
0
        public override WebSocketPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            var context       = Context;
            var bufferManager = context.BufferManager;

            var responseBuilder = new StringBuilder();

            responseBuilder.AppendWithCrCf(WebSocketConstant.ResponseHeadLine00);
            responseBuilder.AppendWithCrCf(WebSocketConstant.ResponseUpgradeLine);
            responseBuilder.AppendWithCrCf(WebSocketConstant.ResponseConnectionLine);

            if (!string.IsNullOrEmpty(context.Origin))
            {
                responseBuilder.AppendFormatWithCrCf(WebSocketConstant.ResponseOriginLine, context.Origin);
            }

            responseBuilder.AppendFormatWithCrCf(WebSocketConstant.ResponseLocationLine, context.UriScheme, context.Host, context.Path);


            ///TODO: get available sub protocols
            //var subProtocol = context.GetAvailableSubProtocol();

            //if (!string.IsNullOrEmpty(subProtocol))
            //  responseBuilder.AppendFormatWithCrCf(WebSocketConstant.ResponseProtocolLine, subProtocol);

            responseBuilder.AppendWithCrCf();
            var response = responseBuilder.ToString();
            var encoding = Encoding.UTF8;

            byte[] data = encoding.GetBytes(response);

            context.Channel.Send(new ArraySegment <byte>(data));

            var secKey1 = context.HandshakeRequest.Get(WebSocketConstant.SecWebSocketKey1);
            var secKey2 = context.HandshakeRequest.Get(WebSocketConstant.SecWebSocketKey2);

            byte[] secret;

            var secKey3 = bufferManager.GetBuffer(c_Key3Len);

            try
            {
                bufferStream.Read(secKey3, 0, c_Key3Len);
                secret = GetResponseSecurityKey(secKey1, secKey2, new ArraySegment <byte>(secKey3, 0, c_Key3Len));
            }
            finally
            {
                bufferManager.ReturnBuffer(secKey3);
            }

            context.Channel.Send(new ArraySegment <byte>(secret));
            NextReceiveFilter = new DraftHybi00DataReceiveFilter(context);
            return(null);
        }
예제 #18
0
        public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            //throw new NotImplementedException();
            string key = bufferStream.ReadString(FixedHeaderTryConst.KEYSIZE, Encoding.UTF8);

            byte[] buffer = new byte[FixedHeaderTryConst.BODYSIZE_LEN];
            bufferStream.Read(buffer, 0, FixedHeaderTryConst.BODYSIZE_LEN);
            int    bodySize = PackageBodyOperator.GetBodyLen(buffer);
            string body     = bufferStream.ReadString(bodySize, Encoding.UTF8);

            return(new StringPackageInfo(key, body, null));
        }
예제 #19
0
            protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
            {
                var headBytes = new byte[length];

                bufferStream.Read(headBytes, 0, length);
                var str = Encoding.UTF8.GetString(headBytes);
                var len = str.Length;

                bodyLength = int.Parse(str.Substring(str.LastIndexOf(":") + 1).Replace("\r", "").Replace("\n", ""));

                return(bodyLength + 4);
            }
        public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] data = new byte[bufferStream.Length];
            bufferStream.Read(data, 0, Convert.ToInt32(bufferStream.Length));

            string message = Encoding.ASCII.GetString(data);

            BasicStringParser bsp = new BasicStringParser(Environment.NewLine, Environment.NewLine);

            StringPackageInfo package = new StringPackageInfo(message, bsp);

            return(package);
        }
예제 #21
0
        public override ReceieveMessage ResolvePackage(IBufferStream bs)
        {
            ReceieveMessage message  = new ReceieveMessage();
            var             lenBytes = new byte[4];

            bs.Read(lenBytes, 0, 4);
            message.Length = BitConverter.ToInt32(lenBytes, 0);
            var timeBytes = new byte[14];

            bs.Read(timeBytes, 0, 14);
            message.TimeStamp = Encoding.UTF8.GetString(timeBytes);
            var actionBytes = new byte[4];

            bs.Read(actionBytes, 0, 4);
            message.Action = BitConverter.ToInt32(actionBytes, 0);
            var dataLength = message.Length - 18;
            var dataBytes  = new byte[dataLength];

            bs.Read(dataBytes, 0, dataLength);
            message.DataStr = Encoding.UTF8.GetString(dataBytes);
            return(message);
        }
예제 #22
0
        public override TestProtobasePackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] data = new byte[bufferStream.Length];
            bufferStream.Read(data, 0, Convert.ToInt32(bufferStream.Length));

            string message = Encoding.ASCII.GetString(data);

            TestProtobasePackageInfo package = new TestProtobasePackageInfo();

            package.OriginalRequest = message;

            return(package);
        }
        public override TestProtobasePackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] data = new byte[bufferStream.Length];

            bufferStream.Read(data, 0, Convert.ToInt32(bufferStream.Length));

            string message = Encoding.ASCII.GetString(data);

            return(new TestProtobasePackageInfo()
            {
                OriginalRequest = message.TrimStart(Encoding.ASCII.GetChars(beginMark)).TrimEnd(Encoding.ASCII.GetChars(endMark))
            });
        }
예제 #24
0
        public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            byte[] bytes = new byte[bufferStream.Length];
            bufferStream.Read(bytes, 0, bytes.Length);
            string str = System.Text.Encoding.ASCII.GetString(bytes);

            str = str.Replace("\0", string.Empty);
            str = str.Replace("\r\n", string.Empty);
            AppLog.Info("Ir接收", str);

            if (str.StartsWith("!") || str.StartsWith(">!"))
            {
                string[] strArry  = str.Split(new Char[] { '\t', ' ', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                string   strHead  = strArry[1];
                string[] strParam = strArry.Skip(2).ToArray();
                string[] strHeads = strHead.Split('-');
                if (strHeads.Length < 2)
                {
                    return(new StringPackageInfo(strHead, "", strParam));
                }
                else
                {
                    string strBody = strHeads[0];
                    strHead = strHeads[1];
                    return(new StringPackageInfo(strHead, strBody, strParam));
                }
            }
            else if (str.StartsWith(">"))
            {
                return(new StringPackageInfo("BEGIN", "", null));
            }
            else
            {
                string[] strArry  = str.Split();
                string   strHead  = strArry[0];
                string[] strParam = strArry.Skip(2).ToArray();
                string[] strHeads = strHead.Split('-');
                if (strHeads.Length < 2)
                {
                    return(new StringPackageInfo(strHead, "", strParam));
                }
                else
                {
                    string strBody = strHeads[0];
                    strHead = strHeads[1];
                    return(new StringPackageInfo(strHead, strBody, strParam));
                }
            }
        }
예제 #25
0
            public override ReceieveMessage ResolvePackage(IBufferStream bs)
            {
                ReceieveMessage res = new ReceieveMessage();

                //var h = new byte[64];
                //bs.Read(h, 0, 64);
                //var mmm = Encoding.UTF8.GetString(h);
                bs.Skip(64);
                var bodyBytes = new byte[bodyLength];

                bs.Read(bodyBytes, 0, bodyLength);
                res.Length          = bodyLength;
                res.DataStr         = Encoding.UTF8.GetString(bodyBytes);
                res.ReceiveDataType = GetReceiveType(res.DataStr);
                return(res);
            }
예제 #26
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            if (length < 14)
            {
                return(0);
            }

            var header = new byte[14];
            int count  = bufferStream.Read(header, 0, 14);

            byte high = header[13];
            //获取低位
            byte low = header[12];

            return(MQTools.GetBodyLengthFromHeader(high, low));
        }
예제 #27
0
        //根据头得到数据头长度
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            int datalength = 0;

            byte[] headByte = new byte[2];
            bufferStream.Read(headByte, 0, 2);
            int head = DataTransform.bytesToUshort(headByte, 0);

            if (head == 10004 || head == 20004 || head == 30004 || head == 40004 || head == 30000)
            {
                datalength = 6;
                return(datalength);
            }
            if (head == 10005 || head == 20005 || head == 30005 || head == 40005)
            {
                datalength = 8;
                return(datalength);
            }
            return(datalength);
        }
예제 #28
0
        public override MQDataInfo ResolvePackage(IBufferStream bufferStream)
        {
            var buffer = bufferStream.Read();

            return(MQTools.ResolveMQDataInfo(buffer));
        }
예제 #29
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            var buffer = bufferStream.Read();

            return(BitConverter.ToInt32(buffer, RouteProvider.RouteLength));
        }