fixed issue #39
This commit is contained in:
parent
5c0e55870d
commit
add410250f
|
@ -94,32 +94,11 @@ public class Server {
|
||||||
NetworkHandler.NetworkConnection<String> connection = networkServer.waitForConnection();
|
NetworkHandler.NetworkConnection<String> connection = networkServer.waitForConnection();
|
||||||
ServerConnectionHandler connectionHandler = new ServerConnectionHandler(connection, connections, mutex, nameComplete);
|
ServerConnectionHandler connectionHandler = new ServerConnectionHandler(connection, connections, mutex, nameComplete);
|
||||||
new Thread(connectionHandler).start();
|
new Thread(connectionHandler).start();
|
||||||
mutex.lock();
|
|
||||||
try {
|
|
||||||
nameComplete.await();
|
|
||||||
if(connectionHandler.getState() == ConnectionHandler.State.ERROR) {
|
|
||||||
System.out.println(String.format("Connecting failed for new Client with IP:Port <%s:%d>.\nReason: Name already taken.",
|
|
||||||
connection.getRemoteHost(),
|
|
||||||
connection.getRemotePort()));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
System.out.println(String.format("Connected new Client %s with IP:Port <%s:%d>",
|
|
||||||
connectionHandler.getUserName(),
|
|
||||||
connection.getRemoteHost(),
|
|
||||||
connection.getRemotePort()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch(SocketException e) {
|
} catch(SocketException e) {
|
||||||
System.out.println("Server connection terminated");
|
System.out.println("Server connection terminated");
|
||||||
}
|
} catch (IOException e) {
|
||||||
catch (IOException e) {
|
|
||||||
System.err.println("Communication error " + e);
|
System.err.println("Communication error " + e);
|
||||||
} catch (InterruptedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
// close server
|
// close server
|
||||||
System.out.println("Server Stopped.");
|
System.out.println("Server Stopped.");
|
||||||
|
|
|
@ -194,28 +194,23 @@ public class ServerConnectionHandler extends ConnectionHandler implements Runnab
|
||||||
private void caseConnect(String sender) throws ChatProtocolException {
|
private void caseConnect(String sender) throws ChatProtocolException {
|
||||||
if (this.state != NEW) throw new ChatProtocolException("Illegal state for connect request: " + state);
|
if (this.state != NEW) throw new ChatProtocolException("Illegal state for connect request: " + state);
|
||||||
if (sender.isBlank()) sender = this.userName;
|
if (sender.isBlank()) sender = this.userName;
|
||||||
|
//if username not valid
|
||||||
if (connectionRegistry.containsKey(sender)) {
|
if (connectionRegistry.containsKey(sender)) {
|
||||||
mutex.lock();
|
state = ERROR;
|
||||||
try {
|
System.out.println(String.format("Connecting failed for new Client with IP:Port <%s:%d>.\nReason: Name already taken.",
|
||||||
state = ERROR;
|
getConnection().getRemoteHost(),
|
||||||
nameComplete.signal();
|
getConnection().getRemotePort()));
|
||||||
}
|
|
||||||
finally {
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
throw new ChatProtocolException("User name already taken: " + sender);
|
throw new ChatProtocolException("User name already taken: " + sender);
|
||||||
}
|
}
|
||||||
mutex.lock();
|
//if username valid
|
||||||
try {
|
this.userName = sender;
|
||||||
this.userName = sender;
|
|
||||||
nameComplete.signal();
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
connectionRegistry.put(userName, this);
|
connectionRegistry.put(userName, this);
|
||||||
sendData(USER_NONE, userName, getDataTypeConfirm(), "Registration successfull for " + userName);
|
sendData(USER_NONE, userName, getDataTypeConfirm(), "Registration successfull for " + userName);
|
||||||
this.state = CONNECTED;
|
this.state = CONNECTED;
|
||||||
|
System.out.println(String.format("Connected new Client %s with IP:Port <%s:%d>",
|
||||||
|
userName,
|
||||||
|
getConnection().getRemoteHost(),
|
||||||
|
getConnection().getRemotePort()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue