BACSharp.BacNetListener.ParseComplexAck C# (CSharp) Method

ParseComplexAck() private method

private ParseComplexAck ( BacNetRawMessage msg, IPEndPoint endPoint ) : void
msg BACSharp.Types.BacNetRawMessage
endPoint System.Net.IPEndPoint
return void
        private void ParseComplexAck(BacNetRawMessage msg, IPEndPoint endPoint)
        {
            if (msg.Apdu.Length > 2)
            {
                //Сегментированный ответ
                if ((msg.Apdu[0] >> 3 & 1) == 1)
                {
                    /*BacNetRawMessage segmentedMsg = null;
                    foreach (object m in messagePool)
                    {
                        BacNetRawMessage ms = m as BacNetRawMessage;
                        //Если в пуле есть сообщение с таким же InvokeId как у поступившего используем его
                        if (ms != null && ms.Apdu[1] == msg.Apdu[1])
                            segmentedMsg = ms;
                    }
                    if (segmentedMsg == null) segmentedMsg = msg;*/

                    messagePool.Add(msg);
                    BacNetIpNpdu npdu = new BacNetIpNpdu(msg.Npdu);
                    BacNetDevice.Instance.Services.Acknowledgement.SegmentAck(endPoint, npdu.Source, msg.Apdu[1], msg.Apdu[2], msg.Apdu[3]);
                    //Если есть ещё сегменты
                    if ((msg.Apdu[0] >> 2 & 1) == 1)
                    {
                        return;
                    }
                    msg = ReassembleMessage(messagePool, msg.Apdu[1]);
                }
                switch (msg.Apdu[2])
                {
                    case 12:
                        BacNetDevice.Instance.Response.ReceivedReadPropertyAck(msg);
                        break;
                    case 14:
                        BacNetDevice.Instance.Response.ReceivedReadPropertyMultipleAck(msg);
                        break;
                }
            }
        }