From 158aadf2a79a109f56866f2cc2da1d16ca4051a7 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 19 Oct 2011 10:47:42 +0200 Subject: Make error handling for sync connection. --- client/praxisd.cc | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'client/praxisd.cc') diff --git a/client/praxisd.cc b/client/praxisd.cc index 740825e..5a0d88e 100644 --- a/client/praxisd.cc +++ b/client/praxisd.cc @@ -295,14 +295,25 @@ PraxisdSync::PraxisdSync(QString host, unsigned short int port) { this->host = host; this->port = port; + this->running = true; start(); } +PraxisdSync::~PraxisdSync() +{ + this->running = false; + wsem.release(); + wait(); +} + void PraxisdSync::run() { Praxisd praxisd(host, port); + connect(&praxisd, SIGNAL(networkError(QString)), + this, SLOT(networkError(QString)), Qt::DirectConnection); + connect(&praxisd, SIGNAL(gotCaveList(CaveVector)), this, SLOT(gotCaveList(CaveVector)), Qt::DirectConnection); @@ -314,7 +325,13 @@ void PraxisdSync::run() while(true) { wsem.acquire(); + + // Reset error state + error = false; + errorStr = ""; + if(this->running == false) break; + switch(request_type) { case Praxisd::journal: break; @@ -333,6 +350,26 @@ void PraxisdSync::run() exec(); } + + rsem.release(); +} + +bool PraxisdSync::hasError() +{ + return error; +} + +QString PraxisdSync::errorString() +{ + return errorStr; +} + +void PraxisdSync::networkError(QString err) +{ + error = true; + errorStr = err; + rsem.release(); + quit(); } void PraxisdSync::gotCaveList(CaveVector cl) -- cgit v1.2.3