/** * Processes an ID query request * * @param request * @return */ public Response IDQueryRequestProcess(Request request) { ArrayList<String> responseMessage = new ArrayList<String>(); if (getInt(this.getID()) < getInt(this.NextPeerID) && getInt(request.getPeerID()) > getInt(this.getID()) && getInt(request.getPeerID()) > getInt(this.getNextPeerID())) { responseMessage.add(this.getNextPeerHostName() + " " + this.getNextPeerPort()); return new Response(Settings.Version, "ID", "1", "301", "redirect", responseMessage); } else if (getInt(request.getPeerID()) > getInt(this.getID()) && getInt(request.getPeerID()) < getInt(this.getNextPeerID()) || getInt(this.getID()) > getInt(this.NextPeerID) && getInt(request.getPeerID()) > getInt(this.getID())) { return new Response(Settings.Version, "ID", "0", "200", "ok", responseMessage); } else if (this.getID() == this.NextPeerID) { if (getInt(this.getID()) > getInt(request.getPeerID())) { return new Response(Settings.Version, "ID", "0", "200", "ok", responseMessage); } else { // This condition requires more coding time return NEXTQueryReuqestProcess(request); } } else if (getInt(request.getPeerID()) == getInt(this.getID())) { return new Response(Settings.Version, "ID", "0", "400", "peerexist", responseMessage); } else if (!request.getVersion().trim().equals(Settings.Version.trim())) { return new Response(Settings.Version, "ID", "0", "401", "versionError", responseMessage); } else { return new Response(Settings.Version, "ID", "0", "503", "UnknownCondition", responseMessage); } }