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.ObjectDestroyedEvent;
import com.threerings.presents.dobj.ObjectRemovedEvent; import com.threerings.presents.dobj.ObjectRemovedEvent;
import com.threerings.presents.dobj.OidListListener; import com.threerings.presents.dobj.OidListListener;
import com.threerings.presents.dobj.ServerMessageEvent;
import com.threerings.presents.dobj.SetAdapter; import com.threerings.presents.dobj.SetAdapter;
import com.threerings.crowd.Log; import com.threerings.crowd.Log;
@@ -319,27 +320,30 @@ public class PlaceManager
// from interface MessageListener // from interface MessageListener
public void messageReceived (MessageEvent event) public void messageReceived (MessageEvent event)
{ {
MessageHandler handler = null;
if (_msghandlers != null) { if (_msghandlers != null) {
handler = _msghandlers.get(event.getName()); MessageHandler handler = _msghandlers.get(event.getName());
} if (handler != null) {
if (handler != null) { handler.handleEvent(event, this);
handler.handleEvent(event, this); }
} }
// the first argument should be the client object of the caller or null if it is a server // If the message is directed at us, see if it's a request for
// originated event // a method invocation
int srcoid = event.getSourceOid(); if (event instanceof ServerMessageEvent) {
DObject source = (srcoid <= 0) ? null : CrowdServer.omgr.getObject(srcoid); // the first argument should be the client object of the caller or null if it is
Object[] args = event.getArgs(), nargs; // a server-originated event
if (args == null) { int srcoid = event.getSourceOid();
nargs = new Object[] { source }; DObject source = (srcoid <= 0) ? null : CrowdServer.omgr.getObject(srcoid);
} else { Object[] args = event.getArgs(), nargs;
nargs = new Object[args.length+1]; if (args == null) {
nargs[0] = source; nargs = new Object[] { source };
System.arraycopy(args, 0, nargs, 1, args.length); } 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 // from interface OidListListener