public void checkResults() throws IOException, InterruptedException {
		//check for completed reduces
		Iterator<Entry<String,ReduceRequest>> it = activeReduces.entrySet().iterator();
		while(it.hasNext()) {
			Entry<String,ReduceRequest> e = it.next();
			ReduceRequest rr = e.getValue();
			String filename = e.getKey();
			if(rr.resultNum == rr.results.length) {
				//done
				String answer = rr.results[0];
				for(int r=1; r<rr.results.length; r++) {
					answer = rr.func.execute(answer,rr.results[r]);
				}
				
				//send message
				byte[] messageStr = ("REDUCE COMPLETE," + rr.id + "," + answer + "\n").getBytes();
				cServer.sendMessage(rr.caller, messageStr);
				activeReduces.remove(filename);
			}
		}
		Iterator<Entry<String,MapRequest>> it2 = activeMaps.entrySet().iterator();
		while(it2.hasNext()) {
			Entry<String, MapRequest> e = it2.next();
			MapRequest mr = e.getValue();
			String filename = e.getKey();
			if(mr.completeParts == mr.totalParts) {
				
				//send message
				byte[] messageStr = ("MAP COMPLETE," + mr.id + "\n").getBytes();
				cServer.sendMessage(cServer.getNumber(mr.requester), messageStr);
				activeMaps.remove(filename);
			}
		}
		
	}