We've always been at war with Eurasia. Changed InvocationManager to
InvocationDirector (please god let the renaming be done). Removed IntMap and modified code to use samskivert's HashIntMap. Also modified PlaceManager and PlaceRegistry such that there is no Properties object supplied for configuration (let the derived classes sort out how they want to configure their managers) and so that the PlaceManager tells the PlaceRegistry what sort of PlaceObject derived class it wants to manage rather than having that come from the configuration. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@374 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: ChatDirector.java,v 1.7 2001/10/01 22:14:55 mdb Exp $
|
||||
// $Id: ChatDirector.java,v 1.8 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.chat;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class ChatDirector
|
||||
_ctx.getClient().addObserver(new ClientAdapter() {
|
||||
public void clientDidLogon (Client client)
|
||||
{
|
||||
client.getInvocationManager().registerReceiver(
|
||||
client.getInvocationDirector().registerReceiver(
|
||||
MODULE_NAME, ChatDirector.this);
|
||||
}
|
||||
});
|
||||
@@ -84,7 +84,8 @@ public class ChatDirector
|
||||
}
|
||||
|
||||
// dispatch a speak request on the active place object
|
||||
int reqid = _ctx.getClient().getInvocationManager().nextInvocationId();
|
||||
int reqid =
|
||||
_ctx.getClient().getInvocationDirector().nextInvocationId();
|
||||
Object[] args = new Object[] { new Integer(reqid), message };
|
||||
MessageEvent mevt = new MessageEvent(
|
||||
_place.getOid(), ChatService.SPEAK_REQUEST, args);
|
||||
@@ -160,7 +161,7 @@ public class ChatDirector
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by the invocation manager when another client has requested
|
||||
* Called by the invocation director when another client has requested
|
||||
* a tell message be delivered to this client.
|
||||
*/
|
||||
public void handleTellNotification (String source, String message)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//
|
||||
// $Id: ChatService.java,v 1.4 2001/10/01 22:14:55 mdb Exp $
|
||||
// $Id: ChatService.java,v 1.5 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.chat;
|
||||
|
||||
import com.threerings.cocktail.cher.client.Client;
|
||||
import com.threerings.cocktail.cher.client.InvocationManager;
|
||||
import com.threerings.cocktail.cher.client.InvocationDirector;
|
||||
import com.threerings.cocktail.party.Log;
|
||||
|
||||
/**
|
||||
@@ -33,10 +33,10 @@ public class ChatService implements ChatCodes
|
||||
public static int tell (Client client, String target, String message,
|
||||
ChatDirector rsptarget)
|
||||
{
|
||||
InvocationManager invmgr = client.getInvocationManager();
|
||||
InvocationDirector invdir = client.getInvocationDirector();
|
||||
Object[] args = new Object[] { target, message };
|
||||
Log.info("Sending tell request [tgt=" + target +
|
||||
", msg=" + message + "].");
|
||||
return invmgr.invoke(MODULE_NAME, TELL_REQUEST, args, rsptarget);
|
||||
return invdir.invoke(MODULE_NAME, TELL_REQUEST, args, rsptarget);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//
|
||||
// $Id: LocationService.java,v 1.2 2001/10/01 22:14:55 mdb Exp $
|
||||
// $Id: LocationService.java,v 1.3 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.client;
|
||||
|
||||
import com.threerings.cocktail.cher.client.Client;
|
||||
import com.threerings.cocktail.cher.client.InvocationManager;
|
||||
import com.threerings.cocktail.cher.client.InvocationDirector;
|
||||
import com.threerings.cocktail.party.Log;
|
||||
|
||||
/**
|
||||
@@ -24,9 +24,9 @@ public class LocationService implements LocationCodes
|
||||
public static void moveTo (Client client, int placeId,
|
||||
LocationDirector rsptarget)
|
||||
{
|
||||
InvocationManager invmgr = client.getInvocationManager();
|
||||
InvocationDirector invdir = client.getInvocationDirector();
|
||||
Object[] args = new Object[] { new Integer(placeId) };
|
||||
invmgr.invoke(MODULE_NAME, MOVE_TO_REQUEST, args, rsptarget);
|
||||
invdir.invoke(MODULE_NAME, MOVE_TO_REQUEST, args, rsptarget);
|
||||
Log.info("Sent moveTo request [place=" + placeId + "].");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
//
|
||||
// $Id: OccupantManager.java,v 1.4 2001/10/01 22:14:55 mdb Exp $
|
||||
// $Id: OccupantManager.java,v 1.5 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
||||
import com.samskivert.util.HashIntMap;
|
||||
import com.threerings.cocktail.cher.dobj.*;
|
||||
import com.threerings.cocktail.cher.util.IntMap;
|
||||
|
||||
import com.threerings.cocktail.party.Log;
|
||||
import com.threerings.cocktail.party.data.OccupantInfo;
|
||||
@@ -177,5 +177,5 @@ public class OccupantManager
|
||||
|
||||
protected ArrayList _observers = new ArrayList();
|
||||
protected PlaceObject _place;
|
||||
protected IntMap _ocache = new IntMap();
|
||||
protected HashIntMap _ocache = new HashIntMap();
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
//
|
||||
// $Id: PlaceConfig.java,v 1.1 2001/08/01 20:37:35 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.server;
|
||||
|
||||
/**
|
||||
* <code>PlaceConfig</code> acts as a central location and means for
|
||||
* documenting the various standard configuration properties that can be
|
||||
* provided to the place manager via its config properties object.
|
||||
*/
|
||||
public class PlaceConfig
|
||||
{
|
||||
/**
|
||||
* This configuration parameter specifies the classname of the place
|
||||
* object derived class to be used when creating a new place.
|
||||
*/
|
||||
public static final String PLACEOBJ_CLASS = "pobj";
|
||||
|
||||
/**
|
||||
* This configuration parameter specifies the classname of the place
|
||||
* manager derived class to be used when creating a new place.
|
||||
*/
|
||||
public static final String PLACEMGR_CLASS = "pmgr";
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: PlaceManager.java,v 1.12 2001/08/21 22:34:20 mdb Exp $
|
||||
// $Id: PlaceManager.java,v 1.13 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.server;
|
||||
|
||||
@@ -25,28 +25,37 @@ import com.threerings.cocktail.party.data.*;
|
||||
* handles the place-related component of chatting. It also provides the
|
||||
* basis for place-based access control.
|
||||
*
|
||||
* <p> A derived class is expected to achieve its functionality via the
|
||||
* callback functions:
|
||||
*
|
||||
* <pre>
|
||||
* protected void didStartup ()
|
||||
* protected void willShutdown ()
|
||||
* protected void didShutdown ()
|
||||
* </pre>
|
||||
*
|
||||
* as well as through additions to <code>handleEvent</code>.
|
||||
* <p> A derived class is expected to handle initialization, cleanup and
|
||||
* operational functionality via the calldown functions {@link
|
||||
* #didStartup}, {@link #willShutdown}, and {@link #didShutdown} as well
|
||||
* as through additions to {@link #handleEvent}.
|
||||
*/
|
||||
public class PlaceManager implements Subscriber
|
||||
{
|
||||
/**
|
||||
* Called by the place registry after creating this place manager.
|
||||
* Initialization is followed by startup which will happen when the
|
||||
* place object to be managed is available.
|
||||
*/
|
||||
public void init (PlaceRegistry registry, Properties config)
|
||||
public void setPlaceRegistry (PlaceRegistry registry)
|
||||
{
|
||||
_registry = registry;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
/**
|
||||
* A place manager derived class is likely to have a corresponding
|
||||
* derived class of {@link PlaceObject} that it will be managing.
|
||||
* Derived classes should override this method and return the class
|
||||
* object for the place object derived class they desire to use. The
|
||||
* place registry will use this method to create the proper place
|
||||
* object during the place creation process.
|
||||
*
|
||||
* @return the class of the class, derived from {@link PlaceObject},
|
||||
* that this manager wishes to manage.
|
||||
*
|
||||
* @see PlaceRegistry#createPlace
|
||||
*/
|
||||
protected Class getPlaceObjectClass ()
|
||||
{
|
||||
return PlaceObject.class;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,6 +90,18 @@ public class PlaceManager implements Subscriber
|
||||
{
|
||||
}
|
||||
|
||||
// not called at present but will eventually be part of the shutdown
|
||||
// and cleanup process
|
||||
protected void willShutdown ()
|
||||
{
|
||||
}
|
||||
|
||||
// not called at present but will eventually be part of the shutdown
|
||||
// and cleanup process
|
||||
protected void didShutdown ()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* When the manager starts up, it configures its place object occupant
|
||||
* info set by setting the type of occupant info objects it will
|
||||
@@ -273,9 +294,6 @@ public class PlaceManager implements Subscriber
|
||||
/** A reference to the place registry with which we're registered. */
|
||||
protected PlaceRegistry _registry;
|
||||
|
||||
/** The configuration provided for this place manager. */
|
||||
protected Properties _config;
|
||||
|
||||
/** Message handlers are used to process message events. */
|
||||
protected HashMap _msghandlers;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
//
|
||||
// $Id: PlaceRegistry.java,v 1.8 2001/08/21 19:38:06 mdb Exp $
|
||||
// $Id: PlaceRegistry.java,v 1.9 2001/10/02 02:07:50 mdb Exp $
|
||||
|
||||
package com.threerings.cocktail.party.server;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Properties;
|
||||
import java.util.Iterator;
|
||||
|
||||
import com.samskivert.util.Config;
|
||||
import com.samskivert.util.HashIntMap;
|
||||
import com.samskivert.util.Queue;
|
||||
|
||||
import com.threerings.cocktail.cher.dobj.*;
|
||||
import com.threerings.cocktail.cher.util.IntMap;
|
||||
|
||||
import com.threerings.cocktail.party.Log;
|
||||
import com.threerings.cocktail.party.data.PlaceObject;
|
||||
@@ -32,57 +31,13 @@ public class PlaceRegistry implements Subscriber
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and registers a new place along with a manager to manage
|
||||
* that place. The place object class and place manager class are
|
||||
* determined from the configuration information provided in the
|
||||
* supplied properties instance.
|
||||
* Creates and registers a new place manager along with the place
|
||||
* object to be managed. The registry takes care of tracking the
|
||||
* creation of the object and informing the manager when it is
|
||||
* created.
|
||||
*
|
||||
* @param config the configuration information for this place manager.
|
||||
*
|
||||
* @return a reference to the place manager that will manage the new
|
||||
* place object or null if an error occurred creating the place or
|
||||
* place manager.
|
||||
*
|
||||
* @exception InstantiationException thrown if an error occurs trying
|
||||
* to instantiate and initialize the place manager.
|
||||
*
|
||||
* @see PlaceConfig#PLACEOBJ_CLASS
|
||||
* @see PlaceConfig#PLACEMGR_CLASS
|
||||
*/
|
||||
public PlaceManager createPlace (Properties config)
|
||||
throws InstantiationException
|
||||
{
|
||||
String pobjcl = config.getProperty(PlaceConfig.PLACEOBJ_CLASS);
|
||||
if (pobjcl == null) {
|
||||
throw new InstantiationException(
|
||||
"No place object classname specified in place config.");
|
||||
}
|
||||
|
||||
String pmgrcl = config.getProperty(PlaceConfig.PLACEMGR_CLASS);
|
||||
if (pobjcl == null) {
|
||||
throw new InstantiationException(
|
||||
"No place manager classname specified in place config.");
|
||||
}
|
||||
|
||||
try {
|
||||
return createPlace(Class.forName(pobjcl),
|
||||
Class.forName(pmgrcl), config);
|
||||
} catch (Exception e) {
|
||||
throw new InstantiationException(
|
||||
"Error instantiating class: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and registers a new place along with a manager to manage
|
||||
* that place. The registry takes care of tracking the creation of the
|
||||
* object and informing the manager when it is created.
|
||||
*
|
||||
* @param pobjClass the <code>PlaceObject</code> derived class that
|
||||
* should be instantiated to create the place object.
|
||||
* @param pmgrClass the <code>PlaceManager</code> derived class that
|
||||
* should be instantiated to manage the place.
|
||||
* @param config the configuration information for this place manager.
|
||||
* @param pmgrClass the {@link PlaceManager} derived class that should
|
||||
* be instantiated to manage the place.
|
||||
*
|
||||
* @return a reference to the place manager that will manage the new
|
||||
* place object.
|
||||
@@ -90,21 +45,23 @@ public class PlaceRegistry implements Subscriber
|
||||
* @exception InstantiationException thrown if an error occurs trying
|
||||
* to instantiate and initialize the place manager.
|
||||
*/
|
||||
public PlaceManager createPlace (Class pobjClass, Class pmgrClass,
|
||||
Properties config)
|
||||
public PlaceManager createPlace (Class pmgrClass)
|
||||
throws InstantiationException
|
||||
{
|
||||
try {
|
||||
// create a place manager for this place
|
||||
PlaceManager pmgr = (PlaceManager)pmgrClass.newInstance();
|
||||
// let the pmgr know about us
|
||||
pmgr.init(this, config);
|
||||
pmgr.setPlaceRegistry(this);
|
||||
|
||||
// stick the manager on the creation queue because we know
|
||||
// we'll get our calls to objectAvailable()/requestFailed() in
|
||||
// the order that we call createObject()
|
||||
_createq.append(pmgr);
|
||||
|
||||
// and request to create the place object
|
||||
PartyServer.omgr.createObject(pobjClass, this, false);
|
||||
PartyServer.omgr.createObject(
|
||||
pmgr.getPlaceObjectClass(), this, false);
|
||||
|
||||
return pmgr;
|
||||
|
||||
@@ -128,20 +85,25 @@ public class PlaceRegistry implements Subscriber
|
||||
* should only be accessed on the dobjmgr thread and shouldn't be kept
|
||||
* around across event dispatches.
|
||||
*/
|
||||
public Enumeration getPlaces ()
|
||||
public Iterator getPlaces ()
|
||||
{
|
||||
final Enumeration enum = _pmgrs.elements();
|
||||
return new Enumeration() {
|
||||
public boolean hasMoreElements ()
|
||||
final Iterator enum = _pmgrs.elements();
|
||||
return new Iterator() {
|
||||
public boolean hasNext ()
|
||||
{
|
||||
return enum.hasMoreElements();
|
||||
return enum.hasNext();
|
||||
}
|
||||
|
||||
public Object nextElement ()
|
||||
public Object next ()
|
||||
{
|
||||
PlaceManager plmgr = (PlaceManager)enum.nextElement();
|
||||
PlaceManager plmgr = (PlaceManager)enum.next();
|
||||
return (plmgr == null) ? null : plmgr.getPlaceObject();
|
||||
}
|
||||
|
||||
public void remove ()
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -150,7 +112,7 @@ public class PlaceRegistry implements Subscriber
|
||||
* This should only be accessed on the dobjmgr thread and shouldn't be
|
||||
* kept around across event dispatches.
|
||||
*/
|
||||
public Enumeration getPlaceManagers ()
|
||||
public Iterator getPlaceManagers ()
|
||||
{
|
||||
return _pmgrs.elements();
|
||||
}
|
||||
@@ -213,5 +175,5 @@ public class PlaceRegistry implements Subscriber
|
||||
}
|
||||
|
||||
protected Queue _createq = new Queue();
|
||||
protected IntMap _pmgrs = new IntMap();
|
||||
protected HashIntMap _pmgrs = new HashIntMap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user