private void read(Object object) { if (object.getClass().equals(ChatElements.class)) { ChatElements chatElements = (ChatElements) object; connectionDirector.incomingChatElements(chatElements); } else if (object.getClass().equals(String.class)) { String message = (String) object; connectionDirector.incomingMessage(message); } // se ci sono altri oggetti fai altro }
private void sendChatElements() { ChatElements chatElements = new ChatElements(); chatElements.setNickname(Settings.getNickname()); try { ObjectOutputStream objectOutput = new ObjectOutputStream(output); objectOutput.writeObject(chatElements); } catch (IOException e) { connectionDirector.connectionBroken(); close(); e.printStackTrace(); } }
@Override public void run() { sendChatElements(); while (!socket.isClosed()) { try { ObjectInputStream objectInput = new ObjectInputStream(input); read(objectInput.readObject()); } catch (IOException e) { // il close e' stato chiamato mentre era nel ciclo; if (!socket.isClosed()) connectionDirector.connectionBroken(); close(); e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }