ip4.ass4.server
Class TennisServer

java.lang.Object
  extended by java.rmi.server.RemoteObject
      extended by java.rmi.server.RemoteServer
          extended by java.rmi.server.UnicastRemoteObject
              extended by ip4.ass4.server.TennisServer
All Implemented Interfaces:
RITennis, java.io.Serializable, java.rmi.Remote

public class TennisServer
extends java.rmi.server.UnicastRemoteObject
implements RITennis

Servern för tennisspelet, implementerar interfacet RITennis som är det objekt som klienten ser.

Author:
Henrik Johansson
See Also:
Serialized Form

Field Summary
private  java.lang.String gamerLeft
          idvärdet för klient som skall spela till vänster i nästa match som skall startas
private  java.lang.String gamerRight
          idvärdet för klient som skall spela till höger i nästa match som skall startas
private  java.util.Queue<java.lang.String> gamers
          klienter som väntar på motståndare
private  java.util.Map<java.lang.String,Game> games
          pågående matcher, det finns två ingångar till varje match, nämligen opponenternas respektive idvärde
private  int id
          frö för idtilldelning till komponenter
private  GameVariableSetter varSetter
           
 
Fields inherited from class java.rmi.server.RemoteObject
ref
 
Constructor Summary
TennisServer()
          default konstruktor
 
Method Summary
 int[] getGameData(java.lang.String id)
          Returnerar info om var spelare och boll befinner sig i den match som spelaren identifierad av id deltager i.
 java.lang.String getSide(java.lang.String id)
          Anropas av den klient som vill veta om hon spelar på vänster eller höger sida av planen
 boolean isMatchStarted(java.lang.String id)
          Anropas av TessisInit för att få veta om match har startat med klient identifierad av id involverad.
 boolean isOpponentFound(java.lang.String id)
          Anropas av TennisInit för att få veta om klienten identifierad med id har någon match på gång.
static void main(java.lang.String[] args)
          starta TennisServer usage: java TennisServer [<port>]
 TennisInit play()
          Anropas av den klient som vill spela en match.
 void playerMovement(java.lang.String id, int[] movement)
          Anropas av klienten för att berätta att klienten ändrat rörelsen på racket.
 void stop(java.lang.String id)
          Anropas av klient som avslutar ett spel, eller inte längre vill stå i kö för spel.
 
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

id

private int id
frö för idtilldelning till komponenter


gamers

private java.util.Queue<java.lang.String> gamers
klienter som väntar på motståndare


games

private java.util.Map<java.lang.String,Game> games
pågående matcher, det finns två ingångar till varje match, nämligen opponenternas respektive idvärde


gamerLeft

private java.lang.String gamerLeft
idvärdet för klient som skall spela till vänster i nästa match som skall startas


gamerRight

private java.lang.String gamerRight
idvärdet för klient som skall spela till höger i nästa match som skall startas


varSetter

private GameVariableSetter varSetter
Constructor Detail

TennisServer

public TennisServer()
             throws java.rmi.RemoteException
default konstruktor

Throws:
java.rmi.RemoteException
See Also:
UnicastRemoteObject
Method Detail

play

public TennisInit play()
Description copied from interface: RITennis
Anropas av den klient som vill spela en match. Returnerar en TennisInit som sköter resten av initieringen. För att detta skall fungera skall klienten implementera TennisInitListener samt anmäla sig själv till den returnerade TennisInit-instansen som lyssnare.

Specified by:
play in interface RITennis
Returns:
instans av TennisInit
See Also:
RITennis.play()

stop

public void stop(java.lang.String id)
Description copied from interface: RITennis
Anropas av klient som avslutar ett spel, eller inte längre vill stå i kö för spel.

Specified by:
stop in interface RITennis
Parameters:
id - identifierar klientenc
See Also:
RITennis.stop(java.lang.String)

isOpponentFound

public boolean isOpponentFound(java.lang.String id)
Description copied from interface: RITennis
Anropas av TennisInit för att få veta om klienten identifierad med id har någon match på gång.

Specified by:
isOpponentFound in interface RITennis
Parameters:
id - identifierar klienten
Returns:
See Also:
RITennis.isOpponentFound(java.lang.String)

isMatchStarted

public boolean isMatchStarted(java.lang.String id)
Description copied from interface: RITennis
Anropas av TessisInit för att få veta om match har startat med klient identifierad av id involverad.

Specified by:
isMatchStarted in interface RITennis
Parameters:
id - identifierar klienten
Returns:
See Also:
RITennis.isMatchStarted(java.lang.String)

playerMovement

public void playerMovement(java.lang.String id,
                           int[] movement)
Description copied from interface: RITennis
Anropas av klienten för att berätta att klienten ändrat rörelsen på racket.

Specified by:
playerMovement in interface RITennis
Parameters:
id - identifierar klienten
movement - [dx, dy] Möjliga värden är -1, 0 eller 1
See Also:
RITennis.playerMovement(java.lang.String, int[])

getGameData

public int[] getGameData(java.lang.String id)
                  throws TennisGameException
Description copied from interface: RITennis
Returnerar info om var spelare och boll befinner sig i den match som spelaren identifierad av id deltager i.

Specified by:
getGameData in interface RITennis
Parameters:
id - identifierar klienten
Returns:
Throws:
TennisGameException - om opponenten avslutat matchen.
See Also:
RITennis.getGameData(java.lang.String)

getSide

public java.lang.String getSide(java.lang.String id)
Description copied from interface: RITennis
Anropas av den klient som vill veta om hon spelar på vänster eller höger sida av planen

Specified by:
getSide in interface RITennis
Parameters:
id - identifierar klienten
Returns:
String med texten "left" eller "right"
See Also:
RITennis.getSide(java.lang.String)

main

public static void main(java.lang.String[] args)
starta TennisServer

usage: java TennisServer [<port>]

Parameters:
args - eventuellt portnummer, annat än default(1099)