package com.planet_ink.coffee_mud.core.intermud.i3.server;
import com.planet_ink.coffee_mud.core.intermud.i3.server.*;
import com.planet_ink.coffee_mud.core.intermud.i3.net.*;
import com.planet_ink.coffee_mud.core.intermud.*;
import com.planet_ink.coffee_mud.core.intermud.i3.packets.*;
import com.planet_ink.coffee_mud.core.interfaces.*;
import com.planet_ink.coffee_mud.core.*;
import com.planet_ink.coffee_mud.core.collections.*;
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.Libraries.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.i3.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 I3Server
{
static private ServerThread serverClient = null;
static private boolean started = false;
/**
* Creates a server thread if one has not yet been
* created.
* @throws ServerSecurityException thrown if an attempt to call start()
* is made once the server is running.
* @param mud the name of the mud being started
* @param port the port of the server
* @param imud a library for interaction with base system
*/
static public void start(String mud,
int port,
ImudServices imud) throws ServerSecurityException
{
try
{
if( started )
{
throw new ServerSecurityException("Illegal attempt to start Server.");
}
started = true;
serverClient = new ServerThread(mud, port, imud);
Log.sysOut("I3Server", "InterMud3 Core (c)1996 George Reese");
serverClient.start();
}
catch(final Exception e)
{
serverClient=null;
Log.errOut("I3Server",e);
}
}
/**
* Returns a distinct copy of the class identified.
* @throws ObjectLoadException thrown when a problem occurs loading the object
* @param file the name of the class being loaded
* @return a distinct copy of the class identified
*/
static public ServerObject copyObject(String file) throws ObjectLoadException {
return serverClient.copyObject(file);
}
/**
* Returns original of the class identified.
* @throws ObjectLoadException thrown when a problem occurs loading the object
* @param file the name of the class being loaded
* @return original of the class identified
*/
static public ServerObject findObject(String file) throws ObjectLoadException {
return serverClient.findObject(file);
}
static public ServerUser[] getInteractives()
{
return serverClient.getInteractives();
}
static public String getMudName()
{
return serverClient.getMudName();
}
static public int getPort()
{
return serverClient.getPort();
}
static public void shutdown()
{
try
{
try
{
final ShutdownPacket shutdown=new ShutdownPacket();
shutdown.send();
}catch(final Exception e){}
serverClient.shutdown();
started=false;
}catch(final Exception e){}
}
static public void removeObject(ServerObject ob)
{
if( !ob.getDestructed() )
{
return;
}
serverClient.removeObject(ob);
}
}