diff options
author | Sebastien Braun | 2010-10-03 23:27:39 +0200 |
---|---|---|
committer | Sebastien Braun | 2010-10-05 22:12:25 +0200 |
commit | 5bcf831e1734be78d9468631926e875a5b05e11f (patch) | |
tree | 9424928fc4a25bc1ec60598d05db709773c7e438 /src/pvs.cpp | |
parent | Assorted Multicast Fixes: (diff) | |
download | pvs-5bcf831e1734be78d9468631926e875a5b05e11f.tar.gz pvs-5bcf831e1734be78d9468631926e875a5b05e11f.tar.xz pvs-5bcf831e1734be78d9468631926e875a5b05e11f.zip |
Implement Network-wide Configuration Interface for Multicast File Transfer
Diffstat (limited to 'src/pvs.cpp')
-rw-r--r-- | src/pvs.cpp | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/src/pvs.cpp b/src/pvs.cpp index 9bd36d6..df21468 100644 --- a/src/pvs.cpp +++ b/src/pvs.cpp @@ -45,7 +45,10 @@ PVS::PVS() : loadCommands(); _blankScreen = NULL; _vncPort = -1; + + QSettings settings; _masterMcastConfig = new McastConfiguration(this); + _masterMcastConfig->loadFrom(&settings); // add a notify to the allow file, so we get informed when the file is changed QString watchPath("/home/"); @@ -234,6 +237,11 @@ void PVS::onCommand(PVSMsg cmdMessage) qDebug() << "Ignoring malformed MCASTFTANNOUNCE command: " << message; return; } + if (ident.compare("MCASTFTCONFIG") == 0) + { + loadMcastConfig(message); + return; + } #ifdef never // prototype @@ -735,7 +743,8 @@ void PVS::cancelIncomingMulticastTransfer(qulonglong transferID) void PVS::setMulticastInterface(QString const& interfaceName) { QSettings settings; - settings.setValue("multicast/interface", interfaceName); + _masterMcastConfig->multicastInterface(interfaceName); + _masterMcastConfig->writeTo(&settings, "multicast"); settings.sync(); } @@ -814,3 +823,50 @@ void PVS::incomingMulticastTransferDelete(qulonglong transferID) _incomingTransfers.remove(transferID); transfer->deleteLater(); } + +void PVS::loadMcastConfig(QString const& message) +{ + QByteArray ba = QByteArray::fromBase64(message.toAscii()); + QDataStream d(&ba, QIODevice::ReadOnly); + quint16 ver, udpp, dp, sp, mtu, wsz; + quint32 rate; + QString addr; + bool useudp; + + d >> ver; + if(ver != 1) + { + ConsoleLog writeLine(QString("Unable to decode multicast configuration message: Unknown version %1").arg(ver)); + return; + } + + d >> addr + >> udpp + >> dp + >> sp + >> mtu + >> wsz + >> rate + >> useudp; + if(d.status() != QDataStream::Ok) + { + ConsoleLog writeLine(QString("Unable to decode multicast configuration message: There was an error reading")); + return; + } + + _masterMcastConfig->multicastUDPPortBase(udpp); + _masterMcastConfig->multicastDPort(dp); + _masterMcastConfig->multicastSPort(sp); + _masterMcastConfig->multicastMTU(mtu); + _masterMcastConfig->multicastWinSize(wsz); + _masterMcastConfig->multicastRate(rate); + _masterMcastConfig->multicastAddress(addr); + _masterMcastConfig->multicastUseUDP(useudp); + + QSettings settings; + _masterMcastConfig->writeTo(&settings, "multicast"); + settings.sync(); + + ConsoleLog writeLine(QString("Reconfigured multicast filetransfer to IP %1, UDP port base %2, destination port %3, source port %4, MTU %5, Window Size %6, rate %7, %8using UDP") + .arg(addr).arg(udpp).arg(dp).arg(sp).arg(mtu).arg(wsz).arg(rate).arg(useudp ? "" : "not ")); +} |