package com.planet_ink.coffee_mud.core.intermud.server; import com.planet_ink.coffee_mud.core.interfaces.*; import com.planet_ink.coffee_mud.core.*; import com.planet_ink.coffee_mud.Abilities.interfaces.*; import com.planet_ink.coffee_mud.Areas.interfaces.*; import com.planet_ink.coffee_mud.Behaviors.interfaces.*; import com.planet_ink.coffee_mud.CharClasses.interfaces.*; import com.planet_ink.coffee_mud.Commands.interfaces.*; import com.planet_ink.coffee_mud.Common.interfaces.*; import com.planet_ink.coffee_mud.Exits.interfaces.*; import com.planet_ink.coffee_mud.Items.interfaces.*; import com.planet_ink.coffee_mud.Locales.interfaces.*; import com.planet_ink.coffee_mud.MOBS.interfaces.*; import com.planet_ink.coffee_mud.Races.interfaces.*; /** * com.planet_ink.coffee_mud.core.intermud.server.ServerUser * Copyright (c) 1996 George Reese * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * The interface prescribing behaviour for a mudlib * user connection object. */ /** * The ServerUser interface prescribes behaviours which * must be defined by any user connection used with * the Imaginary JavaMud Server. Specifically, it * requires that the user connection be able to handle * user input somehow.<BR> * Created: 27 September 1996<BR> * Last modified: 27 Septembet 1996 * @author George Reese (borg@imaginary.com) * @version 1.0 */ public interface ServerUser extends ServerObject { /** * This method is triggered by the server when the * user first connects. */ public abstract void connect(); /** * The server calls this method every server cycle. The * mudlib implementation is expected to be queueing up user * input as it gets it (as opposed to processing it immediately * as it comes across the net) for synchronicity's sake. * The mudlib implementation therefore should use this method * to pull a command off the queue and process it. */ public abstract void processInput(); /** * The server calls this method just after creating an instance * of the mudlib user connection object that implements this * interface. Normally, the socket would be passed as an * argument to the constructor. Because the Server class does * not know the name of the user connection implementation class * at compile time, it has to use the Class.forName.newInstance() * construct, which means the default constructor must be used. * This method thus allows the server to pass the mudlib * implementation the socket to use for communication with the * client. * @exception java.io.IOException thrown if a problem creating I/O streams occurs * @param s the socket connected to the user's machine * @see java.lang.Class#forName * @see java.lang.Class#newInstance */ public abstract void setSocket(java.net.Socket s) throws java.io.IOException; }