X13.Periphery.MsDevice.MsGUdp.ReceiveCallback C# (CSharp) Метод

ReceiveCallback() приватный Метод

private ReceiveCallback ( IAsyncResult ar ) : void
ar IAsyncResult
Результат void
      private void ReceiveCallback(IAsyncResult ar) {
        if(_udp==null || _udp.Client==null) {
          return;
        }
        IPEndPoint re=new IPEndPoint(IPAddress.Any, 0);
        Byte[] buf=null;
        try {
          buf = _udp.EndReceive(ar, ref re);
          byte[] addr=re.Address.GetAddressBytes();
          bool allow=true;
          if(!_myIps.Any(z => addr.SequenceEqual(z))) {
            if(buf.Length>1) {
              var mt=(MsMessageType)(buf[0]>1?buf[1]:buf[3]);
              if((mt==MsMessageType.CONNECT || mt==MsMessageType.SEARCHGW) && addr.Length==_wla_arr.Length) {
                for(int i=addr.Length-1; i>=0; i--) {
                  if((addr[i] & _wlm_arr[i])!=_wla_arr[i]) {
                    allow=false;
                    break;
                  }
                }
              }
              if(allow) {
                MsDevice.ProcessInPacket(this, addr, buf, 0, buf.Length);
              } else if(_verbose) {
                var msg=MsMessage.Parse(buf, 0, buf.Length);
                if(msg!=null) {
                  Log.Debug("restricted  {0}: {1}  {2}", this.Addr2If(addr), BitConverter.ToString(buf), msg.ToString());
                }

              }
            }
          }
        }
        catch(ObjectDisposedException) {
          return;
        }
        catch(Exception ex) {
          Log.Error("ReceiveCallback({0}, {1}) - {2}", re, buf==null?"null":BitConverter.ToString(buf), ex.ToString());
        }
        if(_udp!=null && _udp.Client!=null) {
          _udp.BeginReceive(new AsyncCallback(ReceiveCallback), null);
        }
      }
      private void SendAdv(object o) {