The frameworks we constructed: ==============================
The PickEvents
and the distribution of them by the PickableObjects
to the registred PickListeners
is an example of the Event pattern.
The use of this pattern in the 3D interface makes working with that interface almost
as easy as with a 2D one.
We wanted to set a goal that the messages, that would be sent between the client and server, have a transparent protocol as possible. We wanted to obtain a framework that allows us to write one protocol definition that would be used both client- and serverside, in order to avoid protocol dependancies between these sides. Therefore the determining of the type, the marshalling and unmarshalling should be done by this framework itself.
We decided to use Sun's ObjectOutputStream/ObjectInputStream
for marshalling and unmarshalling the messages, and we created
{@link quest.global.net.Message} as the base class for the network
messages. This way only Objects of type Message could be sent, and the Message
implementation of the toString
method would facilitate debugging.
Combined with the implicit rule that inner classes of the subclass that
overrides Message, a message hierarchy can be determined of what type a certain
object message is. This results in a framework we call 'Message Protocol' framework.
Combined with the ClientDaemon/ServerDaemon approach it results in a rubust
message passing environment.