com.asdf.server
Class GameManager

java.lang.Object
  extended by com.asdf.server.GameManager

public class GameManager
extends java.lang.Object

Handles creating, deleting and listing of games.


Nested Class Summary
 class GameManager.GameJoinException
           
 
Constructor Summary
GameManager()
           
 
Method Summary
 void chat(GameRequest request, long sessionID, ClientConnection client)
          Send chat message to Game
 void checkDelete(long id, GameTimerTask task)
          Checks wether a game instance is futile.
 GameResponse createGame(GameRequest request, long sessionID, ClientConnection client)
          Create game with specified parameters.
 void deleteGame(GameRequest request, long sessionID, ClientConnection client)
          Forcefully deletes an active game.
 void deliverAction(GameRequest request, long sessionID, ClientConnection client)
          Gives a user action to a game instance for processing.
 void finalize()
          Finalize GameManager by canceling timer
 java.sql.Connection getDbGameConnection()
          Getter for database game connection.
 long getFreeGameID()
          Returns next free game ID.
 void getGameDetails(GameDetailsResponse gres, java.lang.Long gameID)
          Asks for detailed information from a single game.
 void getGameTypes(java.util.List<AvailableGamesResponse.Game> gameTypes)
          Reads meta data about games available in this server and sends this to client.
 GameTimer getTimer()
          Returns the Timer object that can be used for synchronization in Game implementations.
 void handleGameResponse(GameResponse response, long sessionID, ClientConnection client)
          Handles game responses.
 void joinGame(GameRequest request, long sessionID, ClientConnection client)
          Join game.
 void listGames(java.util.List<GameListResponse.Games.Game> gameList, java.util.List<java.lang.String> columnNames, java.lang.String gameType)
          Collects a list of game descriptions to be sent back to client.
 void partGame(GameRequest request, long sessionID, ClientConnection client)
          Part game.
 void voice(GameRequest request, long sessionID, ClientConnection client)
          Send voice message to Game
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GameManager

public GameManager()
Method Detail

getFreeGameID

public long getFreeGameID()
Returns next free game ID. Simple increment on long variable.

Returns:
game ID

getTimer

public GameTimer getTimer()
Returns the Timer object that can be used for synchronization in Game implementations.

Returns:
Timer

deliverAction

public void deliverAction(GameRequest request,
                          long sessionID,
                          ClientConnection client)
Gives a user action to a game instance for processing.

Parameters:
request - GameRequest object containing possible custom commands needed by the game
sessionID - Session ID of the source of the current message
client - Client information

createGame

public GameResponse createGame(GameRequest request,
                               long sessionID,
                               ClientConnection client)
Create game with specified parameters.

Parameters:
request - GameRequest object containing possible custom commands needed by Game
sessionID - Session ID of the source of the current message
client - Client information to obtain a Server instance
Returns:
boolean Whether game was created successfully

joinGame

public void joinGame(GameRequest request,
                     long sessionID,
                     ClientConnection client)
              throws GameManager.GameJoinException
Join game.

Parameters:
request - GameRequest containing optional parameters
sessionID - Session ID of the current message
client - ClientConnection from which the message was received.
Throws:
GameManager.GameJoinException

partGame

public void partGame(GameRequest request,
                     long sessionID,
                     ClientConnection client)
Part game.

Parameters:
request -
sessionID -
client -

deleteGame

public void deleteGame(GameRequest request,
                       long sessionID,
                       ClientConnection client)
Forcefully deletes an active game.

Parameters:
request - A GameRequest delivering the gameID to be deleted.
sessionID - SessionID of the user who is performing this action.
client - Client information of the user who is performing this action.

chat

public void chat(GameRequest request,
                 long sessionID,
                 ClientConnection client)
Send chat message to Game

Parameters:
request - GameRequest
sessionID - Session ID
client - ClientConnection

voice

public void voice(GameRequest request,
                  long sessionID,
                  ClientConnection client)
Send voice message to Game

Parameters:
request - GameRequest
sessionID - Session ID
client - ClientConnection

handleGameResponse

public void handleGameResponse(GameResponse response,
                               long sessionID,
                               ClientConnection client)
Handles game responses.

Parameters:
response - GameResponse delivering user information.
sessionID - Session ID of the user who sent the response.
client - Client information of the user.

getGameTypes

public void getGameTypes(java.util.List<AvailableGamesResponse.Game> gameTypes)
Reads meta data about games available in this server and sends this to client.

Parameters:
gameTypes - a reference to a list of game meta data containers.

listGames

public void listGames(java.util.List<GameListResponse.Games.Game> gameList,
                      java.util.List<java.lang.String> columnNames,
                      java.lang.String gameType)
               throws java.lang.ClassNotFoundException
Collects a list of game descriptions to be sent back to client. Method also queries list of column names from the first encountered instance.

Parameters:
gameList - A list of Game description objects.
columnNames - A list of column names
gameType - Type of the game
Throws:
java.lang.ClassNotFoundException

getGameDetails

public void getGameDetails(GameDetailsResponse gres,
                           java.lang.Long gameID)
Asks for detailed information from a single game.

Parameters:
gres - Message content object describing details of a game.
gameID - ID to identify a given game.

getDbGameConnection

public java.sql.Connection getDbGameConnection()
Getter for database game connection.

Returns:
the database game connection

checkDelete

public void checkDelete(long id,
                        GameTimerTask task)
Checks wether a game instance is futile. If a game is not used in a long time by anyone, the game is considered trash and removed.

Parameters:
id - Game instance id.
task - The timer ask that invokes this check.

finalize

public void finalize()
Finalize GameManager by canceling timer

Overrides:
finalize in class java.lang.Object