Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java')
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java86
1 files changed, 43 insertions, 43 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java
index 7d3b1df11a..5d09e6fded 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java
@@ -16,7 +16,6 @@ import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
-import org.eclipse.net4j.util.om.monitor.Monitor;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.internal.net4j.bundle.OM;
@@ -80,95 +79,100 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat
@Override
public Future<RESULT> sendAsync()
{
- initMainMonitor(null);
return super.sendAsync();
}
public Future<RESULT> sendAsync(OMMonitor monitor)
{
- initMainMonitor(monitor);
+ mainMonitor = monitor;
return super.sendAsync();
}
@Override
public RESULT send() throws Exception, RemoteException
{
- initMainMonitor(null);
return super.send();
}
@Override
public RESULT send(long timeout) throws Exception, RemoteException
{
- initMainMonitor(null);
return super.send(timeout);
}
public RESULT send(OMMonitor monitor) throws Exception, RemoteException
{
- initMainMonitor(monitor);
+ mainMonitor = monitor;
return super.send();
}
public RESULT send(long timeout, OMMonitor monitor) throws Exception, RemoteException
{
- initMainMonitor(monitor);
+ mainMonitor = monitor;
return super.send(timeout);
}
@Override
protected final void requesting(ExtendedDataOutputStream out) throws Exception
{
- double remoteWork = OMMonitor.HUNDRED - getRequestingWorkPercent() - getConfirmingWorkPercent();
- if (remoteWork < OMMonitor.ZERO)
+ OMMonitor fork = null;
+ boolean useMonitor = mainMonitor != null;
+ out.writeBoolean(useMonitor);
+ if (useMonitor)
{
- throw new ImplementationError("Remote work must not be negative: " + remoteWork); //$NON-NLS-1$
- }
+ double remoteWork = OMMonitor.HUNDRED - getRequestingWorkPercent() - getConfirmingWorkPercent();
+ if (remoteWork < OMMonitor.ZERO)
+ {
+ throw new ImplementationError("Remote work must not be negative: " + remoteWork); //$NON-NLS-1$
+ }
- mainMonitor.begin(OMMonitor.HUNDRED);
- OMMonitor subMonitor = mainMonitor.fork(remoteWork);
- synchronized (monitorLock)
- {
- remoteMonitor = subMonitor;
- }
+ mainMonitor.begin(OMMonitor.HUNDRED);
+ OMMonitor subMonitor = mainMonitor.fork(remoteWork);
+ synchronized (monitorLock)
+ {
+ remoteMonitor = subMonitor;
+ }
- ExecutorService executorService = getCancelationExecutorService();
- if (executorService != null)
- {
- executorService.execute(new Runnable()
+ ExecutorService executorService = getCancelationExecutorService();
+ if (executorService != null)
{
- public void run()
+ executorService.execute(new Runnable()
{
- while (mainMonitor != null)
+ public void run()
{
- ConcurrencyUtil.sleep(getCancelationPollInterval());
- if (mainMonitor != null && mainMonitor.isCanceled())
+ while (mainMonitor != null)
{
- try
+ ConcurrencyUtil.sleep(getCancelationPollInterval());
+ if (mainMonitor != null && mainMonitor.isCanceled())
{
- new MonitorCanceledRequest(getProtocol(), getCorrelationID()).sendAsync();
+ try
+ {
+ new MonitorCanceledRequest(getProtocol(), getCorrelationID()).sendAsync();
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+
+ return;
}
- catch (Exception ex)
- {
- OM.LOG.error(ex);
- }
-
- return;
}
}
- }
- });
- }
+ });
+ }
- out.writeInt(getMonitorProgressSeconds());
+ out.writeInt(getMonitorProgressSeconds());
+ fork = mainMonitor.fork(getRequestingWorkPercent());
+ }
out.writeInt(getMonitorTimeoutSeconds());
- requesting(out, mainMonitor.fork(getRequestingWorkPercent()));
+ requesting(out, fork);
}
@Override
protected final RESULT confirming(ExtendedDataInputStream in) throws Exception
{
- return confirming(in, mainMonitor.fork(getConfirmingWorkPercent()));
+ OMMonitor monitor = mainMonitor != null ? mainMonitor.fork(getConfirmingWorkPercent()) : null;
+ return confirming(in, monitor);
}
protected abstract void requesting(ExtendedDataOutputStream out, OMMonitor monitor) throws Exception;
@@ -297,8 +301,4 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat
}
}
- private void initMainMonitor(OMMonitor monitor)
- {
- mainMonitor = monitor == null ? new Monitor() : monitor;
- }
}

Back to the top