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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user