From 507a723e8e4c9554a42ed676f7ae72927400d2b7 Mon Sep 17 00:00:00 2001 From: josh Date: Sun, 2 Nov 2008 21:33:49 +0000 Subject: [PATCH] added gvsu/cs656/lab4 git-svn-id: svn://anubis/gvsu@229 45c1a28c-8058-47b2-ae61-ca45b979098e --- .../cs656/lab4/server/PresenceService.java | 59 ++++++++ .../cs656/lab4/server/RegistrationInfo.java | 129 ++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/PresenceService.java create mode 100644 cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/RegistrationInfo.java diff --git a/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/PresenceService.java b/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/PresenceService.java new file mode 100644 index 0000000..c24b5d6 --- /dev/null +++ b/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/PresenceService.java @@ -0,0 +1,59 @@ +//---------------------------------------------------------------------- +// +// Filename: PresenceService.java +// Description: +// +// $Id:$ +// +//---------------------------------------------------------------------- +package edu.gvsu.cis.cs656.lab4.server; + +/** + * @author Jonathan Engelsma + * + */ +/** + * The abstract interface that is to implemented by a remote + * presence server. ChatClients will use this interface to + * register themselves with the presence server, and also to + * determine and locate other users who are available for chat + * sessions. + */ +public interface PresenceService { + + /** + * Register a client with the presence service. + * @param reg The information that is to be registered about a client. + */ + void register(RegistrationInfo reg) throws Exception; + + /** + * Unregister a client from the presence service. Client must call this + * method when it terminates execution. + * @param userName The name of the user to be unregistered. + */ + void unregister(String userName) throws Exception; + + /** + * Lookup the registration information of another client. + * @param name The name of the client that is to be located. + * @return The RegistrationInfo info for the client, or null if + * no such client was found. + */ + RegistrationInfo lookup(String name) throws Exception; + + + /** + * Sets the user's presence status. + * @param name The name of the user whose status is to be set. + * @param status true if user is available, false otherwise. + */ + void setStatus(String userName, boolean status) throws Exception; + + /** + * Determine all users who are currently registered in the system. + * @return An array of RegistrationInfo objects - one for each client + * present in the system. + */ + RegistrationInfo[] listRegisteredUsers() throws Exception; +} \ No newline at end of file diff --git a/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/RegistrationInfo.java b/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/RegistrationInfo.java new file mode 100644 index 0000000..1b77a17 --- /dev/null +++ b/cs656/lab4/src/edu/gvsu/cis/cs656/lab4/server/RegistrationInfo.java @@ -0,0 +1,129 @@ +//---------------------------------------------------------------------- +// +// Filename: RegistrationInfo.java +// Description: +// +// $Id:$ +// +//---------------------------------------------------------------------- +package edu.gvsu.cis.cs656.lab4.server; + +/** + * @author Jonathan Engelsma + * + */ + + +/** + * This class represents the information that the chat client registers + * with the presence server. + */ +public class RegistrationInfo +{ + private String userName; + private String host; + private boolean status; + private int port; + + public RegistrationInfo() + { + this.userName = null; + this.host = null; + this.status = false; + this.port = -1; + } + + /** + * RegistrationInfo constructor. + * @param uname Name of the user being registered. + * @param h Name of the host their client is running on. + * @param p The port # their client is listening for connections on. + * @param s The status, true if the client is available to host a game, false otherwise. + */ + public RegistrationInfo(String uname, String h, int p, boolean s) + { + this.userName = uname; + this.host = h; + this.port = p; + this.status = s; + } + + /** + * Determine the name of the user. + * @return The name of the user. + */ + public String getUserName() + { + return this.userName; + } + + + /** + * @param userName the userName to set + */ + public void setUserName(String userName) { + this.userName = userName; + } + + /** + * Determine the host the user is on. + * @return The name of the host client resides on. + */ + public String getHost() + { + return this.host; + } + + + /** + * @param host the host to set + */ + public void setHost(String host) { + this.host = host; + } + + /** + * Get the port the client is listening for connections on. + * @return port value. + */ + public int getPort() + { + return this.port; + } + + + + /** + * @param port the port to set + */ + public void setPort(int port) { + this.port = port; + } + + /** + * Get the status of the client - true means availability, false means don't disturb. + * @return status value. + */ + public boolean getStatus() + { + return this.status; + } + + /** + * Modify the user's busy/available status. + * @param status set to true if user is available, false otherwise. + */ + public void setStatus(boolean status) { + this.status = status; + } + + /** + * hashCode() and equals() use this. Don't touch it! + */ + public String toString() + { + return this.userName + "@" + this.host + ":" + this.port; + } + + +} \ No newline at end of file