summaryrefslogtreecommitdiff
path: root/javae/src/IceInternal/ProxyFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'javae/src/IceInternal/ProxyFactory.java')
-rw-r--r--javae/src/IceInternal/ProxyFactory.java257
1 files changed, 0 insertions, 257 deletions
diff --git a/javae/src/IceInternal/ProxyFactory.java b/javae/src/IceInternal/ProxyFactory.java
deleted file mode 100644
index ee708a5cc05..00000000000
--- a/javae/src/IceInternal/ProxyFactory.java
+++ /dev/null
@@ -1,257 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice-E is licensed to you under the terms described in the
-// ICEE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-package IceInternal;
-
-public final class ProxyFactory
-{
- public Ice.ObjectPrx
- stringToProxy(String str)
- {
- Reference ref = _instance.referenceFactory().create(str);
- return referenceToProxy(ref);
- }
-
- public String
- proxyToString(Ice.ObjectPrx proxy)
- {
- if(proxy != null)
- {
- Ice.ObjectPrxHelperBase h = (Ice.ObjectPrxHelperBase)proxy;
- return h.__reference().toString();
- }
- else
- {
- return "";
- }
- }
-
- public Ice.ObjectPrx
- propertyToProxy(String prefix)
- {
- Reference ref = _instance.referenceFactory().createFromProperties(prefix);
- return referenceToProxy(ref);
- }
-
- public Ice.ObjectPrx
- streamToProxy(BasicStream s)
- {
- Ice.Identity ident = new Ice.Identity();
- ident.__read(s);
-
- Reference ref = _instance.referenceFactory().create(ident, s);
- return referenceToProxy(ref);
- }
-
- public void
- proxyToStream(Ice.ObjectPrx proxy, BasicStream s)
- {
- if(proxy != null)
- {
- Ice.ObjectPrxHelperBase h = (Ice.ObjectPrxHelperBase)proxy;
- Reference ref = h.__reference();
- ref.getIdentity().__write(s);
- ref.streamWrite(s);
- }
- else
- {
- Ice.Identity ident = new Ice.Identity();
- ident.name = "";
- ident.category = "";
- ident.__write(s);
- }
- }
-
- public Ice.ObjectPrx
- referenceToProxy(Reference ref)
- {
- if(ref != null)
- {
- Ice.ObjectPrxHelperBase proxy = new Ice.ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
- }
- else
- {
- return null;
- }
- }
-
- public int
- checkRetryAfterException(Ice.LocalException ex, Reference ref, int cnt)
- {
- TraceLevels traceLevels = _instance.traceLevels();
- Ice.Logger logger = _instance.initializationData().logger;
-
- if(ex instanceof Ice.ObjectNotExistException)
- {
- Ice.ObjectNotExistException one = (Ice.ObjectNotExistException)ex;
-
- LocatorInfo li = ref.getLocatorInfo();
- if(li != null)
- {
- //
- // We retry ObjectNotExistException if the reference is
- // indirect.
- //
- li.clearObjectCache((IceInternal.IndirectReference)ref);
- }
- else if(ref.getRouterInfo() != null && one.operation.equals("ice_add_proxy"))
- {
- //
- // If we have a router, an ObjectNotExistException with an
- // operation name "ice_add_proxy" indicates to the client
- // that the router isn't aware of the proxy (for example,
- // because it was evicted by the router). In this case, we
- // must *always* retry, so that the missing proxy is added
- // to the router.
- //
- if(traceLevels.retry >= 1)
- {
- String s = "retrying operation call to add proxy to router\n" + ex.toString();
- logger.trace(traceLevels.retryCat, s);
- }
- return cnt; // We must always retry, so we don't look at the retry count.
- }
- else
- {
- //
- // For all other cases, we don't retry ObjectNotExistException.
- //
- throw ex;
- }
- }
- else if(ex instanceof Ice.RequestFailedException)
- {
- //
- // For all other cases, we don't retry ObjectNotExistException
- //
- throw ex;
- }
-
- //
- // There is no point in retrying an operation that resulted in a
- // MarshalException. This must have been raised locally (because
- // if it happened in a server it would result in an
- // UnknownLocalException instead), which means there was a problem
- // in this process that will not change if we try again.
- //
- // The most likely cause for a MarshalException is exceeding the
- // maximum message size, which is represented by the the subclass
- // MemoryLimitException. For example, a client can attempt to send
- // a message that exceeds the maximum memory size, or accumulate
- // enough batch requests without flushing that the maximum size is
- // reached.
- //
- // This latter case is especially problematic, because if we were
- // to retry a batch request after a MarshalException, we would in
- // fact silently discard the accumulated requests and allow new
- // batch requests to accumulate. If the subsequent batched
- // requests do not exceed the maximum message size, it appears to
- // the client that all of the batched requests were accepted, when
- // in reality only the last few are actually sent.
- //
- if(ex instanceof Ice.MarshalException)
- {
- throw ex;
- }
-
- ++cnt;
- IceUtil.Debug.Assert(cnt > 0);
-
- if(cnt > _retryIntervals.length)
- {
- if(traceLevels.retry >= 1)
- {
- String s = "cannot retry operation call because retry limit has been exceeded\n" + ex.toString();
- logger.trace(traceLevels.retryCat, s);
- }
- throw ex;
- }
-
- int interval = _retryIntervals[cnt - 1];
-
- if(traceLevels.retry >= 1)
- {
- String s = "retrying operation call";
- if(interval > 0)
- {
- s += " in " + interval + "ms";
- }
- s += " because of exception\n" + ex;
- logger.trace(traceLevels.retryCat, s);
- }
-
- if(interval > 0)
- {
- //
- // Sleep before retrying.
- //
- try
- {
- Thread.currentThread().sleep(interval);
- }
- catch(InterruptedException ex1)
- {
- }
- }
-
- return cnt;
- }
-
- //
- // Only for use by Instance.
- //
- ProxyFactory(Instance instance)
- {
- _instance = instance;
-
- String str = _instance.initializationData().properties.getPropertyWithDefault("Ice.RetryIntervals", "0");
-
- String[] arr = IceUtil.StringUtil.split(str.trim(), " \t\n\r");
-
- if(arr.length > 0)
- {
- _retryIntervals = new int[arr.length];
-
- for(int i = 0; i < arr.length; i++)
- {
- int v;
-
- try
- {
- v = Integer.parseInt(arr[i]);
- }
- catch(NumberFormatException ex)
- {
- v = 0;
- }
-
- //
- // If -1 is the first value, no retry and wait intervals.
- //
- if(i == 0 && v == -1)
- {
- _retryIntervals = new int[0];
- break;
- }
-
- _retryIntervals[i] = v > 0 ? v : 0;
- }
- }
- else
- {
- _retryIntervals = new int[1];
- _retryIntervals[0] = 0;
- }
- }
-
- private Instance _instance;
- private int[] _retryIntervals;
-}