X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2Fserver%2Fiotquery.cpp;h=191ffc4cde0b069ed9a3a74fb4f093f7b9086423;hb=511e50c6cab584740787ea62566c7b77f5c130d4;hp=af5a9765ccc816a0c6da53ed725fb8a81a35497a;hpb=577f78a317bbbc8af4a6a9c99c9566c7e4ea3098;p=iotcloud.git 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" - << "