package com.planet_ink.coffee_mud.core.intermud.server; import com.planet_ink.coffee_mud.core.intermud.server.*; import com.planet_ink.coffee_mud.core.intermud.net.*; import com.planet_ink.coffee_mud.core.intermud.*; import com.planet_ink.coffee_mud.core.intermud.packets.*; 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.Server * 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 mudlib interface to the server. */ /** * The Server class is the mudlib's interface to the * Imaginary Mud Server. It is responsible with knowing all * internal information about the server. * Last Update: 960921 * @author George Reese * @version 1.0 */ public class Server { static private ServerThread thread = null; static private boolean started = false; /** * Creates a server thread if one has not yet been * created. * @exception DatabaseException thrown if the database is unreachable * for some reason * @exception ServerSecurityException thrown if an attempt to call start() * is made once the server is running. * @param mud the name of the mud being started */ static public void start(String mud, int port, ImudServices imud) { try { if( started ) { throw new ServerSecurityException("Illegal attempt to start Server."); } started = true; thread = new ServerThread(mud, port, imud); thread.setDaemon(true); Log.sysOut("I3Server", "InterMud3 Core (c)1996 George Reese"); thread.start(); } catch(Exception e) { thread=null; Log.errOut("I3Server",e.getMessage()); } } /** * Returns a distinct copy of the class identified. * @exception ObjectLoadException thrown when a problem occurs loading the object * @param file the name of the class being loaded */ static public ServerObject copyObject(String file) throws ObjectLoadException { return thread.copyObject(file); } static public ServerObject findObject(String file) throws ObjectLoadException { return thread.findObject(file); } static public ServerUser[] getInteractives() { return thread.getInteractives(); } static public String getMudName() { return thread.getMudName(); } static public int getPort() { return thread.getPort(); } static public void shutdown() { try{ thread.shutdown(); started=false; CMLib.killThread(thread,500,1); }catch(Exception e){} } static public void removeObject(ServerObject ob) { if( !ob.getDestructed() ) { return; } thread.removeObject(ob); } }