public void run() {
		
	ServerSocket serversocket = null;
	Socket s;

	InputStreamReader input;
	BufferedReader b;
	PrintWriter p;
		
	String message = null;
	boolean done = false;

	try {
	    serversocket = new ServerSocket(Utils.FAULTMNGR_PORT, 1); /* backlog is 1 */
	    serversocket.setSoTimeout(0);
	} catch (IOException e) {
	    System.err.println("Error: failed to launch FaultManager.");
	    System.err.println(e.getMessage());
	    System.exit(1);
	}
	while (! done) {
	    s = null;
	    try {
		s = serversocket.accept();
			
	    } catch (IOException e) {
		System.err.println("Error: failed to accept connection from FaultInjector.");
		System.err.println(e.getMessage());
		System.exit(1);
	    }
						
	    try {
		input = new InputStreamReader(s.getInputStream());
		b = new BufferedReader(input);
		p = new PrintWriter(s.getOutputStream());
		while ((message = b.readLine()) != null) {
		    /* Handle FaultInjector's command */
		    if (! parse(message)) {
			p.println("E.g. usage: P1<|>ON; P2<|>OFF; etc.");
			p.flush();
			continue;			
		    }
		    /* Search registry */
		    Record record = r.find(key);
		    /* Update process status */
		    record.beFaulty(value);
		    r.update(record);
		    p.println("OK");
		    p.flush();
		}
		/* Null message. */
		p.close();
		b.close();
		s.close();
	    } catch (IOException e) {
		System.err.println("Error: failed to read/write at FaultManager.");
		System.err.println(e.getMessage());
		System.exit(1);
	    }
	}
    }