2022-11-01 Fred Gleason <fredg@paravelsystems.com>

* Added a 'Reload Decks' operation to 'RDCatchEvent'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2022-11-01 16:46:02 -04:00
parent 47b6105b4b
commit 54d8bd4a10
6 changed files with 82 additions and 4 deletions

View File

@ -23602,3 +23602,5 @@
2022-11-01 Fred Gleason <fredg@paravelsystems.com>
* Refactored rdcatchd(1) to eliminate the need for the 'Set Exit Code'
catch command.
2022-11-01 Fred Gleason <fredg@paravelsystems.com>
* Added a 'Reload Decks' operation to 'RDCatchEvent'.

View File

@ -612,6 +612,49 @@
</sect3>
</sect2>
<sect2 xml:id="sect.rdcatch_reload_decks">
<title>Reload Decks Operation</title>
<para>
Emitted by <command>rdadmin</command><manvolnum>1</manvolnum> to
trigger a reload of the record and play-out deck parameters.
</para>
<table xml:id="table.rdcatch_reload_decks" frame="all" pgwide="0">
<title>RDCatch Reload Decks Fields</title>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="Field" colwidth="10.0*"/>
<colspec colname="Offset" colwidth="2.0*"/>
<colspec colname="Value" colwidth="10.0*"/>
<tbody>
<row>
<entry>Field</entry>
<entry>Offset</entry>
<entry>Value</entry>
</row>
<row>
<entry>Keyword</entry>
<entry>0</entry>
<entry>CATCH</entry>
</row>
<row>
<entry>Originating Hostname</entry>
<entry>1</entry>
<entry>String, from STATIONS.NAME</entry>
</row>
<row>
<entry>Operation</entry>
<entry>2</entry>
<entry>Integer. 7 [RDCatchEvent::ReloadDecksOp]</entry>
</row>
<row>
<entry>Target Hostname</entry>
<entry>3</entry>
<entry>String, from STATIONS.NAME</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 xml:id="sect.rdcatch_stop_deck">
<title>Stop Deck Operation</title>
<para>

View File

@ -292,6 +292,19 @@ bool RDCatchEvent::read(const QString &str)
}
break;
case RDCatchEvent::ReloadDecksOp:
if(f0.size()!=4) {
return false;
}
chan=f0.at(4).toInt(&ok);
if(ok&&(chan<255)) {
d_operation=op;
d_host_name=f0.at(1);
d_target_host_name=f0.at(3);
return true;
}
break;
case RDCatchEvent::NullOp:
case RDCatchEvent::LastOp:
break;
@ -349,6 +362,10 @@ QString RDCatchEvent::write() const
ret+=" "+d_target_host_name;
ret+=QString::asprintf(" %u",d_deck_channel);
break;
case RDCatchEvent::ReloadDecksOp:
ret+=" "+d_target_host_name;
break;
}
return ret;
@ -387,21 +404,26 @@ QString RDCatchEvent::dump() const
ret+=QString::asprintf("cut number: %d\n",d_cut_number);
break;
case RDCatchEvent::ReloadDecksOp:
ret+="operation: RDCatchEvent::ReloadDecksOp\n";
ret+="target hostname: "+d_target_host_name+"\n";
break;
case RDCatchEvent::StopDeckOp:
ret+="operation: RDCatchEvent::DeckEventProcessedOp\n";
ret+="operation: RDCatchEvent::StopDeckOp\n";
ret+="target hostname: "+d_target_host_name+"\n";
ret+=QString::asprintf("deck channel: %u\n",d_deck_channel);
break;
case RDCatchEvent::SetInputMonitorOp:
ret+="operation: RDCatchEvent::DeckEventProcessedOp\n";
ret+="operation: RDCatchEvent::SetInputMonitorOp\n";
ret+="target hostname: "+d_target_host_name+"\n";
ret+=QString::asprintf("deck channel: %u\n",d_deck_channel);
ret+=QString::asprintf("input monitor active: %u\n",d_input_monitor_active);
break;
case RDCatchEvent::SetInputMonitorResponseOp:
ret+="operation: RDCatchEvent::DeckEventProcessedOp\n";
ret+="operation: RDCatchEvent::SetInputMonitorResponseOp\n";
ret+=QString::asprintf("deck channel: %u\n",d_deck_channel);
ret+=QString::asprintf("input monitor active: %u\n",d_input_monitor_active);
break;

View File

@ -32,7 +32,7 @@ class RDCatchEvent
enum Operation {NullOp=0,DeckEventProcessedOp=1,
DeckStatusQueryOp=2,DeckStatusResponseOp=3,
StopDeckOp=4,SetInputMonitorOp=5,SetInputMonitorResponseOp=6,
LastOp=7};
ReloadDecksOp=7,LastOp=8};
RDCatchEvent(RDDeck::Status status);
RDCatchEvent();
Operation operation() const;

View File

@ -538,6 +538,11 @@ void EditDecks::closeData()
WriteRecord(0);
WriteRecord(edit_record_channel);
WriteRecord(edit_play_channel);
RDCatchEvent *evt=new RDCatchEvent();
evt->setOperation(RDCatchEvent::ReloadDecksOp);
evt->setTargetHostName(edit_station->name());
rda->ripc()->sendCatchEvent(evt);
delete evt;
done(true);
}

View File

@ -519,6 +519,12 @@ void MainObject::catchEventReceivedData(RDCatchEvent *evt)
}
break;
case RDCatchEvent::ReloadDecksOp:
if(evt->targetHostName()==rda->station()->name()) {
LoadDeckList();
}
break;
case RDCatchEvent::DeckEventProcessedOp:
case RDCatchEvent::DeckStatusResponseOp:
case RDCatchEvent::SetInputMonitorResponseOp: