From: Brian Demsky Date: Fri, 22 Jul 2016 06:26:39 +0000 (-0700) Subject: edits X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=commitdiff_plain;h=511e50c6cab584740787ea62566c7b77f5c130d4;ds=sidebyside edits --- diff --git a/src/server/iotcloud.fcgi b/src/server/iotcloud.fcgi index c9614c3..fc754f4 100755 Binary files a/src/server/iotcloud.fcgi and b/src/server/iotcloud.fcgi differ diff --git a/src/server/iotquery.cpp b/src/server/iotquery.cpp index af5a976..191ffc4 100644 --- a/src/server/iotquery.cpp +++ b/src/server/iotquery.cpp @@ -27,6 +27,7 @@ IoTQuery::IoTQuery(FCGX_Request *request) : length(0), firstentry(0), lastentry(0), + requestsequencenumber(0), numqueueentries(DEFAULT_SIZE), fd(-1) { @@ -43,53 +44,75 @@ IoTQuery::~IoTQuery() { closedir(dir); } -int IoTQuery::checkDirectory() { +bool IoTQuery::checkDirectory() { struct stat s; int err=stat(directory, &s); if (-1 == err) - return 0; + return false; return S_ISDIR(s.st_mode); } +void IoTQuery::decodeQuery() { + int len=strlen(query); + char * str=new char[len+1]; + memcpy(str, query, len+1); + char *tok_ptr=str; + + /* Parse commands */ + char *command=strsep(&tok_ptr, "&"); + if (strncmp(command, "putslot", 7) == 0) + reqPutSlot = true; + + if (strncmp(command, "getslot", 7) == 0) + reqGetSlot = true; + + /* Load Sequence Number for request */ + char *sequencenumber_str = strsep(&tok_ptr, "&"); + + if (sequencenumber_str != NULL) + requestsequencenumber = strtol(sequencenumber_str, NULL, 10); + + /* Update size if we get request */ + char * numqueueentries_str = tok_ptr; + if (numqueueentries_str != NULL) + numqueueentries = strtol(numqueueentries_str, NULL, 10); + + delete str; +} + +void IoTQuery::getSlot() { + +} + +void IoTQuery::putSlot() { + +} + void IoTQuery::processQuery() { - parseQuery(); + getQuery(); getDirectory(); readData(); - + if (strncmp(method, "POST", 4) != 0) return; if (directory == NULL || - checkDirectory()) + !checkDirectory()) return; - if (openStatusFile() < 0) + if (!openStatusFile()) return; - - flock(fd, LOCK_EX); - - cout << "Content-type: text/html\r\n" - << "\r\n" - << "\n" - << " \n" - << " Hello, World!\n" - << " \n" - << " \n" - << "

Hello, World!

\n" - << " \n"; - - cout << uri_str << " " << uri << "\n"; - cout << query_str << " " << query << "\n"; - cout << method_str << " " << method << "\n"; - cout << iotcloudroot_str << " " << iotcloudroot << "\n"; - if (data) - cout << "[" << data << "]"; - - - cout << "\n"; -} + flock(fd, LOCK_EX); + + decodeQuery(); + if (reqGetSlot) + getSlot(); + else if (reqPutSlot) + putSlot(); + else return; +} void IoTQuery::readData() { if (length) { @@ -103,7 +126,7 @@ void IoTQuery::readData() { } while (!cin.eof()); } -void IoTQuery::parseQuery() { +void IoTQuery::getQuery() { uri = FCGX_GetParam(uri_str, request->envp); query = FCGX_GetParam(query_str, request->envp); method = FCGX_GetParam(method_str, request->envp); @@ -147,7 +170,7 @@ void IoTQuery::updateStatusFile() { pwrite(fd, &lastentry, sizeof(lastentry), OFFSET_LAST); } -int IoTQuery::openStatusFile() { +bool IoTQuery::openStatusFile() { char statusfile[]="queuestatus"; int len=strlen(directory); @@ -160,7 +183,7 @@ int IoTQuery::openStatusFile() { delete filename; if (fd < 0) - return fd; + return false; int size; int needwrite=0; @@ -183,7 +206,7 @@ int IoTQuery::openStatusFile() { if (needwrite) updateStatusFile(); - return fd; + return true; } diff --git a/src/server/iotquery.h b/src/server/iotquery.h index bfc185e..f2433dc 100644 --- a/src/server/iotquery.h +++ b/src/server/iotquery.h @@ -17,12 +17,15 @@ class IoTQuery { void processQuery(); private: - void parseQuery(); + void getQuery(); void getDirectory(); void readData(); - int checkDirectory(); - int openStatusFile(); + bool checkDirectory(); + bool openStatusFile(); void updateStatusFile(); + void decodeQuery(); + void getSlot(); + void putSlot(); FCGX_Request * request; char *data; @@ -35,7 +38,10 @@ class IoTQuery { long length; long firstentry; long lastentry; + long requestsequencenumber; int numqueueentries; int fd; + bool reqGetSlot; + bool reqPutSlot; }; #endif