From e8544ffd7d4d2985028be9fd3fac68ff7d7f014b Mon Sep 17 00:00:00 2001 From: Dor Bivas Date: Sat, 29 Mar 2014 15:46:03 +0300 Subject: Server - implement nick collision detection * Client: setNick checks for collisions. * Command table: Nick Command is now replaying. * Connection: remove up on disconnect. --- src/Server/Client.java | 9 +++++++-- src/Server/CommandsTable.java | 12 ++++++++---- src/Server/Connection.java | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Server/Client.java b/src/Server/Client.java index f7d015b..4ab36dd 100644 --- a/src/Server/Client.java +++ b/src/Server/Client.java @@ -28,10 +28,15 @@ public class Client { return this.nick; } - /** changing the nick name */ - public void setNick(String newNick) + /** set nick name if it does not exist. */ + public boolean setNick(String newNick) { + if (!ChatServer.server.addNick(newNick)) + { + return false; + } this.nick = newNick; + return true; } /** returning the host name */ public String getHostname() diff --git a/src/Server/CommandsTable.java b/src/Server/CommandsTable.java index d1d093c..e52eb7a 100644 --- a/src/Server/CommandsTable.java +++ b/src/Server/CommandsTable.java @@ -106,8 +106,13 @@ class CommandNick extends Command public void run(Client client, String args) { String nick = args; - client.setNick(nick); - // FIXME: print reply + if (!client.setNick(nick)) + { + this.println(client, "433 * " + nick + " :Nick alredy in use."); + } + + + } } @@ -122,7 +127,7 @@ class CommandJoin extends Command // but right now everybody is on a single channel this.printUser(client, "JOIN " + ":" + args); this.println(client, "332 " + client.getNick() + " " + args + " :Welcome to the single channel"); - //this.println(client, "333 " + client.getNick()) + args + "someone!somewhere"; + // } } @@ -133,7 +138,6 @@ class CommandUser extends Command { String[] argsArray = args.split("[ \t]+"); client.setUsername(argsArray[0]); - //client.setNick(args); this.println(client, "001 " + client.getNick() + " :Welcome to Dor's ircd"); } } diff --git a/src/Server/Connection.java b/src/Server/Connection.java index 1102523..bcc3ac7 100644 --- a/src/Server/Connection.java +++ b/src/Server/Connection.java @@ -59,7 +59,7 @@ public class Connection extends Thread { ChatServer.server.connectionRemove(this); - + ChatServer.server.removeNick(client.getNick()); try { if (!soc.isClosed()) -- cgit v1.2.3