# File src/swiftcore/Analogger.rb, line 247
247:                 def receive_data data
248:                         @logchunk << data
249:                         decompose = true
250:                         while decompose
251:                                 unless @length
252:                                         if @logchunk.length > 7
253:                                                 l = @logchunk[0..3].unpack(Ci).first
254:                                                 ck = @logchunk[4..7].unpack(Ci).first
255:                                                 if l == ck and l < MaxMessageLength
256:                                                         @length = l + 7
257:                                                 else
258:                                                         decompose = false
259:                                                         peer = get_peername
260:                                                         peer = peer ? ::Socket.unpack_sockaddr_in(peer)[1] : 'UNK'
261:                                                         if l == ck
262:                                                                 LoggerClass.add_log([:default,:error,"Max Length Exceeded from #{peer} -- #{l}/#{MaxMessageLength}"])
263:                                                                 close_connection
264:                                                         else
265:                                                                 LoggerClass.add_log([:default,:error,"checksum failed from #{peer} -- #{l}/#{ck}"])
266:                                                                 close_connection
267:                                                         end
268:                                                 end
269:                                         end
270:                                 end
271: 
272:                                 if @length and @logchunk.length > @length
273:                                         msg = @logchunk.slice!(0..@length).split(Rcolon,4)
274:                                         unless @authenticated
275:                                                 if msg.last == LoggerClass.key
276:                                                         @authenticated = true
277:                                                 else
278:                                                         close_connection
279:                                                 end
280:                                         else
281:                                                 msg[0] = nil
282:                                                 msg.shift
283:                                                 LoggerClass.add_log(msg)
284:                                         end
285:                                         @length = nil
286:                                 else
287:                                         decompose = false
288:                                 end
289:                         end
290:                 end