On Thursday 27 August 2009 16:50:48 Michael Yip wrote: > Hi Matt, > > Problem is that (line = buffIns.readLine()) == null does not terminate > the loop. Since most messages ends with EndMessage, how do I know how > many more to read before I break the loop??
A message ends with "EndMessage" or "Data", or something on a line with no = in it. All lines within a message include an "=". The first line, the message type, doesn't include an "=". That should be enough information to separate and parse messages, no? > > Thanks, > > Michael > > Matthew Toseland wrote: > > On Thursday 27 August 2009 13:00:41 [email protected] wrote: > > > >> You should process the messages in a Thread. Put your code into a Thread > >> that calls handler methods when a specific message arrived. > >> The Thread runs forever and receives all messages and all data... > >> > > > > All you need to do is parse each message. The type of the message is the > > first line, it ends at the last line, unless it has trailing data. You can > > do this level of parsing without understanding the message. Then you can > > ignore it if you don't understand it, or you can handle it appropriately. > > > >> On Thu, Aug 27, 2009 at 03:22, Michael Yip<[email protected]> wrote: > >> > >>> Hi guys, > >>> > >>> Does anyone know how to know when I've read all the PersistentPut and > >>> PersistentGet messages at the start? There's no way of knowing how many > >>> there are and I have no idea how to know when to stop reading? Below is > >>> the code I've written: > >>> > >>> String line; > >>> while((line = buffIns.readLine()) != null){ > >>> System.out.println(line); > >>> _Logger.log(line); > >>> //Capture ConnectionIdentifer to be used as salt for file > >>> insertions > >>> if(line.contains("ConnectionIdentifier")){ > >>> helloID = line.substring(line.indexOf('=') + 1, > >>> line.length()); > >>> } > >>> if(line.equals("EndMessage")){ > >>> //Read an extra line to see if there are more to read > >>> //Read all persistent puts and gets > >>> line = buffIns.readLine(); > >>> if(line.contains("Get") || line.contains("Put") || > >>> line.contains("URI") ||line.contains("Get") || line.contains("Data") > >>> ||line.contains("Started") || line.contains("Finished")|| > >>> line.contains("Simple")){ > >>> System.out.println(line); > >>> _Logger.log(line); > >>> }else{ > >>> return true; > >>> } > >>> } > >>> } > >>> > >>> but obviously the reader doesn't know when to stop and so line is never > >>> null? > >>> > >>> Thanks, > >>> > >>> Michael > >>> > >>> ------------------------------------------------------------------------ > >>> > >>> _______________________________________________ > >>> Devl mailing list > >>> [email protected] > >>> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl > > _______________________________________________ > Devl mailing list > [email protected] > http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl > >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Devl mailing list [email protected] http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
