|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object | +--java.lang.isolate.LinkMessageVisitor
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());
}
}
}
| 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 |
public LinkMessageVisitor()
| Method Detail |
public void visitIsolateMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing an Isolate.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit an Isolatepublic void visitLinkMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a Link.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Linkpublic void visitByteBufferMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a ByteBuffer.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a ByteBufferpublic void visitByteArrayMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a byte array.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a byte arraypublic void visitStringMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a String.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Stringpublic void visitSocketMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a Socket.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Socketpublic void visitServerSocketMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a ServerSocket.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a ServerSocket
public void visitSerializableMessage(java.lang.isolate.LinkMessage lm)
throws LinkSerializationException
LinkMessage containing a serialized object.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a serialized object
LinkSerializationException - if a Serialization error occurredpublic void visitPipeSourceMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a Pipe.SourceChannel.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Pipe.SourceChannelpublic void visitPipeSinkMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing a Pipe.SinkChannel.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a Pipe.SinkChannel.public void visitEventMessage(java.lang.isolate.LinkMessage lm)
LinkMessage containing an IsolateEvent.
lm - the containing LinkMessage
NullPointerException - if lm is null
IllegalStateException - if this message visitor cannot visit a IsolateEvent.
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||