/*
*
* Copyright (c) 2000-2007 by Rodney Kinney
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License (LGPL) as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, copies are available
* at http://www.opensource.org.
*/
package VASSAL.chat.node;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Properties;
import VASSAL.chat.CgiServerStatus;
import VASSAL.chat.WelcomeMessageServer;
import VASSAL.chat.messageboard.MessageBoard;
import VASSAL.command.CommandEncoder;
import VASSAL.i18n.Resources;
public class SocketNodeClient extends NodeClient implements SocketWatcher {
private SocketHandler sender;
protected NodeServerInfo serverInfo;
public SocketNodeClient(String moduleName, String playerId, CommandEncoder encoder, NodeServerInfo serverInfo, MessageBoard msgSvr, WelcomeMessageServer welcomer) {
super(moduleName, playerId, encoder, msgSvr, welcomer);
this.serverInfo = serverInfo;
serverStatus = new CgiServerStatus();
}
public SocketNodeClient(String moduleName, String playerId, CommandEncoder encoder, final String host, final int port, MessageBoard msgSvr, WelcomeMessageServer welcomer) {
this(moduleName, playerId, encoder, new NodeServerInfo() {
public String getHostName() {
return host;
}
public int getPort() {
return port;
}
}, msgSvr, welcomer);
}
public void send(String command) {
sender.writeLine(command);
}
protected void initializeConnection() throws UnknownHostException, IOException {
Socket s = new Socket(serverInfo.getHostName(), serverInfo.getPort());
sender = new BufferedSocketHandler(s, this);
sender.start();
}
protected void closeConnection() {
SocketHandler s = sender;
sender = null;
s.close();
}
public boolean isConnected() {
return sender != null;
}
public void socketClosed(SocketHandler handler) {
if (sender != null) {
propSupport.firePropertyChange(STATUS, null, Resources.getString("Server.lost_connection")); //$NON-NLS-1$
propSupport.firePropertyChange(CONNECTED, null, Boolean.FALSE);
sender = null;
}
}
public void handleMessage(String msg) {
handleMessageFromServer(msg);
}
public void updateConfig(Properties params) {
// No Configurable parameters
}
}