diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 6 | ||||
-rw-r--r-- | java/src/Ice/ObjectPrx.java | 1 | ||||
-rw-r--r-- | java/src/Ice/ObjectPrxHelper.java | 56 | ||||
-rw-r--r-- | java/src/IceInternal/Reference.java | 59 | ||||
-rw-r--r-- | java/src/IceInternal/ReferenceFactory.java | 9 |
5 files changed, 93 insertions, 38 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index 4ab37bda274..c881b2abc08 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -399,7 +399,7 @@ public class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapter IceInternal.Endpoint[] endpoints = new IceInternal.Endpoint[0]; IceInternal.Reference ref = _instance.referenceFactory().create(ident, new String[0], IceInternal.Reference.ModeTwoway, false, false, - "", endpoints, null, null, this); + "", endpoints, null, null, this, true); return _instance.proxyFactory().referenceToProxy(ref); } @@ -640,7 +640,7 @@ public class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapter IceInternal.Reference reference = _instance.referenceFactory().create(ident, new String[0], IceInternal.Reference.ModeTwoway, false, false, _id, - endpoints, null, null, null); + endpoints, null, null, null, true); return _instance.proxyFactory().referenceToProxy(reference); } } @@ -680,7 +680,7 @@ public class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapter IceInternal.Reference reference = _instance.referenceFactory().create(ident, new String[0], IceInternal.Reference.ModeTwoway, false, false, "", - endpoints, null, null, null); + endpoints, null, null, null, true); return _instance.proxyFactory().referenceToProxy(reference); } diff --git a/java/src/Ice/ObjectPrx.java b/java/src/Ice/ObjectPrx.java index 772140b8711..008b8ac9681 100644 --- a/java/src/Ice/ObjectPrx.java +++ b/java/src/Ice/ObjectPrx.java @@ -53,6 +53,7 @@ public interface ObjectPrx ObjectPrx ice_secure(boolean b); ObjectPrx ice_timeout(int t); ObjectPrx ice_router(Ice.RouterPrx router); + ObjectPrx ice_collocationOptimization(boolean b); ObjectPrx ice_default(); void ice_flush(); diff --git a/java/src/Ice/ObjectPrxHelper.java b/java/src/Ice/ObjectPrxHelper.java index 6b0cdc19e8c..1b7dffb4243 100644 --- a/java/src/Ice/ObjectPrxHelper.java +++ b/java/src/Ice/ObjectPrxHelper.java @@ -403,6 +403,22 @@ public class ObjectPrxHelper implements ObjectPrx } public final ObjectPrx + ice_collocationOptimization(boolean b) + { + IceInternal.Reference ref = _reference.changeCollocationOptimization(b); + if(ref.equals(_reference)) + { + return this; + } + else + { + ObjectPrxHelper proxy = new ObjectPrxHelper(); + proxy.setup(ref); + return proxy; + } + } + + public final ObjectPrx ice_default() { IceInternal.Reference ref = _reference.changeDefault(); @@ -579,24 +595,28 @@ public class ObjectPrxHelper implements ObjectPrx { if(_delegate == null) { - IceInternal.ObjectAdapterFactory objectAdapterFactory = _reference.instance.objectAdapterFactory(); - - // - // Instance components may be null if Communicator has been destroyed. - // - if(objectAdapterFactory == null) - { - throw new CommunicatorDestroyedException(); - } - - ObjectAdapter adapter = objectAdapterFactory.findObjectAdapter(this); - if(adapter != null) - { - _ObjectDelD delegate = __createDelegateD(); - delegate.setup(_reference, adapter); - _delegate = delegate; - } - else + if(_reference.collocationOptimization) + { + IceInternal.ObjectAdapterFactory objectAdapterFactory = _reference.instance.objectAdapterFactory(); + + // + // Instance components may be null if communicator has been destroyed. + // + if(objectAdapterFactory == null) + { + throw new CommunicatorDestroyedException(); + } + + ObjectAdapter adapter = objectAdapterFactory.findObjectAdapter(this); + if(adapter != null) + { + _ObjectDelD delegate = __createDelegateD(); + delegate.setup(_reference, adapter); + _delegate = delegate; + } + } + + if(_delegate == null) { _ObjectDelM delegate = __createDelegateM(); delegate.setup(_reference); diff --git a/java/src/IceInternal/Reference.java b/java/src/IceInternal/Reference.java index 2d6a66c5d5a..caa6a5259c0 100644 --- a/java/src/IceInternal/Reference.java +++ b/java/src/IceInternal/Reference.java @@ -111,6 +111,11 @@ public final class Reference return false; } + if(collocationOptimization != r.collocationOptimization) + { + return false; + } + return true; } @@ -297,6 +302,7 @@ public final class Reference final public RouterInfo routerInfo; // Null if no router is used. final public LocatorInfo locatorInfo; // Null if no locator is used. final public Ice.ObjectAdapter reverseAdapter; // For reverse comm. using the adapter's incoming connections. + final public boolean collocationOptimization; final public int hashValue; // @@ -313,7 +319,8 @@ public final class Reference else { return instance.referenceFactory().create(newIdentity, facet, mode, secure, compress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -327,7 +334,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, newFacet, mode, secure, compress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -353,7 +361,7 @@ public final class Reference try { Ice.RouterPrx newRouter = - Ice.RouterPrxHelper.uncheckedCast(routerInfo.getRouter().ice_timeout(timeout)); + Ice.RouterPrxHelper.uncheckedCast(routerInfo.getRouter().ice_timeout(timeout)); Ice.ObjectPrx newClientProxy = routerInfo.getClientProxy().ice_timeout(timeout); newRouterInfo = instance.routerManager().get(newRouter); newRouterInfo.setClientProxy(newClientProxy); @@ -377,7 +385,8 @@ public final class Reference } return instance.referenceFactory().create(identity, facet, mode, secure, compress, adapterId, - newEndpoints, newRouterInfo, newLocatorInfo, reverseAdapter); + newEndpoints, newRouterInfo, newLocatorInfo, reverseAdapter, + collocationOptimization); } public Reference @@ -390,7 +399,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, newMode, secure, compress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -404,7 +414,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, newSecure, compress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -418,7 +429,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, secure, newCompress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -432,7 +444,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, secure, compress, newAdapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -446,7 +459,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, secure, compress, adapterId, - newEndpoints, routerInfo, locatorInfo, reverseAdapter); + newEndpoints, routerInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -463,7 +477,8 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, secure, compress, adapterId, - endpoints, newRouterInfo, locatorInfo, reverseAdapter); + endpoints, newRouterInfo, locatorInfo, reverseAdapter, + collocationOptimization); } } @@ -480,7 +495,23 @@ public final class Reference else { return instance.referenceFactory().create(identity, facet, mode, secure, compress, adapterId, - endpoints, routerInfo, newLocatorInfo, reverseAdapter); + endpoints, routerInfo, newLocatorInfo, reverseAdapter, + collocationOptimization); + } + } + + public Reference + changeCollocationOptimization(boolean newCollocationOptimization) + { + if(newCollocationOptimization == collocationOptimization) + { + return this; + } + else + { + return instance.referenceFactory().create(identity, facet, mode, secure, compress, adapterId, + endpoints, routerInfo, locatorInfo, reverseAdapter, + newCollocationOptimization); } } @@ -492,7 +523,7 @@ public final class Reference return instance.referenceFactory().create(identity, new String[0], ModeTwoway, false, false, adapterId, endpoints, - routerInfo, locatorInfo, null); + routerInfo, locatorInfo, null, true); } // @@ -508,7 +539,8 @@ public final class Reference Endpoint[] endpts, RouterInfo rtrInfo, LocatorInfo locInfo, - Ice.ObjectAdapter rvAdapter) + Ice.ObjectAdapter rvAdapter, + boolean collocationOpt) { // // It's either adapter id or endpoints, it can't be both. @@ -526,6 +558,7 @@ public final class Reference routerInfo = rtrInfo; locatorInfo = locInfo; reverseAdapter = rvAdapter; + collocationOptimization = collocationOpt; int h = 0; diff --git a/java/src/IceInternal/ReferenceFactory.java b/java/src/IceInternal/ReferenceFactory.java index 51f985ea34f..e0e8346fcf2 100644 --- a/java/src/IceInternal/ReferenceFactory.java +++ b/java/src/IceInternal/ReferenceFactory.java @@ -26,7 +26,8 @@ public final class ReferenceFactory Endpoint[] endpoints, RouterInfo routerInfo, LocatorInfo locatorInfo, - Ice.ObjectAdapter reverseAdapter) + Ice.ObjectAdapter reverseAdapter, + boolean collocationOptimization) { if(_instance == null) { @@ -42,7 +43,7 @@ public final class ReferenceFactory // Create a new reference // Reference ref = new Reference(_instance, ident, facet, mode, secure, compress, adapterId, - endpoints, routerInfo, locatorInfo, reverseAdapter); + endpoints, routerInfo, locatorInfo, reverseAdapter, collocationOptimization); // // If we already have an equivalent reference, use such equivalent @@ -475,7 +476,7 @@ public final class ReferenceFactory RouterInfo routerInfo = _instance.routerManager().get(getDefaultRouter()); LocatorInfo locatorInfo = _instance.locatorManager().get(getDefaultLocator()); - return create(ident, fac, mode, secure, compress, adapter, endp, routerInfo, locatorInfo, null); + return create(ident, fac, mode, secure, compress, adapter, endp, routerInfo, locatorInfo, null, true); } public Reference @@ -523,7 +524,7 @@ public final class ReferenceFactory RouterInfo routerInfo = _instance.routerManager().get(getDefaultRouter()); LocatorInfo locatorInfo = _instance.locatorManager().get(getDefaultLocator()); - return create(ident, facet, mode, secure, compress, adapterId, endpoints, routerInfo, locatorInfo, null); + return create(ident, facet, mode, secure, compress, adapterId, endpoints, routerInfo, locatorInfo, null, true); } public synchronized void |