From 9cd15aedc43e533e880cc410b2a7b88e9ce4a9d7 Mon Sep 17 00:00:00 2001 From: Ren RenJuan Date: Thu, 30 Jan 2014 18:17:29 +0000 Subject: [PATCH] * --- AusRegCliever/server/mdAusReg.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/AusRegCliever/server/mdAusReg.cpp b/AusRegCliever/server/mdAusReg.cpp index 32aa14f..4be7444 100644 --- a/AusRegCliever/server/mdAusReg.cpp +++ b/AusRegCliever/server/mdAusReg.cpp @@ -37,7 +37,7 @@ using namespace std; #define EODMARGIN 3 // minutes #define EVENT_SIZE ( sizeof (struct inotify_event) ) -#define BUF_LEN ( 32 * ( EVENT_SIZE + 16 ) ) +#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) //char *name1 = "bestever.camera"; // //char *name3 = "pricey.holdings"; // //char *name5 = "greedy.ventures"; // @@ -126,7 +126,7 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE // meant to be actual production. bool actionableFileEvent,monitoring=true; - int length, i = 0, mSleeps=0, nSleeps=0,debug=10000; + int length, i = 0, j, mSleeps=0, nSleeps=0,debug=10000; int fd, wd; char buffer[BUF_LEN]; @@ -152,7 +152,7 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE } - while ( length >= 0 && monitoring ) + while ( length >= 0 && (BUF_LEN - i) >= length && monitoring ) { actionableFileEvent = false; struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ]; @@ -184,7 +184,6 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE } } - i += EVENT_SIZE + event->len; if (actionableFileEvent) { char wxyz[100]; sprintf(wxyz,"./json/%s",event->name); mdJSON scriptor; @@ -206,9 +205,15 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE } } } - i=0; - length = read( fd, buffer, BUF_LEN ); + j = i; + if (i >= (BUF_LEN - (EVENT_SIZE + event->len))) + i = 0; + else + i += EVENT_SIZE + event->len; + length = read( fd, &buffer[i], (BUF_LEN - j) ); } + if (monitoring) + theseLogs->logN(2,"JSON monitoring unexpected end: %d %d.",i,length); done: ( void ) inotify_rm_watch( fd, wd ); ( void ) close( fd );