Beispiel #1
0
        private void run()
        {
            while (bRunFlag)
            {
                PackVo vo = receivingQManager.poll();
                if (vo == null)
                {
                    if (bRunFlag)
                    {
                        clientThread.heartbeatTimeout();
                    }
                    continue;
                }

                byte op_code = vo.OP_Code;

                if (op_code == OP_Code.CONFIRM)
                {
                    clientThread.receiveConfirm();
                }
                else if (op_code == OP_Code.DATA)
                {
                    clientThread.receiveData(vo.Data);
                }
                else if (op_code == OP_Code.REJECT)
                {
                    clientThread.receiveReject(vo.Data);
                }
            }
        }
        private static byte[] writePackVo(byte[] bData, PackVo vo, int iOffset)
        {
            bData[iOffset] = vo.OP_Code;
            int iDataLength = vo.Data.Length;

            Array.Copy(vo.Data, 0, bData, iOffset + PackerConstant.OP_LENGTH, iDataLength);
            return(bData);
        }
        private static byte[] writeLength(byte[] bData, PackVo vo, int iOffset)
        {
            int iLength = PackerConstant.OP_LENGTH + vo.Data.Length;

            byte[] bLength = new byte[PackerConstant.LENGTH_LENGTH];
            bLength[0] = BitConverter.GetBytes(iLength / PackerConstant.POSITIVE_BYTE_SIZE)[0];
            bLength[1] = BitConverter.GetBytes(iLength % PackerConstant.POSITIVE_BYTE_SIZE)[0];
            Array.Copy(bLength, 0, bData, iOffset, PackerConstant.LENGTH_LENGTH);
            return(bData);
        }
        public static byte[] packingData(PackVo vo)
        {
            int iTotalLength = PackerConstant.BOU_EOU_LENGTH + PackerConstant.LENGTH_LENGTH + PackerConstant.OP_LENGTH + PackerConstant.BOU_EOU_LENGTH;

            iTotalLength += vo.Data.Length;
            byte[] bData   = new byte[iTotalLength];
            int    iOffset = 0;

            bData    = writeBOU(bData, iOffset);
            iOffset += PackerConstant.BOU_EOU_LENGTH;
            bData    = writeLength(bData, vo, iOffset);
            iOffset += PackerConstant.LENGTH_LENGTH;
            bData    = writePackVo(bData, vo, iOffset);
            iOffset += PackerConstant.OP_LENGTH + vo.Data.Length;
            bData    = writeEOU(bData, iOffset);
            return(bData);
        }
Beispiel #5
0
 private void run()
 {
     while (bRunFlag)
     {
         try
         {
             PackVo vo = SimpleConnectDataPacker.unpackingData(socket);
             receivingQManager.add(vo);
         }
         catch (Exception e)
         {
             Console.WriteLine(e);
             // TODO notify ap
             bRunFlag = false;
             disconnect();
         }
     }
 }
        public static PackVo unpackingData(Socket socket)
        {
            PackVo vo = new PackVo();

            readAndCheckUnit(socket, PackerConstant.BOU);
            int iLength = readLength(socket);

            byte[] bData = readBytesByLength(socket, iLength);
            if (readAndCheckUnit(socket, PackerConstant.EOU))
            {
                byte[] bOP_Code = new byte[PackerConstant.OP_LENGTH];
                byte[] bVoData  = new byte[bData.Length - PackerConstant.OP_LENGTH];
                Array.Copy(bData, 0, bOP_Code, 0, PackerConstant.OP_LENGTH);
                Array.Copy(bData, PackerConstant.OP_LENGTH, bVoData, 0, bVoData.Length);
                vo.OP_Code = bOP_Code[0];
                vo.Data    = bVoData;
            }
            else
            {
                return(unpackingData(socket));
            }
            return(vo);
        }
Beispiel #7
0
 public void add(PackVo vo)
 {
     queue.Add(vo);
 }