Optimization: Modify port from the Ostinato GUI client now only sends those fields that have changed

This commit is contained in:
Srivats P. 2015-05-07 21:12:06 +05:30
parent 382c94b326
commit 250065970f

View File

@ -68,24 +68,25 @@ PortConfigDialog::PortConfigDialog(OstProto::Port &portConfig, QWidget *parent)
void PortConfigDialog::accept() void PortConfigDialog::accept()
{ {
OstProto::Port pc;
if (sequentialStreamsButton->isChecked()) if (sequentialStreamsButton->isChecked())
portConfig_.set_transmit_mode(OstProto::kSequentialTransmit); pc.set_transmit_mode(OstProto::kSequentialTransmit);
else if (interleavedStreamsButton->isChecked()) else if (interleavedStreamsButton->isChecked())
portConfig_.set_transmit_mode(OstProto::kInterleavedTransmit); pc.set_transmit_mode(OstProto::kInterleavedTransmit);
else else
Q_ASSERT(false); // Unreachable!!! Q_ASSERT(false); // Unreachable!!!
switch (reservedBy_) { switch (reservedBy_) {
case kSelf: case kSelf:
if (!reserveButton->isChecked()) if (!reserveButton->isChecked())
portConfig_.set_user_name(""); // unreserve pc.set_user_name(""); // unreserve
break; break;
case kOther: case kOther:
case kNone: case kNone:
if (reserveButton->isChecked()) if (reserveButton->isChecked())
portConfig_.set_user_name( pc.set_user_name(myself_.toStdString()); // (force) reserve
myself_.toStdString()); // (force) reserve
break; break;
default: default:
@ -93,7 +94,23 @@ void PortConfigDialog::accept()
break; break;
} }
portConfig_.set_is_exclusive_control(exclusiveControlButton->isChecked()); pc.set_is_exclusive_control(exclusiveControlButton->isChecked());
// Update fields that have changed, clear the rest
if (pc.transmit_mode() != portConfig_.transmit_mode())
portConfig_.set_transmit_mode(pc.transmit_mode());
else
portConfig_.clear_transmit_mode();
if (pc.user_name() != portConfig_.user_name())
portConfig_.set_user_name(pc.user_name());
else
portConfig_.clear_user_name();
if (pc.is_exclusive_control() != portConfig_.is_exclusive_control())
portConfig_.set_is_exclusive_control(pc.is_exclusive_control());
else
portConfig_.clear_is_exclusive_control();
QDialog::accept(); QDialog::accept();
} }