// $Id: SocketManager.java,v 1.5 1999/06/05 23:29:12 greear Exp $
// $Revision: 1.5 $ $Author: greear $ $Date: 1999/06/05 23:29:12 $
//
//Hegemon Client Code: Java Client for ScryMUD Server Code
//Copyright (C) 1998 Ben Greear
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program 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 General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// To contact the Author, Ben Greear: greear@cyberhighway.net, (preferred)
// greearb@agcs.com
//
import java.io.*;
import java.net.*;
import java.lang.*;
import java.awt.*;
import java.util.*;
public class SocketManager {
Socket sock;
SocketReader reader;
SocketWriter writer;
HegemonManager hm;
public SocketManager(String str, int port, HegemonManager h) {
hm = h;
try {
h.getClientDisplay().setTitle("Hegemon Client: Attempting Connection to: "
+ str + " port: " + port);
//new MessageDialog("ATTEMPTING CONNECTION:",
// "Host: " + str + " port: " + port,
// "green", "black");
sock = new Socket (str, port);
reader = new SocketReader (this, h);
writer = new SocketWriter (this, h);
reader.setPriority (6);
reader.start ();
h.getClientDisplay().setTitle("Hegemon Client: Connected to: "
+ str + " port: " + port);
}
catch (IOException e) {
System.err.println ("Constructing SocketManager: " + e);
new MessageDialog("ERROR OPENING SOCKET", e.toString(),
"black", "red");
}
}//constructor
public Socket getSock() {
return sock;
}
public SocketReader getReader() {
return reader;
}
public SocketWriter getWriter() {
return writer;
}
public final void write(String str) {
writer.send(str);
}
/** used for snazy new output device. */
public void setReaderOutput(HegemonScroll output) {
reader.setOutput(output);
}
public void destroy() {
if (reader != null) {
reader.destroy();
reader = null;
}
if (writer != null) {
writer.destroy();
writer = null;
}
}
public void signalWriterDeath() {
Log.instance().init("In signalWriterDeath().");
writer = null;
hm.getScroll().append("\n\n#### LOST CONNECTION on Write!\n");
hm.getScroll().getPar().paintScroll();
hm.getScroll().getProperties().reset();
hm.getClientDisplay().setTitle("Hegemon Client: Not Connected");
new MessageDialog("LOST CONNECTION", "Cannot write to socket.",
"black", "red");
}//
public void signalReaderDeath() {
Log.instance().init("In signalReaderDeath().");
try {
if (reader.getDis() != null)
reader.getDis().close();
sock.close();
}
catch (IOException e) {
Log.instance().err("signalReaderDeath: " + e);
}
reader = null;
hm.getScroll().append("\n\n#### LOST CONNECTION!\n");
hm.getScroll().getPar().paintScroll();
hm.getScroll().getProperties().reset();
hm.getClientDisplay().setTitle("Hegemon Client: Not Connected");
new MessageDialog("LOST CONNECTION", "Cannot read from socket.",
"black", "red");
}//
public void close() {
reader = null;
writer = null;
}
public void flush() {
if (writer != null)
writer.flush();
if (reader != null)
reader.flush();
}
}//SocketManager