+ if (requestsequencenumber!=(newestentry+1)) {
+ getSlot();
+ return;
+ }
+
+ int numberofliveslots=(int) ((newestentry-oldestentry)+1);
+ if (numberofliveslots >= numqueueentries) {
+ //need to drop slot
+ removeOldestSlot();
+ }
+ //write slot data out to file
+ char *filename = getSlotFileName(requestsequencenumber);
+ int slotfd = open(filename, O_CREAT|O_WRONLY, S_IRUSR| S_IWUSR);
+ doWrite(slotfd, data, length);
+ close(slotfd);
+ delete filename;
+ newestentry = requestsequencenumber; // update sequence number
+ updateStatusFile(); // update counts
+}
+
+char * IoTQuery::getSlotFileName(long long slot) {
+ int directorylen=strlen(directory);
+ char * filename=new char[25+directorylen];//19 digits for long number + 4 characters for SLOT + 1 character for null termination
+ snprintf(filename, 24+directorylen+1, "%s/SLOT%lld", directory, slot);
+ return filename;
+}
+