java.lang.isolate
Class LinkMessageVisitor

java.lang.Object
  |
  +--java.lang.isolate.LinkMessageVisitor

public abstract class LinkMessageVisitor
extends Object

An abstract utility class used to process a LinkMessage containing arbitrary data via LinkMessage.acceptVisitor. It is particularly useful if the data types are not known at the time the LinkMessage arrives.

The default implementation for all visitor methods in this class is to throw IllegalStateException. This class is extended by overriding the methods for the data types that are expected to be received and implement the actual processing or dispatching behavior.

A LinkMessage is processed or dispatched by passing an appropriately extended LinkMessageVisitor instance to LinkMessage.acceptVisitor.

The following example demonstrates usage, reporting String and serialized object messages while allowing all other message types to result in an IllegalStateException.

 import java.lang.isolate.*;
 import java.io.IOException;

 public class UsageExample {

   public static class ReportingVisitor extends LinkMessageVisitor {

     public void visitStringMessage(LinkMessage lm) {
       System.out.println("received string: " + lm.getString());
     }

     public void visitSerializableMessage(LinkMessage lm) throws LinkSerializationException {
       System.out.println("received serialized object: " + lm.getSerializable());
     }
   }

   // Receive and process a message from Link l

   public static void receiveAndPrintFrom(Link l) {

     LinkMessage lm = null;

     try {
       lm = l.receive();
     } catch (IOException e) {
       System.err.println("failed to receive link message: " + e);
       return;
     }

     try {
       lm.acceptVisitor(new ReportingVisitor());
     } catch (IllegalStateException ise) {
       System.err.println("unexpected link msg: not string or serializable object");
     } catch(LinkSerializationException lse) {
       System.err.println("failed to deserialize received object: " + lse.getCause());
     }
   }
 }

Since:
1.5

Constructor Summary
LinkMessageVisitor()
           
 
Method Summary
 void visitByteArrayMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a byte array.
 void visitByteBufferMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a ByteBuffer.
 void visitEventMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing an IsolateEvent.
 void visitIsolateMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing an Isolate.
 void visitLinkMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a Link.
 void visitPipeSinkMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a Pipe.SinkChannel.
 void visitPipeSourceMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a Pipe.SourceChannel.
 void visitSerializableMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a serialized object.
 void visitServerSocketMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a ServerSocket.
 void visitSocketMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a Socket.
 void visitStringMessage(java.lang.isolate.LinkMessage lm)
          Visits a LinkMessage containing a String.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LinkMessageVisitor

public LinkMessageVisitor()
Method Detail

visitIsolateMessage

public void visitIsolateMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing an Isolate.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit an Isolate

visitLinkMessage

public void visitLinkMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a Link.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Link

visitByteBufferMessage

public void visitByteBufferMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a ByteBuffer.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a ByteBuffer

visitByteArrayMessage

public void visitByteArrayMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a byte array.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a byte array

visitStringMessage

public void visitStringMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a String.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a String

visitSocketMessage

public void visitSocketMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a Socket.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Socket

visitServerSocketMessage

public void visitServerSocketMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a ServerSocket.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a ServerSocket

visitSerializableMessage

public void visitSerializableMessage(java.lang.isolate.LinkMessage lm)
                              throws LinkSerializationException
Visits a LinkMessage containing a serialized object.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a serialized object
LinkSerializationException - if a Serialization error occurred

visitPipeSourceMessage

public void visitPipeSourceMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a Pipe.SourceChannel.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Pipe.SourceChannel

visitPipeSinkMessage

public void visitPipeSinkMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing a Pipe.SinkChannel.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Pipe.SinkChannel.

visitEventMessage

public void visitEventMessage(java.lang.isolate.LinkMessage lm)
Visits a LinkMessage containing an IsolateEvent.

Parameters:
lm - the containing LinkMessage
Throws:
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a IsolateEvent.