Device Emulation (contd.): Apply for deviceGroups implemented. This code has revealed bugs in other parts of the code which will be fixed in subsequent commits
This commit is contained in:
parent
bb69e644b1
commit
0ccb3e2fbd
@ -409,6 +409,38 @@ void Port::getModifiedStreamsSinceLastSync(
|
||||
qDebug("Done %s", __FUNCTION__);
|
||||
}
|
||||
|
||||
void Port::getDeletedDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupIdList &deviceGroupIdList)
|
||||
{
|
||||
deviceGroupIdList.clear_device_group_id();
|
||||
foreach(int id, lastSyncDeviceGroupList_) {
|
||||
if (!deviceGroupById(id))
|
||||
deviceGroupIdList.add_device_group_id()->set_id(id);
|
||||
}
|
||||
}
|
||||
|
||||
void Port::getNewDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupIdList &deviceGroupIdList)
|
||||
{
|
||||
deviceGroupIdList.clear_device_group_id();
|
||||
foreach(OstProto::DeviceGroup *dg, deviceGroups_) {
|
||||
quint32 dgid = dg->device_group_id().id();
|
||||
if (!lastSyncDeviceGroupList_.contains(dgid))
|
||||
deviceGroupIdList.add_device_group_id()->set_id(dgid);
|
||||
}
|
||||
}
|
||||
|
||||
void Port::getModifiedDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupConfigList &deviceGroupConfigList)
|
||||
{
|
||||
// FIXME: we currently don't have any mechanism to check
|
||||
// if a DeviceGroup was modified since last sync, so we
|
||||
// include all DeviceGroups
|
||||
deviceGroupConfigList.clear_device_group();
|
||||
foreach(OstProto::DeviceGroup *dg, deviceGroups_)
|
||||
deviceGroupConfigList.add_device_group()->CopyFrom(*dg);
|
||||
}
|
||||
|
||||
void Port::when_syncComplete()
|
||||
{
|
||||
//reorderStreamsByOrdinals();
|
||||
@ -416,6 +448,12 @@ void Port::when_syncComplete()
|
||||
mLastSyncStreamList.clear();
|
||||
for (int i=0; i<mStreams.size(); i++)
|
||||
mLastSyncStreamList.append(mStreams[i]->id());
|
||||
|
||||
lastSyncDeviceGroupList_.clear();
|
||||
for (int i = 0; i < deviceGroups_.size(); i++) {
|
||||
lastSyncDeviceGroupList_.append(
|
||||
deviceGroups_.at(i)->device_group_id().id());
|
||||
}
|
||||
}
|
||||
|
||||
void Port::updateStats(OstProto::PortStats *portStats)
|
||||
|
@ -52,6 +52,7 @@ class Port : public QObject {
|
||||
QList<quint32> mLastSyncStreamList;
|
||||
QList<Stream*> mStreams; // sorted by stream's ordinal value
|
||||
|
||||
QList<quint32> lastSyncDeviceGroupList_;
|
||||
QList<OstProto::DeviceGroup*> deviceGroups_;
|
||||
|
||||
uint newStreamId();
|
||||
@ -134,6 +135,13 @@ public:
|
||||
void getModifiedStreamsSinceLastSync(
|
||||
OstProto::StreamConfigList &streamConfigList);
|
||||
|
||||
void getDeletedDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupIdList &streamIdList);
|
||||
void getNewDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupIdList &streamIdList);
|
||||
void getModifiedDeviceGroupsSinceLastSync(
|
||||
OstProto::DeviceGroupConfigList &streamConfigList);
|
||||
|
||||
void when_syncComplete();
|
||||
|
||||
void setAveragePacketRate(double packetsPerSec);
|
||||
|
@ -389,6 +389,13 @@ void PortGroup::when_configApply(int portIndex)
|
||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||
mainWindow->setDisabled(true);
|
||||
|
||||
// FIXME: as currently written this code will make unnecessary RPCs
|
||||
// even if the request contains no data; the fix will need to take
|
||||
// care to identify when sync is complete
|
||||
|
||||
//
|
||||
// Update/Sync Streams
|
||||
//
|
||||
qDebug("applying 'deleted streams' ...");
|
||||
streamIdList = new OstProto::StreamIdList;
|
||||
ack = new OstProto::Ack;
|
||||
@ -422,6 +429,47 @@ void PortGroup::when_configApply(int portIndex)
|
||||
serviceStub->modifyStream(controller, streamConfigList, ack,
|
||||
NewCallback(this, &PortGroup::processModifyStreamAck,
|
||||
portIndex, controller));
|
||||
|
||||
//
|
||||
// Update/Sync DeviceGroups
|
||||
//
|
||||
OstProto::DeviceGroupIdList *deviceGroupIdList;
|
||||
OstProto::DeviceGroupConfigList *deviceGroupConfigList;
|
||||
|
||||
qDebug("applying 'deleted deviceGroups' ...");
|
||||
deviceGroupIdList = new OstProto::DeviceGroupIdList;
|
||||
ack = new OstProto::Ack;
|
||||
controller = new PbRpcController(deviceGroupIdList, ack);
|
||||
|
||||
deviceGroupIdList->mutable_port_id()->set_id(mPorts[portIndex]->id());
|
||||
mPorts[portIndex]->getDeletedDeviceGroupsSinceLastSync(*deviceGroupIdList);
|
||||
|
||||
serviceStub->deleteDeviceGroup(controller, deviceGroupIdList, ack,
|
||||
NewCallback(this, &PortGroup::processDeleteDeviceGroupAck, controller));
|
||||
|
||||
qDebug("applying 'new deviceGroups' ...");
|
||||
deviceGroupIdList = new OstProto::DeviceGroupIdList;
|
||||
ack = new OstProto::Ack;
|
||||
controller = new PbRpcController(deviceGroupIdList, ack);
|
||||
|
||||
deviceGroupIdList->mutable_port_id()->set_id(mPorts[portIndex]->id());
|
||||
mPorts[portIndex]->getNewDeviceGroupsSinceLastSync(*deviceGroupIdList);
|
||||
|
||||
serviceStub->addDeviceGroup(controller, deviceGroupIdList, ack,
|
||||
NewCallback(this, &PortGroup::processAddDeviceGroupAck, controller));
|
||||
|
||||
qDebug("applying 'modified deviceGroups' ...");
|
||||
deviceGroupConfigList = new OstProto::DeviceGroupConfigList;
|
||||
ack = new OstProto::Ack;
|
||||
controller = new PbRpcController(deviceGroupConfigList, ack);
|
||||
|
||||
deviceGroupConfigList->mutable_port_id()->set_id(mPorts[portIndex]->id());
|
||||
mPorts[portIndex]->getModifiedDeviceGroupsSinceLastSync(
|
||||
*deviceGroupConfigList);
|
||||
|
||||
serviceStub->modifyDeviceGroup(controller, deviceGroupConfigList, ack,
|
||||
NewCallback(this, &PortGroup::processModifyDeviceGroupAck,
|
||||
portIndex, controller));
|
||||
}
|
||||
|
||||
void PortGroup::processAddStreamAck(PbRpcController *controller)
|
||||
@ -440,6 +488,25 @@ void PortGroup::processModifyStreamAck(int portIndex,
|
||||
PbRpcController *controller)
|
||||
{
|
||||
qDebug("In %s", __FUNCTION__);
|
||||
delete controller;
|
||||
}
|
||||
|
||||
void PortGroup::processAddDeviceGroupAck(PbRpcController *controller)
|
||||
{
|
||||
qDebug("In %s", __FUNCTION__);
|
||||
delete controller;
|
||||
}
|
||||
|
||||
void PortGroup::processDeleteDeviceGroupAck(PbRpcController *controller)
|
||||
{
|
||||
qDebug("In %s", __FUNCTION__);
|
||||
delete controller;
|
||||
}
|
||||
|
||||
void PortGroup::processModifyDeviceGroupAck(int portIndex,
|
||||
PbRpcController *controller)
|
||||
{
|
||||
qDebug("In %s", __FUNCTION__);
|
||||
|
||||
qDebug("apply completed");
|
||||
mPorts[portIndex]->when_syncComplete();
|
||||
@ -563,8 +630,6 @@ void PortGroup::processStreamIdList(int portIndex, PbRpcController *controller)
|
||||
mPorts[portIndex]->insertStream(streamId);
|
||||
}
|
||||
|
||||
mPorts[portIndex]->when_syncComplete();
|
||||
|
||||
// Are we done for all ports?
|
||||
if (numPorts() && portIndex >= (numPorts()-1))
|
||||
{
|
||||
@ -706,7 +771,7 @@ void PortGroup::processDeviceGroupIdList(
|
||||
mPorts[portIndex]->insertDeviceGroup(devGrpId);
|
||||
}
|
||||
|
||||
//FIXME: mPorts[portIndex]->when_syncComplete();
|
||||
mPorts[portIndex]->when_syncComplete();
|
||||
|
||||
// Are we done for all ports?
|
||||
if (numPorts() && portIndex >= (numPorts()-1))
|
||||
|
@ -106,6 +106,10 @@ public:
|
||||
void processDeleteStreamAck(PbRpcController *controller);
|
||||
void processModifyStreamAck(int portIndex, PbRpcController *controller);
|
||||
|
||||
void processAddDeviceGroupAck(PbRpcController *controller);
|
||||
void processDeleteDeviceGroupAck(PbRpcController *controller);
|
||||
void processModifyDeviceGroupAck(int portIndex, PbRpcController *controller);
|
||||
|
||||
void modifyPort(int portId, OstProto::Port portConfig);
|
||||
void processModifyPortAck(PbRpcController *controller);
|
||||
void processUpdatedPortConfig(PbRpcController *controller);
|
||||
|
Loading…
Reference in New Issue
Block a user