probe method Null safety

Future<void> probe()

Implementation

Future<void> probe() async {
  loggy.debug('init');

  await RawDatagramSocket.bind(broadcastAddress, broadcastPort);

  final rawDatagramSocket = await RawDatagramSocket.bind(
      InternetAddress.anyIPv4, 0,
      reuseAddress: false, reusePort: false);

  rawDatagramSocket.listen((RawSocketEvent rawSocketEvent) {
    var datagram = rawDatagramSocket.receive();

    if (datagram == null) return;

    String messageReceived = String.fromCharCodes(datagram.data);

    loggy.debug('RESPONSE ADDRESS:\n${datagram.address}');

    loggy.debug('RESPONSE:\n$messageReceived');

    var envelope = Envelope.fromXml(messageReceived);

    if (envelope.body.probeMatches == null) return;

    onvifDevices.addAll(envelope.body.probeMatches!.probeMatches);
  });

  start(rawDatagramSocket);

  await finish(rawDatagramSocket);
}