diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-28 15:09:49 -0400 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-28 15:09:49 -0400 |
commit | 3745377872fe89cc06fb08de9b998c64c31e765c (patch) | |
tree | ca024d1577b5ee43ac630a88157045a4257230cd /netconf-service | |
parent | 01a70d09db917ce475120854514ee48af43cc1b1 (diff) | |
download | infinitytier-3745377872fe89cc06fb08de9b998c64c31e765c.tar.gz infinitytier-3745377872fe89cc06fb08de9b998c64c31e765c.zip |
Filter work, add name and desc to netconf response, small compiler warning fix.
Diffstat (limited to 'netconf-service')
-rw-r--r-- | netconf-service/netconf.cpp | 55 |
1 files changed, 26 insertions, 29 deletions
diff --git a/netconf-service/netconf.cpp b/netconf-service/netconf.cpp index c8da3d03..bf64fff1 100644 --- a/netconf-service/netconf.cpp +++ b/netconf-service/netconf.cpp @@ -81,29 +81,6 @@ static Mutex stdoutWriteLock; static Connection *dbCon = (Connection *)0; static char mysqlHost[64],mysqlPort[64],mysqlDatabase[64],mysqlUser[64],mysqlPassword[64]; -static void connectOrReconnect() -{ - for(;;) { - delete dbCon; - try { - dbCon = new Connection(mysqlDatabase,mysqlHost,mysqlUser,mysqlPassword,(unsigned int)strtol(mysqlPort,(char **)0,10)); - if (dbCon->connected()) { - fprintf(stderr,"(re?)-connected to mysql server successfully\n"); - break; - } else { - fprintf(stderr,"unable to connect to database server (connection closed), trying again in 1s...\n"); - usleep(1000000); - } - } catch (std::exception &exc) { - fprintf(stderr,"unable to connect to database server (%s), trying again in 1s...\n",exc.what()); - usleep(1000000); - } catch ( ... ) { - fprintf(stderr,"unable to connect to database server (unknown exception), trying again in 1s...\n"); - usleep(1000000); - } - } -} - int main(int argc,char **argv) { { @@ -140,7 +117,20 @@ int main(int argc,char **argv) char buf[131072]; std::string dictBuf; - connectOrReconnect(); + try { + dbCon = new Connection(mysqlDatabase,mysqlHost,mysqlUser,mysqlPassword,(unsigned int)strtol(mysqlPort,(char **)0,10)); + if (dbCon->connected()) { + fprintf(stderr,"connected to mysql server successfully\n"); + break; + } else { + fprintf(stderr,"unable to connect to database server\n"); + return -1; + } + } catch (std::exception &exc) { + fprintf(stderr,"unable to connect to database server: %s\n",exc.what()); + return -1; + } + for(;;) { for(int l=0;l<4;) { int n = (int)read(STDIN_FILENO,buf + l,4 - l); @@ -164,8 +154,10 @@ int main(int argc,char **argv) Dictionary request(dictBuf); dictBuf = ""; - if (!dbCon->connected()) - connectOrReconnect(); + if (!dbCon->connected()) { + fprintf(stderr,"connection to database server lost\n"); + return -1; + } try { const std::string &reqType = request.get("type"); @@ -213,13 +205,16 @@ int main(int argc,char **argv) } bool isOpen = false; + std::string name,desc; { Query q = dbCon->query(); - q << "SELECT isOpen FROM Network WHERE id = " << nwid; + q << "SELECT name,desc,isOpen FROM Network WHERE id = " << nwid; StoreQueryResult rs = q.store(); - if (rs.num_rows() > 0) + if (rs.num_rows() > 0) { + name = rs[0]["name"].c_str(); + desc = rs[0]["desc"].c_str(); isOpen = ((int)rs[0]["isOpen"] > 0); - else { + } else { Dictionary response; response["peer"] = peerIdentity.address().toString(); response["nwid"] = request.get("nwid"); @@ -243,6 +238,8 @@ int main(int argc,char **argv) sprintf(buf,"%.16llx",(unsigned long long)nwid); netconf["nwid"] = buf; netconf["isOpen"] = (isOpen ? "1" : "0"); + netconf["name"] = name; + netconf["desc"] = desc; sprintf(buf,"%llx",(unsigned long long)Utils::now()); netconf["ts"] = buf; |