summaryrefslogtreecommitdiffstats
path: root/src/net/mcast
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/mcast')
-rw-r--r--src/net/mcast/McastConfiguration.cpp39
-rw-r--r--src/net/mcast/McastConfiguration.h5
-rw-r--r--src/net/mcast/McastPGMSocket.cpp12
-rw-r--r--src/net/mcast/McastSender.cpp2
4 files changed, 55 insertions, 3 deletions
diff --git a/src/net/mcast/McastConfiguration.cpp b/src/net/mcast/McastConfiguration.cpp
index 1a1c0a8..489eb3f 100644
--- a/src/net/mcast/McastConfiguration.cpp
+++ b/src/net/mcast/McastConfiguration.cpp
@@ -5,5 +5,44 @@
* Author: brs
*/
+#include <QSettings>
+
#include "McastConfiguration.h"
+void McastConfiguration::loadFrom(QSettings* _settings, char const* group)
+{
+ if (group)
+ _settings->beginGroup(group);
+
+ _multicastAddress = _settings->value("groupAddress", DEFAULT_MULTICAST_ADDRESS).toString();
+ _multicastInterface = _settings->value("interface", DEFAULT_MULTICAST_INTERFACE).toString();
+ _multicastMTU = _settings->value("mtu", DEFAULT_MULTICAST_MTU).value<quint16>();
+ _multicastRate = _settings->value("rate", DEFAULT_MULTICAST_RATE).value<quint32>();
+ _multicastUseUDP = _settings->value("use-udp", DEFAULT_MULTICAST_USEUDP).toBool();
+ _multicastWinSize = _settings->value("winsize", DEFAULT_MULTICAST_WSIZ).value<quint16>();
+ _multicastUDPPortBase = _settings->value("portbase", DEFAULT_MULTICAST_UDPPORT).value<quint16>();
+ _multicastDPort = _settings->value("dport", DEFAULT_MULTICAST_DPORT).value<quint16>();
+ _multicastSPort = _settings->value("sport", DEFAULT_MULTICAST_SPORT).value<quint16>();
+
+ if (group)
+ _settings->endGroup();
+}
+
+void McastConfiguration::writeTo(QSettings* _settings, char const* group) const
+{
+ if (group)
+ _settings->beginGroup(group);
+
+ _settings->setValue("groupAddress", _multicastAddress);
+ _settings->setValue("interface", _multicastInterface);
+ _settings->setValue("mtu", _multicastMTU);
+ _settings->setValue("rate", _multicastRate);
+ _settings->setValue("use-udp", _multicastUseUDP);
+ _settings->setValue("winsize", _multicastWinSize);
+ _settings->setValue("portbase", _multicastUDPPortBase);
+ _settings->setValue("dport", _multicastDPort);
+ _settings->setValue("sport", _multicastSPort);
+
+ if (group)
+ _settings->endGroup();
+}
diff --git a/src/net/mcast/McastConfiguration.h b/src/net/mcast/McastConfiguration.h
index 2e64678..b010f60 100644
--- a/src/net/mcast/McastConfiguration.h
+++ b/src/net/mcast/McastConfiguration.h
@@ -23,6 +23,8 @@
#include "McastConstants.h"
+class QSettings;
+
class McastConfiguration: public QObject
{
Q_OBJECT
@@ -164,6 +166,9 @@ public:
emit changed();
}
+ void loadFrom(QSettings* settings, char const* group = 0);
+ void writeTo(QSettings* settings, char const* group = 0) const;
+
signals:
void changed();
diff --git a/src/net/mcast/McastPGMSocket.cpp b/src/net/mcast/McastPGMSocket.cpp
index 105bea9..7952f00 100644
--- a/src/net/mcast/McastPGMSocket.cpp
+++ b/src/net/mcast/McastPGMSocket.cpp
@@ -567,6 +567,11 @@ void McastPGMSocket::sendPacket(QByteArray const& bytes)
void McastPGMSocket::finish()
{
+ if (_finished)
+ {
+ return;
+ }
+
qDebug() << "finish()";
Q_FOREACH(QSocketNotifier* notif, _priv->_notifs)
@@ -582,8 +587,11 @@ void McastPGMSocket::finish()
_priv->send_notif = 0;
}
- pgm_close(_priv->socket, 1);
- _priv->socket = 0;
+ if (_priv->socket)
+ {
+ pgm_close(_priv->socket, 1);
+ _priv->socket = 0;
+ }
_finished = true;
diff --git a/src/net/mcast/McastSender.cpp b/src/net/mcast/McastSender.cpp
index 322b751..e25ec86 100644
--- a/src/net/mcast/McastSender.cpp
+++ b/src/net/mcast/McastSender.cpp
@@ -111,6 +111,6 @@ void McastSender::close()
void McastSender::socketFinished()
{
- delete _socket;
+ _socket->deleteLater();
emit finished();
}