listenIPv6 method

Stream<MndpMessage> listenIPv6()

Implementation

Stream<MndpMessage> listenIPv6() {
  var ftxUDPSocket = createNewMNDPIPv6Socket();
  ftxUDPSocket.then((RawDatagramSocket txSocket) async {
    txUDPIPv6Socket = txSocket;

    sendBroadcastIPv6PeriodicTimer =
        Timer.periodic(const Duration(seconds: 10), (Timer t) async {
          await sendBroadcastIPv6RequestMsg();
        });

    var frxUDPSocket = createNewMNDPIPv6Socket();
    frxUDPSocket.then((rxSocket) async {
      rxUDPIPv6Socket = rxSocket;
      rxUDPIPv6Socket!.broadcastEnabled = true;
      rxUDPIPv6Socket!.multicastLoopback = false;
      rxUDPIPv6Socket!.listen((RawSocketEvent event) async {
        if (event == RawSocketEvent.read) {
          Datagram? datagram = rxSocket.receive();
          if (datagram != null && datagram.data.length > 4) {
            MndpMessage msg = await decoder.decode(datagram.data);
            controller.add(msg);
          }
        }
      });
    });
  });
  return controller.stream;
}