2019-05-17 Fred Gleason <fredg@paravelsystems.com>

* Added '--end-startup-after-caed', '--end-startup-after-ripcd',
	'--end-startup-after-rdcatchd', '--end-startup-after-rdpadd',
	'--end-startup-after-rdpadengined', '--end-startup-after-rdvairplayd',
	and '--end-startup-after-rdrepld' command line switches to
	rdservice(8).
This commit is contained in:
Fred Gleason
2019-05-17 13:58:34 -04:00
parent 03b02fdbf8
commit e2fc500ec8
5 changed files with 139 additions and 2 deletions

View File

@@ -57,6 +57,8 @@ MainObject::MainObject(QObject *parent)
QString err_msg;
RDApplication::ErrorType err_type=RDApplication::ErrorOk;
svc_startup_target=MainObject::TargetAll;
//
// Open the syslog
//
@@ -80,6 +82,23 @@ MainObject::MainObject(QObject *parent)
exit(2);
}
//
// Process Startup Options
//
for(unsigned i=0;i<rda->cmdSwitch()->keys();i++) {
for(int j=0;j<MainObject::TargetAll;j++) {
MainObject::StartupTarget target=(MainObject::StartupTarget)j;
if(rda->cmdSwitch()->key(i)==TargetCommandString(target)) {
svc_startup_target=target;
rda->cmdSwitch()->setProcessed(i,true);
}
}
if(!rda->cmdSwitch()->processed(i)) {
fprintf(stderr,"rdservice: unknown command-line option\n");
exit(4);
}
}
//
// Exit Timer
//

View File

@@ -44,6 +44,9 @@ class MainObject : public QObject
{
Q_OBJECT;
public:
enum StartupTarget {TargetCaed=0,TargetRipcd=1,TargetRdcatchd=2,
TargetRdpadd=3,TargetRdpadengined=4,
TargetRdvairplayd=5,TargetRdrepld=6,TargetAll=7};
MainObject(QObject *parent=0);
private slots:
@@ -62,9 +65,11 @@ class MainObject : public QObject
int GetMaintInterval() const;
void RunEphemeralProcess(int id,const QString &program,
const QStringList &args);
QString TargetCommandString(StartupTarget target) const;
QMap<int,RDProcess *> svc_processes;
QTimer *svc_maint_timer;
QTimer *svc_exit_timer;
StartupTarget svc_startup_target;
};

View File

@@ -58,6 +58,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_CAED_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetCaed) {
fprintf(stderr,"Startup target caed(8) reached\n");
return true;
}
//
// ripcd(8)
@@ -71,6 +75,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_RIPCD_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetRipcd) {
fprintf(stderr,"Startup target ripcd(8) reached\n");
return true;
}
//
// rdcatchd(8)
@@ -84,6 +92,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_RDCATCHD_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetRdcatchd) {
fprintf(stderr,"Startup target rdcatchd(8) reached\n");
return true;
}
//
// rdpadd(8)
@@ -97,6 +109,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_RDPADD_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetRdpadd) {
fprintf(stderr,"Startup target rdpadd(8) reached\n");
return true;
}
//
// *** BAND-AID * BAND_AID * YEECH! ***
@@ -118,6 +134,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_RDPADENGINED_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetRdpadengined) {
fprintf(stderr,"Startup target rdpadengined(8) reached\n");
return true;
}
//
// rdvairplayd(8)
@@ -131,6 +151,10 @@ bool MainObject::Startup(QString *err_msg)
svc_processes[RDSERVICE_RDVAIRPLAYD_ID]->errorText();
return false;
}
if(svc_startup_target==MainObject::TargetRdvairplayd) {
fprintf(stderr,"Startup target rdvairplayd(8) reached\n");
return true;
}
//
// rdrepld(8)
@@ -150,6 +174,10 @@ bool MainObject::Startup(QString *err_msg)
}
}
delete q;
if(svc_startup_target==MainObject::TargetRdrepld) {
fprintf(stderr,"Startup target rdrepld(8) reached\n");
return true;
}
if(!StartDropboxes(err_msg)) {
return false;
@@ -296,3 +324,35 @@ void MainObject::KillProgram(const QString &program)
pids=RDGetPids(program);
}
}
QString MainObject::TargetCommandString(MainObject::StartupTarget target) const
{
switch(target) {
case MainObject::TargetCaed:
return QString("--end-startup-after-caed");
case MainObject::TargetRipcd:
return QString("--end-startup-after-ripcd");
case MainObject::TargetRdcatchd:
return QString("--end-startup-after-rdcatchd");
case MainObject::TargetRdpadd:
return QString("--end-startup-after-rdpadd");
case MainObject::TargetRdpadengined:
return QString("--end-startup-after-rdpadengined");
case MainObject::TargetRdvairplayd:
return QString("--end-startup-after-rdvairplayd");
case MainObject::TargetRdrepld:
return QString("--end-startup-after-rdrepld");
case MainObject::TargetAll:
break;
}
return QString();
}