From: bdemsky Date: Fri, 22 Jul 2016 08:08:06 +0000 (-0700) Subject: spacing X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=commitdiff_plain;h=744c835ca48d82bf6c2bfa06a6f2e5176417720f;hp=511e50c6cab584740787ea62566c7b77f5c130d4 spacing --- diff --git a/src/server/.dir-locals.el b/src/server/.dir-locals.el new file mode 100644 index 0000000..ce85e5f --- /dev/null +++ b/src/server/.dir-locals.el @@ -0,0 +1 @@ +((nil . ((indent-tabs-mode . t)))) \ No newline at end of file diff --git a/src/server/iotcloud.cpp b/src/server/iotcloud.cpp index 2f82674..e7eb2d3 100644 --- a/src/server/iotcloud.cpp +++ b/src/server/iotcloud.cpp @@ -5,34 +5,34 @@ using namespace std; int main(void) { - // Backup the stdio streambufs - streambuf * cin_streambuf = cin.rdbuf(); - streambuf * cout_streambuf = cout.rdbuf(); - streambuf * cerr_streambuf = cerr.rdbuf(); - - FCGX_Request request; - - FCGX_Init(); - FCGX_InitRequest(&request, 0, 0); - - while (FCGX_Accept_r(&request) == 0) { - fcgi_streambuf cin_fcgi_streambuf(request.in); - fcgi_streambuf cout_fcgi_streambuf(request.out); - fcgi_streambuf cerr_fcgi_streambuf(request.err); - - cin.rdbuf(&cin_fcgi_streambuf); - cout.rdbuf(&cout_fcgi_streambuf); - cerr.rdbuf(&cerr_fcgi_streambuf); - IoTQuery * iotquery=new IoTQuery(&request); - iotquery->processQuery(); - delete iotquery; - } - - // restore stdio streambufs - cin.rdbuf(cin_streambuf); - cout.rdbuf(cout_streambuf); - cerr.rdbuf(cerr_streambuf); - - return 0; + // Backup the stdio streambufs + streambuf * cin_streambuf = cin.rdbuf(); + streambuf * cout_streambuf = cout.rdbuf(); + streambuf * cerr_streambuf = cerr.rdbuf(); + + FCGX_Request request; + + FCGX_Init(); + FCGX_InitRequest(&request, 0, 0); + + while (FCGX_Accept_r(&request) == 0) { + fcgi_streambuf cin_fcgi_streambuf(request.in); + fcgi_streambuf cout_fcgi_streambuf(request.out); + fcgi_streambuf cerr_fcgi_streambuf(request.err); + + cin.rdbuf(&cin_fcgi_streambuf); + cout.rdbuf(&cout_fcgi_streambuf); + cerr.rdbuf(&cerr_fcgi_streambuf); + IoTQuery * iotquery=new IoTQuery(&request); + iotquery->processQuery(); + delete iotquery; + } + + // restore stdio streambufs + cin.rdbuf(cin_streambuf); + cout.rdbuf(cout_streambuf); + cerr.rdbuf(cerr_streambuf); + + return 0; } diff --git a/src/server/iotcloud.fcgi b/src/server/iotcloud.fcgi deleted file mode 100755 index fc754f4..0000000 Binary files a/src/server/iotcloud.fcgi and /dev/null differ diff --git a/src/server/iotquery.cpp b/src/server/iotquery.cpp index 191ffc4..8fc9fad 100644 --- a/src/server/iotquery.cpp +++ b/src/server/iotquery.cpp @@ -16,197 +16,196 @@ const char * iotcloudroot_str="IOTCLOUD_ROOT"; const char * length_str="CONTENT_LENGTH"; IoTQuery::IoTQuery(FCGX_Request *request) : - request(request), - data(NULL), - directory(NULL), - uri(NULL), - query(NULL), - method(NULL), - iotcloudroot(NULL), - dir(NULL), - length(0), - firstentry(0), - lastentry(0), - requestsequencenumber(0), - numqueueentries(DEFAULT_SIZE), - fd(-1) -{ + request(request), + data(NULL), + directory(NULL), + uri(NULL), + query(NULL), + method(NULL), + iotcloudroot(NULL), + dir(NULL), + length(0), + firstentry(0), + lastentry(0), + requestsequencenumber(0), + numqueueentries(DEFAULT_SIZE), + fd(-1) { } IoTQuery::~IoTQuery() { - if (fd >= 0) - close(fd); - if (directory) - delete directory; - if (data) - delete data; - if (dir != NULL) - closedir(dir); + if (fd >= 0) + close(fd); + if (directory) + delete directory; + if (data) + delete data; + if (dir != NULL) + closedir(dir); } bool IoTQuery::checkDirectory() { - struct stat s; - int err=stat(directory, &s); - if (-1 == err) - return false; - return S_ISDIR(s.st_mode); + struct stat s; + int err=stat(directory, &s); + if (-1 == err) + 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; + 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() { - getQuery(); - getDirectory(); - readData(); - - if (strncmp(method, "POST", 4) != 0) - return; - - if (directory == NULL || - !checkDirectory()) - return; - - if (!openStatusFile()) - return; - - flock(fd, LOCK_EX); - - decodeQuery(); - - if (reqGetSlot) - getSlot(); - else if (reqPutSlot) - putSlot(); - else return; + getQuery(); + getDirectory(); + readData(); + + if (strncmp(method, "POST", 4) != 0) + return; + + if (directory == NULL || + !checkDirectory()) + return; + + if (!openStatusFile()) + return; + + flock(fd, LOCK_EX); + + decodeQuery(); + + if (reqGetSlot) + getSlot(); + else if (reqPutSlot) + putSlot(); + else return; } void IoTQuery::readData() { - if (length) { - data = new char[length+1]; - memset(data, 0, length+1); - cin.read(data, length); - } - do { - char dummy; - cin >> dummy; - } while (!cin.eof()); + if (length) { + data = new char[length+1]; + memset(data, 0, length+1); + cin.read(data, length); + } + do { + char dummy; + cin >> dummy; + } while (!cin.eof()); } void IoTQuery::getQuery() { - uri = FCGX_GetParam(uri_str, request->envp); - query = FCGX_GetParam(query_str, request->envp); - method = FCGX_GetParam(method_str, request->envp); - iotcloudroot = FCGX_GetParam(iotcloudroot_str, request->envp); - - char * reqlength = FCGX_GetParam(length_str, request->envp); - if (length) { - length=strtol(reqlength, NULL, 10); - } else { - length=0; - } + uri = FCGX_GetParam(uri_str, request->envp); + query = FCGX_GetParam(query_str, request->envp); + method = FCGX_GetParam(method_str, request->envp); + iotcloudroot = FCGX_GetParam(iotcloudroot_str, request->envp); + + char * reqlength = FCGX_GetParam(length_str, request->envp); + if (length) { + length=strtol(reqlength, NULL, 10); + } else { + length=0; + } } void IoTQuery::getDirectory() { - char * split = strchr((char *)uri, '?'); - if (split == NULL) - return; - int split_len = (int) (split-uri); - int rootdir_len = strlen(iotcloudroot); - int directory_len = split_len + rootdir_len + 1; - directory = new char[directory_len]; - memcpy(directory, iotcloudroot, rootdir_len); - memcpy(directory + rootdir_len, uri, split_len); - directory[directory_len]=0; + char * split = strchr((char *)uri, '?'); + if (split == NULL) + return; + int split_len = (int) (split-uri); + int rootdir_len = strlen(iotcloudroot); + int directory_len = split_len + rootdir_len + 1; + directory = new char[directory_len]; + memcpy(directory, iotcloudroot, rootdir_len); + memcpy(directory + rootdir_len, uri, split_len); + directory[directory_len]=0; } int doread(int fd, void *ptr, size_t count, off_t offset) { - do { - size_t bytesread=pread(fd, ptr, count, offset); - if (bytesread==count) { - return 1; - } else if (bytesread==0) { - return 0; - } - } while(1); + do { + size_t bytesread=pread(fd, ptr, count, offset); + if (bytesread==count) { + return 1; + } else if (bytesread==0) { + return 0; + } + } while(1); } void IoTQuery::updateStatusFile() { - pwrite(fd, &numqueueentries, sizeof(numqueueentries), OFFSET_MAX); - pwrite(fd, &firstentry, sizeof(firstentry), OFFSET_FIRST); - pwrite(fd, &lastentry, sizeof(lastentry), OFFSET_LAST); + pwrite(fd, &numqueueentries, sizeof(numqueueentries), OFFSET_MAX); + pwrite(fd, &firstentry, sizeof(firstentry), OFFSET_FIRST); + pwrite(fd, &lastentry, sizeof(lastentry), OFFSET_LAST); } bool IoTQuery::openStatusFile() { - char statusfile[]="queuestatus"; - int len=strlen(directory); - - char * filename=new char[len+sizeof(statusfile)+2]; - memcpy(filename, directory, len); - filename[len]='/'; - memcpy(filename+len+1, statusfile, sizeof(statusfile)); - filename[len+sizeof(statusfile)+1]=0; - fd=open(filename, O_CREAT| O_RDWR, S_IRUSR| S_IWUSR); - delete filename; - - if (fd < 0) - return false; - - int size; - int needwrite=0; - if (doread(fd, &size, sizeof(size), OFFSET_MAX)) - numqueueentries=size; - else - needwrite=1; - - long entry; - if (doread(fd, &entry, sizeof(entry), OFFSET_FIRST)) - firstentry=entry; - else - needwrite=1; - - if (doread(fd, &entry, sizeof(entry), OFFSET_LAST)) - lastentry=entry; - else - needwrite=1; - - if (needwrite) - updateStatusFile(); - - return true; + char statusfile[]="queuestatus"; + int len=strlen(directory); + + char * filename=new char[len+sizeof(statusfile)+2]; + memcpy(filename, directory, len); + filename[len]='/'; + memcpy(filename+len+1, statusfile, sizeof(statusfile)); + filename[len+sizeof(statusfile)+1]=0; + fd=open(filename, O_CREAT| O_RDWR, S_IRUSR| S_IWUSR); + delete filename; + + if (fd < 0) + return false; + + int size; + int needwrite=0; + if (doread(fd, &size, sizeof(size), OFFSET_MAX)) + numqueueentries=size; + else + needwrite=1; + + long entry; + if (doread(fd, &entry, sizeof(entry), OFFSET_FIRST)) + firstentry=entry; + else + needwrite=1; + + if (doread(fd, &entry, sizeof(entry), OFFSET_LAST)) + lastentry=entry; + else + needwrite=1; + + if (needwrite) + updateStatusFile(); + + return true; } - + diff --git a/src/server/iotquery.h b/src/server/iotquery.h index f2433dc..5aba593 100644 --- a/src/server/iotquery.h +++ b/src/server/iotquery.h @@ -12,36 +12,36 @@ class IoTQuery { public: - IoTQuery(FCGX_Request * request); - ~IoTQuery(); - void processQuery(); - + IoTQuery(FCGX_Request * request); + ~IoTQuery(); + void processQuery(); + private: - void getQuery(); - void getDirectory(); - void readData(); - bool checkDirectory(); - bool openStatusFile(); - void updateStatusFile(); - void decodeQuery(); - void getSlot(); - void putSlot(); - - FCGX_Request * request; - char *data; - char *directory; - const char * uri; - const char * query; - const char * method; - const char * iotcloudroot; - DIR *dir; - long length; - long firstentry; - long lastentry; - long requestsequencenumber; - int numqueueentries; - int fd; - bool reqGetSlot; - bool reqPutSlot; + void getQuery(); + void getDirectory(); + void readData(); + bool checkDirectory(); + bool openStatusFile(); + void updateStatusFile(); + void decodeQuery(); + void getSlot(); + void putSlot(); + + FCGX_Request * request; + char *data; + char *directory; + const char * uri; + const char * query; + const char * method; + const char * iotcloudroot; + DIR *dir; + long length; + long firstentry; + long lastentry; + long requestsequencenumber; + int numqueueentries; + int fd; + bool reqGetSlot; + bool reqPutSlot; }; #endif