summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/ObjectAdapterI.java6
-rw-r--r--java/src/Ice/ObjectPrx.java1
-rw-r--r--java/src/Ice/ObjectPrxHelper.java56
-rw-r--r--java/src/IceInternal/Reference.java59
-rw-r--r--java/src/IceInternal/ReferenceFactory.java9
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