From b9641e45fe02b94e318140131304e683bf143f22 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 15 Feb 2021 09:35:16 -0500 Subject: [PATCH] 2021-02-15 Fred Gleason * Removed 'Q3SocketDevice' dependencies from 'RDMulticaster'. Signed-off-by: Fred Gleason --- ChangeLog | 2 ++ lib/rdmulticaster.cpp | 19 +++++++++---------- lib/rdmulticaster.h | 16 +++++----------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94a5b92f..ed156266 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21135,3 +21135,5 @@ * Removed 'Q3SocketDevice' dependencies from 'RDCae'. 2021-02-15 Fred Gleason * Fixed a regression in 'RDCae' that broke the build. +2021-02-15 Fred Gleason + * Removed 'Q3SocketDevice' dependencies from 'RDMulticaster'. diff --git a/lib/rdmulticaster.cpp b/lib/rdmulticaster.cpp index e778f17e..1db8a012 100644 --- a/lib/rdmulticaster.cpp +++ b/lib/rdmulticaster.cpp @@ -2,7 +2,7 @@ // // Multi-interface multicast transciever // -// (C) Copyright 2018 Fred Gleason +// (C) Copyright 2018-2021 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Library General Public License @@ -30,10 +30,8 @@ RDMulticaster::RDMulticaster(QObject *parent) : QObject(parent) { - multi_socket=new Q3SocketDevice(Q3SocketDevice::Datagram); - multi_notifier=new QSocketNotifier(multi_socket->socket(), - QSocketNotifier::Read,this); - connect(multi_notifier,SIGNAL(activated(int)),this,SLOT(activatedData(int))); + multi_socket=new QUdpSocket(this); + connect(multi_socket,SIGNAL(readyRead()),this,SLOT(readyReadData())); GetInterfaces(); } @@ -58,7 +56,7 @@ void RDMulticaster::subscribe(const QHostAddress &addr) { struct ip_mreqn mreq; - for(unsigned i=0;iwriteBlock(msg.utf8(),msg.utf8().length(),m_addr,port); + multi_socket->writeDatagram(msg.utf8(),msg.utf8().length(),m_addr,port); } -void RDMulticaster::activatedData(int sock) +void RDMulticaster::readyReadData() { struct sockaddr_in sa; socklen_t sa_len=sizeof(struct sockaddr_in); @@ -109,7 +107,8 @@ void RDMulticaster::activatedData(int sock) int n; memset(&sa,0,sizeof(sa)); - while((n=recvfrom(multi_socket->socket(),data,1500,MSG_DONTWAIT,(sockaddr *)&sa,&sa_len))>0) { + while((n=recvfrom(multi_socket->socketDescriptor(),data,1500,MSG_DONTWAIT, + (sockaddr *)&sa,&sa_len))>0) { data[n]=0; QString msg(data); emit received(msg,QHostAddress(ntohl(sa.sin_addr.s_addr))); diff --git a/lib/rdmulticaster.h b/lib/rdmulticaster.h index c8df32c5..c167c8bf 100644 --- a/lib/rdmulticaster.h +++ b/lib/rdmulticaster.h @@ -2,7 +2,7 @@ // // Multi-interface multicast transciever // -// (C) Copyright 2018 Fred Gleason +// (C) Copyright 2018-2021 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Library General Public License @@ -23,12 +23,7 @@ #include -#include - -#include -#include -#include -#include +#include class RDMulticaster : public QObject { @@ -47,13 +42,12 @@ class RDMulticaster : public QObject void send(const QString &msg,const QHostAddress &m_addr,uint16_t port); private slots: - void activatedData(int sock); + void readyReadData(); private: void GetInterfaces(); - Q3SocketDevice *multi_socket; - QSocketNotifier *multi_notifier; - std::vector multi_iface_addresses; + QUdpSocket *multi_socket; + QList multi_iface_addresses; };