package li.strolch.communication.chat;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import li.strolch.communication.CommandKey;
import li.strolch.communication.IoMessage;
import li.strolch.communication.tcpip.SocketMessageVisitor;
import li.strolch.utils.helper.StringHelper;
public class ChatMessageVisitor extends SocketMessageVisitor {
public static final CommandKey inboundKey = CommandKey.key("server", "msg"); //$NON-NLS-1$//$NON-NLS-2$
public static final CommandKey outboundKey = CommandKey.key("client", "msg"); //$NON-NLS-1$ //$NON-NLS-2$
public ChatMessageVisitor(String connectionId) {
super(connectionId);
}
@Override
public IoMessage visit(DataInputStream inputStream, DataOutputStream outputStream) throws Exception {
@SuppressWarnings("resource")
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = bufferedReader.readLine();
if (line == null) {
bufferedReader.close();
return null;
}
ChatIoMessage chatIoMessage = new ChatIoMessage(StringHelper.getUniqueId(), inboundKey, this.connectionId);
chatIoMessage.setChatMsg(line);
return chatIoMessage;
}
@Override
public void visit(DataInputStream inputStream, DataOutputStream outputStream, IoMessage message) throws Exception {
ChatIoMessage chatIoMessage = (ChatIoMessage) message;
outputStream.writeChars(chatIoMessage.getChatMsg());
outputStream.writeChar('\n');
outputStream.flush();
}
}