private Writer out;
private Reader in;
private AnimatorThread mover;
private LectorListener ll;
// make a LectorScribe from a Writer and a Reader
public LectorScribe( Writer out, Reader in )
{
this.out = out;
this.in = in;
this.mover = new AnimatorThread( this );
this.mover.start();
}
//...from an OutputStream and an InputStream, by decorating them
public LectorScribe( OutputStream out, InputStream in )
{
this( new OutputStreamWriter( out ),
new InputStreamReader( in ) );
}
//...from a Socket, by accessing its streams
public LectorScribe( Socket sock ) throws IOException
{
this( sock.getOutputStream(), sock.getInputStream() );
}
//...from a hostname and port to connect to
public LectorScribe( String hostname, int port ) throws IOException
{
this( new Socket( hostname, port ) );
}
//...from a ServerSocket, by accepting a connection
public LectorScribe( ServerSocket serv ) throws IOException
{
this( serv.accept() );
}
//...from a port, by listening on it
public LectorScribe( int port ) throws IOException
{
this( new ServerSocket( port ) );
}
public void act()
{
try
{
this.ll.messageRead( this.in.read() );
}
catch (IOException e)
{
System.err.println( "Oops, I couldn't read a line!" );
}
}
public void send( String m )
{
try
{
this.out.write( m );
this.out.flush(); // (maybe)
}
catch (IOException e)
{
System.err.println( "Oops, I couldn't write a line!" );
}
}
public void addLectorListener( LectorListener ll )
{
this.ll = ll;
}