A Shared Whiteboard
Now we’ll look at a collaborative application that’s not so simple—a shared whiteboard. There are more things to worry about in this application because, while we still need to keep track of agent identities and communications, the data shared between agents is a bit more complicated and can lead to performance problems pretty quickly.
First let’s build a simple shared whiteboard system based on
our RMI collaborative classes. Like the chat example, our first
version will use the standard mediator class,
RMIMediatorImpl
, because this version will
only need the mediator to do the default routing of messages to the
other agents. This initial whiteboard example will also need a new
subclass of the RMICollaborator
that acts as a
whiteboard user. Actions that the user performs in the local
whiteboard are broadcast to all other users so that their displays
are updated properly.
Example 10.2 shows a
WhiteboardUser
class that subclasses
RMICollaboratorImpl
. It has a single constructor
with four arguments: a name that the whiteboard user goes by, a color
that is used when the user draws on the whiteboard, a host name for
the mediator, and the mediator’s name. The user name, host, and
mediator name are passed to the
RMICollaboratorImpl
constructor to establish the
connection to the mediator, and to initialize the
collaborator’s Identity
. Once this is
done, the color is added to the whiteboard user’s
Identity
. We include the user’s color in
the Identity
so other users ...
Get Java Distributed Computing now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.