anecho.extranet
Class MUDBufferedReader

java.lang.Object
  extended by java.io.Reader
      extended by java.io.InputStreamReader
          extended by anecho.extranet.MUDBufferedReader
All Implemented Interfaces:
java.io.Closeable, java.lang.Readable

public class MUDBufferedReader
extends java.io.InputStreamReader

MUDBufferedReader is a BufferedReader customised to deal specifically with the output from MU*s. Unlike other existing classes, the MUDBufferedReader will give input back before a EOL is received, as some MU*s do not use EOL.


Field Summary
protected  TelnetProtocolHandler handler
          Used for trouble-shooting.
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
MUDBufferedReader(java.io.InputStream inStream)
          Create a new MUDBufferedReader using the given InputStream
MUDBufferedReader(java.io.InputStream inStream, java.io.DataOutputStream outStream)
          Create a new MUDBufferedReader using the given InputStream and OutputStream
MUDBufferedReader(java.io.InputStream inStream, java.io.DataOutputStream outStream, int buffSize)
          Create a new MUDBufferedReader using the given InputStream, OutputStream and specified buffer size.
MUDBufferedReader(java.io.InputStream inStream, int buffSize)
          Create a new MUDBufferedReader using the given InputStream and specified buffer size.
 
Method Summary
 void addTelnetEventListener(TelnetEventListener telLis)
          Allow a class to add a TelnetListener to this MUDBufferedReader.
 int cleanRead(byte[] fillBuff)
          Read data from the socket and use telnet negotiation before returning the data oldRead.
 java.lang.String cleanReadLine()
          This method reads the buffer and divides it into separate strings.
 void close()
          Close our *quot;socket" and reset our key variables
 void removeTelnetEventListener(TelnetEventListener telLis)
          Remove a given TelnetEventListener from this MUDBufferedReader.
 
Methods inherited from class java.io.InputStreamReader
getEncoding, read, read, ready
 
Methods inherited from class java.io.Reader
mark, markSupported, read, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

handler

protected transient TelnetProtocolHandler handler
Used for trouble-shooting. Compression does not work yet, so should be set false for releases.

Constructor Detail

MUDBufferedReader

public MUDBufferedReader(java.io.InputStream inStream)
Create a new MUDBufferedReader using the given InputStream

Parameters:
inStream - Our InputStream

MUDBufferedReader

public MUDBufferedReader(java.io.InputStream inStream,
                         java.io.DataOutputStream outStream)
Create a new MUDBufferedReader using the given InputStream and OutputStream

Parameters:
inStream - Our inputStream
outStream - Our OutputStream

MUDBufferedReader

public MUDBufferedReader(java.io.InputStream inStream,
                         int buffSize)
Create a new MUDBufferedReader using the given InputStream and specified buffer size.

Parameters:
inStream - Our InputStream
buffSize - Our user-defined buffer size.

MUDBufferedReader

public MUDBufferedReader(java.io.InputStream inStream,
                         java.io.DataOutputStream outStream,
                         int buffSize)
Create a new MUDBufferedReader using the given InputStream, OutputStream and specified buffer size.

Parameters:
inStream - Our InputStream
outStream - Our OutputStream
buffSize - The user defined buffer size.
Method Detail

close

public void close()
           throws java.io.IOException
Close our *quot;socket" and reset our key variables

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStreamReader
Throws:
java.io.IOException - This exception is thrown if the socket no longer exists (or perhaps is already closed).

addTelnetEventListener

public void addTelnetEventListener(TelnetEventListener telLis)
Allow a class to add a TelnetListener to this MUDBufferedReader.

Parameters:
telLis - The listener

removeTelnetEventListener

public void removeTelnetEventListener(TelnetEventListener telLis)
Remove a given TelnetEventListener from this MUDBufferedReader.

Parameters:
telLis - The listener to remove.

cleanRead

public int cleanRead(byte[] fillBuff)
              throws java.io.IOException
Read data from the socket and use telnet negotiation before returning the data oldRead. This method is originally from the Java Telnet Application (JTA) from the file de.mud.telnet.TelnetWrapper.java

Parameters:
fillBuff - the input buffer to oldRead in
Returns:
the amount of bytes oldRead
Throws:
java.io.IOException - This exception can be used to catch when the socket has closed

cleanReadLine

public java.lang.String cleanReadLine()
                               throws java.io.IOException
This method reads the buffer and divides it into separate strings. These strings are then put in an internal buffer. A string from the buffer is returned each time cleanReadLine is called. Once the buffer is empty then we'll oldRead more from the socket. There is probably a better way of doing this. Fix Me XXX

Returns:
A string of MU* output
Throws:
java.io.IOException