diff --git a/cs656/lab3/src/PresenceService.java b/cs656/lab3/src/PresenceService.java new file mode 100644 index 0000000..660e4ae --- /dev/null +++ b/cs656/lab3/src/PresenceService.java @@ -0,0 +1,48 @@ +/** + *

Title: Lab3

+ *

Description: Simple Chat Interface for OpenChord

+ *

Copyright: Copyright (c) 2008

+ *

Company: Grand Vally State University

+ * @author Jonathan Engelsma + * @version 1.0 + */ +import de.uniba.wiai.lspi.chord.service.ServiceException; + +/** + * 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 ServiceException; + + /** + * 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 ServiceException; + + /** + * Lookup the registration information of another client. + * @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 ServiceException; + + + /** + * Leave the current Chord network. Client's must call this before they + * terminate in order to make sure the keys they maintain are passed to their + * successor in the Chord ring. + */ + void leave() throws ServiceException; +} \ No newline at end of file diff --git a/cs656/lab3/src/RegistrationInfo.java b/cs656/lab3/src/RegistrationInfo.java new file mode 100644 index 0000000..1ebd137 --- /dev/null +++ b/cs656/lab3/src/RegistrationInfo.java @@ -0,0 +1,101 @@ +/** + *

Title: Lab2

+ *

Description: Registration record for the Chord Chat System

+ *

Copyright: Copyright (c) 2008

+ *

Company: Grand Vally State University

+ * @author Jonathan Engelsma + * @version 1.0 + */ +import java.io.*; + +/** + * This class represents the information that the chat client registers + * with the presence server. + */ +public class RegistrationInfo implements Serializable +{ + private static final long serialVersionUID = 2144157610883535152L; + private String userName; + private String host; + private boolean status; + private int port; + + /** + * 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; + } + + /** + * Determine the host the user is on. + * @return The name of the host client resides on. + */ + public String getHost() + { + return this.host; + } + + /** + * Get the port the client is listening for connections on. + * @return port value. + */ + public int getPort() + { + return this.port; + } + + /** + * Get the status of the client - true means availability, false means don't disturb. + * @return status value. + */ + public boolean getStatus() + { + return this.status; + } + + /** + * Chord requires stored data items to override the default hashCode() method. Leave + * this here or you will have problems! See OpenChord manual for details. + */ + public int hashCode () { + return this.toString().intern().hashCode(); + } + + /** + * Chord requires stored data items to override the default equals() method. Leave + * this here or you will have problems! See OpenChord manual for details. + */ + public boolean equals ( Object o){ + if (o instanceof RegistrationInfo ) + { + return (( RegistrationInfo)o).toString().equals(this.toString() ); + } + return false; + } + + /** + * 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 diff --git a/cs656/lab3/src/StringKey.java b/cs656/lab3/src/StringKey.java new file mode 100644 index 0000000..f2780a1 --- /dev/null +++ b/cs656/lab3/src/StringKey.java @@ -0,0 +1,38 @@ +/** + *

Title: Lab2

+ *

Description: Chord Key for strings

+ *

Copyright: Copyright (c) 2008

+ *

Company: Grand Vally State University

+ * @author Jonathan Engelsma + * @version 1.0 + */ +import de.uniba.wiai.lspi.chord.service.Key; + +/** + * Implements a simple Chord Key for Strings. See sample code or OpenChord manual for more details. + */ +public class StringKey implements Key { + + String theString ; + + public StringKey ( String theString ) + { + this.theString = theString ; + } + + public byte [] getBytes (){ + return this.theString.getBytes(); + } + + public int hashCode (){ + return this.theString.hashCode(); + } + + public boolean equals ( Object o){ + if (o instanceof StringKey ) + { + return (( StringKey)o).theString.equals(this.theString ); + } + return false; + } +}