public void ReadFile(Message inputMessage, int opID) {
		if(AddSharedParentLocks(inputMessage.filePath, opID))
		{
			//Implement Later
			int indexCounter = 1;
			System.out.println("Master: trying to read "+inputMessage.filePath + indexCounter);
			if (!chunkServerMap.containsKey(inputMessage.filePath + indexCounter) && !NamespaceMap.containsKey(inputMessage.filePath + indexCounter)) {
				System.out.println("Master: doesnt exist");
				SendErrorMessageToClient(inputMessage);
				return;
			}
			else if (!chunkServerMap.containsKey(inputMessage.filePath + indexCounter) && NamespaceMap.containsKey(inputMessage.filePath + indexCounter))
			{
				//if the file exists in the chunkservermap and not in the namespacemap, it means that hte file is empty
				System.out.println("The file you desired is empty");
				SendSuccessMessageToClient(inputMessage);
				return;
			}

			// check if the file contains multiple chunk indexes
			indexCounter++;
			synchronized(chunkServerMap) {
				while (chunkServerMap.containsKey(inputMessage.filePath + indexCounter)) {
					//				ChunkMetadata cm = chunkServerMap.get(inputMessage.filePath + indexCounter);
					//				Message returnMessage = new Message(msgType.READFILE, cm);
					//				returnMessage.success = msgSuccess.REQUESTSUCCESS;
					//				System.out.println("Master: found chunk number "+indexCounter +" of file. its hash is "+cm.chunkHash);
					//				client.DealWithMessage(returnMessage);
					indexCounter++;
				}
			}
			//Send client the number of chunk number to read
			//			client.ExpectChunkNumberForRead(indexCounter - 1);

			Message expectMsg = inputMessage;
			expectMsg.type = msgType.EXPECTEDNUMCHUNKREAD;
			expectMsg.success = msgSuccess.REQUESTSUCCESS;
			expectMsg.expectNumChunkForRead = indexCounter-1;
			SendMessageToClient(expectMsg);
			for(int i=1;i<indexCounter;i++){
				ChunkMetadata cm = chunkServerMap.get(inputMessage.filePath+ i);
				//alter the list location
				synchronized(cm.listOfLocations){
					for(ChunkLocation cl: cm.listOfLocations){
						if(ServerMap.get(cl.chunkIP).status == HeartBeat.serverStatus.DEAD){
							cm.listOfLocations.remove(cl);
						}
					}
				}
				System.out.println("Master: first chunkhash is "+cm.chunkHash);
				Message returnMessage = inputMessage;
				returnMessage.type = msgType.READFILE;
				returnMessage.chunkClass = cm;
				returnMessage.success = msgSuccess.REQUESTSUCCESS;
				SendMessageToClient(returnMessage);
			}
		}
		else
		{
			SendErrorMessageToClient(inputMessage);
		}
	}