docs: def handle(self):
          """Process an incoming package."""
          data = self.request[0]
          sock = self.request[1]
  
          frame = KNXIPFrame.from_frame(data)
  
          if frame.service_type_id == KNXIPFrame.TUNNELING_REQUEST:
              req = KNXTunnelingRequest.from_body(frame.body)
              msg = CEMIMessage.from_body(req.cemi)
              send_ack = False
  
              tunnel = self.server.tunnel
  
              if msg.code == 0x29:
                  # LData.req
                  send_ack = True
              elif msg.code == 0x2e:
                  # LData.con
                  send_ack = True
              else:
                  problem = "Unimplemented cEMI message code {}".format(msg.code)
                  logging.error(problem)
                  raise KNXException(problem)
  
              # Cache data
              if (msg.cmd == CEMIMessage.CMD_GROUP_WRITE) or (
                      msg.cmd == CEMIMessage.CMD_GROUP_RESPONSE):
                      # saw a value for a group address on the bus
                  tunnel.received_message(msg.dst_addr, msg.data)
  
              # Put RESPONSES into the result queue
              if msg.cmd == CEMIMessage.CMD_GROUP_RESPONSE:
                  tunnel.result_queue.put(msg.data)
  
              if send_ack:
                  bodyack = [0x04, req.channel, req.seq, E_NO_ERROR]
                  ack = KNXIPFrame(KNXIPFrame.TUNNELLING_ACK)
                  ack.body = bodyack
                  sock.sendto(ack.to_frame(), self.client_address)
  
          elif frame.service_type_id == KNXIPFrame.TUNNELLING_ACK:
              logging.debug("Received tunneling ACK")
              self.server.tunnel.ack_semaphore.release()
          elif frame.service_type_id == KNXIPFrame.DISCONNECT_RESPONSE:
              logging.debug("Disconnected")
              self.channel = None
              tunnel = self.server.tunnel
              tunnel.data_server.shutdown()
              tunnel.data_server = None
          elif frame.service_type_id == KNXIPFrame.CONNECTIONSTATE_RESPONSE:
              logging.debug("Connection state response")
              tunnel.connection_state = frame.body[2]
          else:
              logging.info(
                  "Message type %s not yet implemented", frame.service_type_id)