diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-05 17:44:39 -0400 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-05 17:44:39 -0400 |
| commit | c9c63074bbd7025c624ab4987c3a32fd2e925b6a (patch) | |
| tree | 42e2f6eb22299f806c8583b58838564acefa2eea /cli.cpp | |
| parent | 70f368fdc36cd91a3be0218fba7b2d4c6a8bc96f (diff) | |
| download | infinitytier-c9c63074bbd7025c624ab4987c3a32fd2e925b6a.tar.gz infinitytier-c9c63074bbd7025c624ab4987c3a32fd2e925b6a.zip | |
CLI communication now working.
Diffstat (limited to 'cli.cpp')
| -rw-r--r-- | cli.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -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<void>::sleep(50); + doneCondition.wait(1000); if (!numResults) { fprintf(stdout,"ERROR: no results received. Is ZeroTier One running?"ZT_EOL_S); |
