Only attempt to call a method on the manager if the received event

is a ServerMessageEvent.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4649 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2007-04-06 20:46:15 +00:00
parent c4fac45b9c
commit 5843ce777c
@@ -46,6 +46,7 @@ import com.threerings.presents.dobj.ObjectDeathListener;
import com.threerings.presents.dobj.ObjectDestroyedEvent;
import com.threerings.presents.dobj.ObjectRemovedEvent;
import com.threerings.presents.dobj.OidListListener;
import com.threerings.presents.dobj.ServerMessageEvent;
import com.threerings.presents.dobj.SetAdapter;
import com.threerings.crowd.Log;
@@ -319,27 +320,30 @@ public class PlaceManager
// from interface MessageListener
public void messageReceived (MessageEvent event)
{
MessageHandler handler = null;
if (_msghandlers != null) {
handler = _msghandlers.get(event.getName());
}
if (handler != null) {
handler.handleEvent(event, this);
MessageHandler handler = _msghandlers.get(event.getName());
if (handler != null) {
handler.handleEvent(event, this);
}
}
// the first argument should be the client object of the caller or null if it is a server
// originated event
int srcoid = event.getSourceOid();
DObject source = (srcoid <= 0) ? null : CrowdServer.omgr.getObject(srcoid);
Object[] args = event.getArgs(), nargs;
if (args == null) {
nargs = new Object[] { source };
} else {
nargs = new Object[args.length+1];
nargs[0] = source;
System.arraycopy(args, 0, nargs, 1, args.length);
// If the message is directed at us, see if it's a request for
// a method invocation
if (event instanceof ServerMessageEvent) {
// the first argument should be the client object of the caller or null if it is
// a server-originated event
int srcoid = event.getSourceOid();
DObject source = (srcoid <= 0) ? null : CrowdServer.omgr.getObject(srcoid);
Object[] args = event.getArgs(), nargs;
if (args == null) {
nargs = new Object[] { source };
} else {
nargs = new Object[args.length+1];
nargs[0] = source;
System.arraycopy(args, 0, nargs, 1, args.length);
}
_dispatcher.dispatchMethod(event.getName(), nargs);
}
_dispatcher.dispatchMethod(event.getName(), nargs);
}
// from interface OidListListener