Added ctrl-c handling to reprocess and recovery tools.

This commit is contained in:
matlabbe
2018-02-13 16:54:31 -05:00
parent 3dfe1ccb1a
commit 02a64a7fa3
3 changed files with 26 additions and 11 deletions

View File

@@ -30,6 +30,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
using namespace rtabmap;
@@ -52,9 +53,21 @@ class RecoveryProgressState: public ProgressState
return true;
}
};
RecoveryProgressState state;
// catch ctrl-c
void sighandler(int sig)
{
printf("\nSignal %d caught...\n", sig);
state.setCanceled(true);
}
int main(int argc, char * argv[])
{
signal(SIGABRT, &sighandler);
signal(SIGTERM, &sighandler);
signal(SIGINT, &sighandler);
ULogger::setType(ULogger::kTypeConsole);
ULogger::setLevel(ULogger::kError);
@@ -74,7 +87,6 @@ int main(int argc, char * argv[])
std::string databasePath = argv[argc-1];
RecoveryProgressState state;
std::string errorMsg;
printf("Recovering \"%s\"\n", databasePath.c_str());
if(!databaseRecovery(databasePath, keepBackup, &errorMsg, &state))

View File

@@ -40,6 +40,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <string.h>
#include <stdlib.h>
#include <pcl/io/pcd_io.h>
#include <signal.h>
using namespace rtabmap;
@@ -58,18 +59,20 @@ void showUsage()
exit(1);
}
class RecoveryProgressState: public ProgressState
// catch ctrl-c
bool g_loopForever = true;
void sighandler(int sig)
{
virtual bool callback(const std::string & msg) const
{
if(!msg.empty())
printf("%s\n", msg.c_str());
return true;
}
};
printf("\nSignal %d caught...\n", sig);
g_loopForever = false;
}
int main(int argc, char * argv[])
{
signal(SIGABRT, &sighandler);
signal(SIGTERM, &sighandler);
signal(SIGINT, &sighandler);
ULogger::setType(ULogger::kTypeConsole);
ULogger::setLevel(ULogger::kError);
@@ -204,7 +207,7 @@ int main(int argc, char * argv[])
int processed = 0;
CameraInfo info;
SensorData data = dbReader.takeImage(&info);
while(data.isValid())
while(data.isValid() && g_loopForever)
{
UTimer iterationTime;
std::string status;