Improved debug messages for all MistIn processes, added ability to manually kill MistIn processes.
This commit is contained in:
parent
7647430cf3
commit
dcde050143
2 changed files with 20 additions and 11 deletions
|
@ -154,10 +154,10 @@ namespace Mist {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_MSG(DLVL_DONTEVEN,"Pre-While");
|
DEBUG_MSG(DLVL_DEVEL,"Input for stream %s started", streamName.c_str());
|
||||||
|
|
||||||
long long int activityCounter = Util::bootSecs();
|
long long int activityCounter = Util::bootSecs();
|
||||||
while ((Util::bootSecs() - activityCounter) < 10){//10 second timeout
|
while ((Util::bootSecs() - activityCounter) < 10 && config->is_active){//10 second timeout
|
||||||
Util::wait(1000);
|
Util::wait(1000);
|
||||||
removeUnused();
|
removeUnused();
|
||||||
userPage.parseEach(callbackWrapper);
|
userPage.parseEach(callbackWrapper);
|
||||||
|
@ -169,7 +169,7 @@ namespace Mist {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
DEBUG_MSG(DLVL_DEVEL,"Closing clean");
|
DEBUG_MSG(DLVL_DEVEL,"Input for stream %s closing clean", streamName.c_str());
|
||||||
//end player functionality
|
//end player functionality
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -9,22 +9,24 @@
|
||||||
#include INPUTTYPE
|
#include INPUTTYPE
|
||||||
#include <mist/config.h>
|
#include <mist/config.h>
|
||||||
#include <mist/defines.h>
|
#include <mist/defines.h>
|
||||||
|
#include <mist/procs.h>
|
||||||
|
|
||||||
int main(int argc, char * argv[]) {
|
int main(int argc, char * argv[]) {
|
||||||
Util::Config conf(argv[0], PACKAGE_VERSION);
|
Util::Config conf(argv[0], PACKAGE_VERSION);
|
||||||
mistIn conv(&conf);
|
mistIn conv(&conf);
|
||||||
if (conf.parseArgs(argc, argv)) {
|
if (conf.parseArgs(argc, argv)) {
|
||||||
|
std::string streamName = conf.getString("streamname");
|
||||||
IPC::semaphore playerLock;
|
IPC::semaphore playerLock;
|
||||||
if(conf.getString("streamname").size()){
|
if (streamName.size()){
|
||||||
playerLock.open(std::string("/lock_" + conf.getString("streamname")).c_str(), O_CREAT | O_RDWR, ACCESSPERMS, 1);
|
playerLock.open(std::string("/lock_" + streamName).c_str(), O_CREAT | O_RDWR, ACCESSPERMS, 1);
|
||||||
if (!playerLock.tryWait()){
|
if (!playerLock.tryWait()){
|
||||||
DEBUG_MSG(DLVL_DEVEL, "A player for stream %s is already running", conf.getString("streamname").c_str());
|
DEBUG_MSG(DLVL_DEVEL, "A player for stream %s is already running", streamName.c_str());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
conf.activate();
|
conf.activate();
|
||||||
while (conf.is_active){
|
while (conf.is_active){
|
||||||
int pid = fork();
|
pid_t pid = fork();
|
||||||
if (pid == 0){
|
if (pid == 0){
|
||||||
playerLock.close();
|
playerLock.close();
|
||||||
return conv.run();
|
return conv.run();
|
||||||
|
@ -36,15 +38,23 @@ int main(int argc, char * argv[]) {
|
||||||
}
|
}
|
||||||
//wait for the process to exit
|
//wait for the process to exit
|
||||||
int status;
|
int status;
|
||||||
while (waitpid(pid, &status, 0) != pid && errno == EINTR) continue;
|
while (waitpid(pid, &status, 0) != pid && errno == EINTR){
|
||||||
|
if (!conf.is_active){
|
||||||
|
DEBUG_MSG(DLVL_DEVEL, "Shutting down input for stream %s because of signal interrupt...", streamName.c_str());
|
||||||
|
Util::Procs::Stop(pid);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//if the exit was clean, don't restart it
|
//if the exit was clean, don't restart it
|
||||||
if (WIFEXITED(status) && (WEXITSTATUS(status) == 0)){
|
if (WIFEXITED(status) && (WEXITSTATUS(status) == 0)){
|
||||||
DEBUG_MSG(DLVL_MEDIUM, "Finished player succesfully");
|
DEBUG_MSG(DLVL_MEDIUM, "Input for stream %s shut down cleanly", streamName.c_str());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (DEBUG >= DLVL_DEVEL){
|
if (DEBUG >= DLVL_DEVEL){
|
||||||
DEBUG_MSG(DLVL_DEVEL, "Player exited with errors - stopping because this is a development build.");
|
DEBUG_MSG(DLVL_DEVEL, "Input for stream %s uncleanly shut down! Aborting restart; this is a development build.", streamName.c_str());
|
||||||
break;
|
break;
|
||||||
|
}else{
|
||||||
|
DEBUG_MSG(DLVL_DEVEL, "Input for stream %s uncleanly shut down! Restarting...", streamName.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
playerLock.post();
|
playerLock.post();
|
||||||
|
@ -53,4 +63,3 @@ int main(int argc, char * argv[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue