public void readEach(DataInputStream is, HashMap<String, FileOperation> fileMap) throws IOException {
		if(is != null){
			int nameLength = is.readInt();
			if(_debug){
				System.out.println("Name length: " + nameLength);
			}
			byte []nameBytes = new byte[nameLength];
			is.read(nameBytes);
			String fileName = new String(nameBytes);
		
			long lastModifiedTime = is.readLong();
			byte operation = is.readByte();
			
			// Push the file operation into hashmap
			
			boolean flag = is.readBoolean();
			DummyFile f = new DummyFile(flag,
					new File(_home+fileName));
			
			FileOperation fo = new FileOperation(operation, f);
			fileMap.put(fileName, fo);
			long fileLength = 0;
			byte []fileBytes = null;
			
			if(flag == false &&
					(operation == ProtocolConstants.OP_ADD ||
					operation == ProtocolConstants.OP_MOD)){
				fileLength = is.readLong();
				
				/**
				 * CAUTION:
				 * HERE IT MEANS IT DOES NOT SUPPORT LARGE FILE
				 * REVISE THIS LATER
				 */
				fileBytes = new byte[(int)fileLength];
				//is.read(fileBytes);
				int i = 0;
				while(i < fileLength){
					fileBytes[i] = is.readByte();
					i++;
				}
				fo.setBytes(fileBytes);
			}
				// Print the data we get
			if(_debug)
				System.out.println("Filename: "+fileName + "(" + flag +")"
						+ " Operation: " + operation + " LastTime: " + lastModifiedTime);
			if(fileBytes != null && _debug){
				String fileContent = new String(fileBytes);
				System.out.println(fileContent);
			}
		}
	}