From c9c63074bbd7025c624ab4987c3a32fd2e925b6a Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 5 Aug 2013 17:44:39 -0400 Subject: CLI communication now working. --- cli.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'cli.cpp') diff --git a/cli.cpp b/cli.cpp index 46c8dd61..6dba0674 100644 --- a/cli.cpp +++ b/cli.cpp @@ -37,6 +37,7 @@ #include "node/Constants.hpp" #include "node/Utils.hpp" #include "node/Thread.hpp" +#include "node/Condition.hpp" using namespace ZeroTier; @@ -51,14 +52,15 @@ static void printHelp(FILE *out,const char *exename) fprintf(out,"Use the 'help' command to get help from ZeroTier One itself."ZT_EOL_S); } -static volatile uint64_t lastResultTime = 0ULL; static volatile unsigned int numResults = 0; +static Condition doneCondition; static void resultHandler(void *arg,unsigned long id,const char *line) { - lastResultTime = Utils::now(); ++numResults; - fprintf(stdout,"%s"ZT_EOL_S,line); + if (strlen(line)) + fprintf(stdout,"%s"ZT_EOL_S,line); + else doneCondition.signal(); } int main(int argc,char **argv) @@ -118,9 +120,7 @@ int main(int argc,char **argv) Node::LocalClient client(authToken.c_str(),&resultHandler,(void *)0); client.send(command.c_str()); - lastResultTime = Utils::now(); - while ((Utils::now() - lastResultTime) < 300) - Thread::sleep(50); + doneCondition.wait(1000); if (!numResults) { fprintf(stdout,"ERROR: no results received. Is ZeroTier One running?"ZT_EOL_S); -- cgit v1.2.3