/*
* $Id$
*
* Copyright (c) 2008 by Joel Uckelman
*
* 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.launch;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import VASSAL.tools.ErrorDialog;
/**
* A socket client for communication between the {@link ModuleManager}
* and its children {@link Player} and {@link Editor} processes. Requests
* are sent from, and replies recieved by this class.
*
* @see CommandServer
* @author Joel Uckelman
* @since 3.1.0
* @deprecated Use {@link ObjectOutputStream} with {@link SerializableSingal}
* instead.
*/
@Deprecated
public class CommandClient {
private final ObjectInputStream in;
private final ObjectOutputStream out;
/**
* Create a new <code>CommandClient</code>.
*
* @param clientSocket the socket on which to communicate
* @throws IOException if something goes wrong with the socket
*/
public CommandClient(Socket clientSocket) throws IOException {
out = new ObjectOutputStream(clientSocket.getOutputStream());
in = new ObjectInputStream(clientSocket.getInputStream());
}
/**
* Send a request to the socket listener and recieve a reply.
* This method is synchronized to ensure that only one thread
* sends a requests over the socket at a time.
*
* @param cmd the command to send to the socket listener
* @return the reply object from the socket listener
* @throws IOException if something goes wrong with the socket
*/
public synchronized Object request(Object cmd) throws IOException {
out.writeObject(cmd);
try {
return in.readObject();
}
catch (ClassNotFoundException e) {
ErrorDialog.bug(e);
return null;
}
}
}