Streamlined registering/creating RMI objects. Invalid object IDs are no
longer hard-coded to Integer.MAX_VALUE
This commit is contained in:
parent
5a64414e7f
commit
05809714cf
@ -39,17 +39,7 @@ import dorkbox.network.connection.ping.PingTuple;
|
|||||||
import dorkbox.network.connection.wrapper.ChannelNetworkWrapper;
|
import dorkbox.network.connection.wrapper.ChannelNetworkWrapper;
|
||||||
import dorkbox.network.connection.wrapper.ChannelNull;
|
import dorkbox.network.connection.wrapper.ChannelNull;
|
||||||
import dorkbox.network.connection.wrapper.ChannelWrapper;
|
import dorkbox.network.connection.wrapper.ChannelWrapper;
|
||||||
import dorkbox.network.rmi.InvokeMethod;
|
import dorkbox.network.rmi.*;
|
||||||
import dorkbox.network.rmi.InvokeMethodResult;
|
|
||||||
import dorkbox.network.rmi.RemoteObject;
|
|
||||||
import dorkbox.network.rmi.RemoteObjectCallback;
|
|
||||||
import dorkbox.network.rmi.Rmi;
|
|
||||||
import dorkbox.network.rmi.RmiBridge;
|
|
||||||
import dorkbox.network.rmi.RmiMessage;
|
|
||||||
import dorkbox.network.rmi.RmiObjectHandler;
|
|
||||||
import dorkbox.network.rmi.RmiProxyHandler;
|
|
||||||
import dorkbox.network.rmi.RmiRegistration;
|
|
||||||
import dorkbox.network.rmi.TimeoutException;
|
|
||||||
import dorkbox.network.serialization.CryptoSerializationManager;
|
import dorkbox.network.serialization.CryptoSerializationManager;
|
||||||
import dorkbox.util.collections.IntMap;
|
import dorkbox.util.collections.IntMap;
|
||||||
import dorkbox.util.collections.LockFreeHashMap;
|
import dorkbox.util.collections.LockFreeHashMap;
|
||||||
@ -1080,8 +1070,7 @@ class ConnectionImpl extends ChannelInboundHandlerAdapter implements ICryptoConn
|
|||||||
// this is what creates a new instance of the impl class, and stores it as an ID.
|
// this is what creates a new instance of the impl class, and stores it as an ID.
|
||||||
object = kryo.newInstance(implementationClass);
|
object = kryo.newInstance(implementationClass);
|
||||||
|
|
||||||
rmiId = rmiBridge.nextObjectId();
|
rmiId = rmiBridge.register(object);
|
||||||
rmiBridge.register(rmiId, object);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1116,7 +1105,7 @@ class ConnectionImpl extends ChannelInboundHandlerAdapter implements ICryptoConn
|
|||||||
try {
|
try {
|
||||||
o = field.get(remoteClassObject.getValue());
|
o = field.get(remoteClassObject.getValue());
|
||||||
|
|
||||||
rmiBridge.register(rmiBridge.nextObjectId(), o);
|
rmiBridge.register(o);
|
||||||
classesToCheck.add(new AbstractMap.SimpleEntry<Class<?>, Object>(type, o));
|
classesToCheck.add(new AbstractMap.SimpleEntry<Class<?>, Object>(type, o));
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
logger.error("Error checking RMI fields for: {}.{}", remoteClassObject.getKey(), field.getName(), e);
|
logger.error("Error checking RMI fields for: {}.{}", remoteClassObject.getKey(), field.getName(), e);
|
||||||
@ -1184,7 +1173,7 @@ class ConnectionImpl extends ChannelInboundHandlerAdapter implements ICryptoConn
|
|||||||
}
|
}
|
||||||
|
|
||||||
int objectId = globalRmiBridge.getRegisteredId(object);
|
int objectId = globalRmiBridge.getRegisteredId(object);
|
||||||
if (objectId == Integer.MAX_VALUE) {
|
if (objectId == RmiBridge.INVALID_RMI) {
|
||||||
return rmiBridge.getRegisteredId(object);
|
return rmiBridge.getRegisteredId(object);
|
||||||
} else {
|
} else {
|
||||||
return objectId;
|
return objectId;
|
||||||
|
@ -59,7 +59,7 @@ class RemoteObjectSerializer<T> extends Serializer<T> {
|
|||||||
void write(Kryo kryo, Output output, T object) {
|
void write(Kryo kryo, Output output, T object) {
|
||||||
KryoExtra kryoExtra = (KryoExtra) kryo;
|
KryoExtra kryoExtra = (KryoExtra) kryo;
|
||||||
int id = kryoExtra.connection.getRegisteredId(object);
|
int id = kryoExtra.connection.getRegisteredId(object);
|
||||||
if (id == Integer.MAX_VALUE) {
|
if (id == RmiBridge.INVALID_RMI) {
|
||||||
throw new IllegalStateException("Object not found in RMI objectSpace: " + object);
|
throw new IllegalStateException("Object not found in RMI objectSpace: " + object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user