dk.brics.bisim.controller
Class MessagePasserImpl

java.lang.Object
  extended by java.rmi.server.RemoteObject
      extended by java.rmi.server.RemoteServer
          extended by java.rmi.server.UnicastRemoteObject
              extended by dk.brics.bisim.controller.MessagePasserImpl
All Implemented Interfaces:
MessagePasser, java.io.Serializable, java.rmi.Remote

public class MessagePasserImpl
extends java.rmi.server.UnicastRemoteObject
implements MessagePasser

Implementation of the MessagePasser.

Author:
Martin Mosegaard martinm@daimi.au.dk
See Also:
MessagePasser, Serialized Form

Field Summary
private  java.util.HashMap<java.lang.Integer,GameController> gameControllers
          Registrered game controllers.
private static long serialVersionUID
           
 
Fields inherited from class java.rmi.server.RemoteObject
ref
 
Constructor Summary
MessagePasserImpl()
          Constructs a message passer with a map of game controllers, identified by their client server role.
 
Method Summary
 void quit(int clientServerRole)
          Notifies listeners that a player wants to quit, and unregisters that player.
 void registerGameController(GameController c, int clientServerRole)
          Registers a local game controller, such that it may receive messages.
 void sendMessage(int messageNumber, java.lang.String message)
          Used for sending move messages between game controllers.
 void talk(int clientServerRole, java.lang.String message)
          Used for sending chat messages to the other player.
 
Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, unexportObject
 
Methods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
 
Methods inherited from class java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

gameControllers

private java.util.HashMap<java.lang.Integer,GameController> gameControllers
Registrered game controllers.

Constructor Detail

MessagePasserImpl

public MessagePasserImpl()
                  throws java.rmi.RemoteException
Constructs a message passer with a map of game controllers, identified by their client server role.

Throws:
java.rmi.RemoteException
Method Detail

registerGameController

public void registerGameController(GameController c,
                                   int clientServerRole)
                            throws java.rmi.RemoteException
Description copied from interface: MessagePasser
Registers a local game controller, such that it may receive messages. Will register at most two game controllers.

Specified by:
registerGameController in interface MessagePasser
Parameters:
c - A game controller
clientServerRole - The role of the game controller
Throws:
java.rmi.RemoteException

sendMessage

public void sendMessage(int messageNumber,
                        java.lang.String message)
                 throws java.rmi.RemoteException
Description copied from interface: MessagePasser
Used for sending move messages between game controllers.

Specified by:
sendMessage in interface MessagePasser
Parameters:
messageNumber - A message number
message - An encoded message
Throws:
java.rmi.RemoteException
See Also:
Protocol

quit

public void quit(int clientServerRole)
          throws java.rmi.RemoteException
Description copied from interface: MessagePasser
Notifies listeners that a player wants to quit, and unregisters that player.

Specified by:
quit in interface MessagePasser
Throws:
java.rmi.RemoteException

talk

public void talk(int clientServerRole,
                 java.lang.String message)
          throws java.rmi.RemoteException
Description copied from interface: MessagePasser
Used for sending chat messages to the other player.

Specified by:
talk in interface MessagePasser
Parameters:
clientServerRole - The role of the player sending a message, used to identify the other
message - The message
Throws:
java.rmi.RemoteException