public void RSTapDataReceived(DataRSTap packet) {


		if ( DataRSTap.EXCEPTION_NONE != packet.qResult ) {
			if (stdErr) System.err.println("# got exception: " + DataRSTap.getExceptionByValue(packet.qResult));
		} else {
			byte worldPacket[]=packet.assemblePacket(serialPrefix, serialNumber,measurementNumber);


			/* send data to processors */
			Iterator<Process> itp = processes.iterator();
			while (itp.hasNext()) {
				Process p = itp.next();

				p.addData(packet);
			}

			/* send data to worlddata servers */			
			Iterator<WorldData> it = worlds.iterator();
			int i=0;
			while (it.hasNext()) {
				WorldData w = it.next();

				//				if (stdErr) System.err.println("# RSTapDataReceived has the following packet to send:\n" + w);

				boolean sendPacketStatus = w.sendPacket(worldPacket);

				if ( false == sendPacketStatus ) {
					if (stdErr) System.err.print("# Packet not successfully sent to " + w.toString());
					if ( ! worldsToReconnect.contains(w) ) {
						if (stdErr) System.err.println(" adding to re-connect list.");
						worldsToReconnect.add(w);
					} else {
						if (stdErr) System.err.println(" is already on re-connect list.");
					}
				}
				
				/* update memcache with the worldData's status */
				memcacheWrite("WORLDDATA_" + i + "_STATE", w.getConnectionState());
				
				i++;
			}
		}
	}