Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Unified Diff: plugins/org.chromium.sdk.wipbackend.wk118685/src/org/chromium/sdk/internal/wip/WipRelayRunner.java

Issue 11829027: drop old backends (Closed) Base URL: https://chromedevtools.googlecode.com/svn/trunk
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: plugins/org.chromium.sdk.wipbackend.wk118685/src/org/chromium/sdk/internal/wip/WipRelayRunner.java
diff --git a/plugins/org.chromium.sdk.wipbackend.wk118685/src/org/chromium/sdk/internal/wip/WipRelayRunner.java b/plugins/org.chromium.sdk.wipbackend.wk118685/src/org/chromium/sdk/internal/wip/WipRelayRunner.java
deleted file mode 100644
index 351bd5aa8e00332dfc77de45ccc76ede74c4d76d..0000000000000000000000000000000000000000
--- a/plugins/org.chromium.sdk.wipbackend.wk118685/src/org/chromium/sdk/internal/wip/WipRelayRunner.java
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.sdk.internal.wip;
-
-import org.chromium.sdk.RelayOk;
-import org.chromium.sdk.SyncCallback;
-import org.chromium.sdk.internal.wip.protocol.input.WipCommandResponse;
-import org.chromium.sdk.internal.wip.protocol.output.WipParams;
-import org.chromium.sdk.internal.wip.protocol.output.WipParamsWithResponse;
-import org.chromium.sdk.util.GenericCallback;
-import org.chromium.sdk.util.RelaySyncCallback;
-
-/**
- * A utility class that helps running a chain of asynchronous commands in a safe manner.
- * 'Safe' here means that the client will get {@link SyncCallback} called in the end
- * in any scenario.
- * <p>
- * The class helps reformat control sequence: instead of being callback-driven, the program
- * becomes step-driven. Each step defines a request being sent, the way a response is processed
- * and a link to the next step.
- * <p>
- * The class is bound to {@link WipCommandProcessor}.
- */
-public class WipRelayRunner {
-
- /**
- * The main abstraction of {@link WipRelayRunner}. A particular relay consists is a chain
- * of steps. Each step returns a next step except for the 'final' step
- * (see {@link WipRelayRunner#createFinalStep(Object)}).
- * <p>This type is essentially an algebraic data type.
- *
- * @param <RES> a type that the entire relay should return
- */
- interface Step<RES> {
- <R> R accept(Visitor<R, RES> visitor);
-
- interface Visitor<R, RES> {
- R visitFinal(RES finalResult);
- R visitSend(SendStepSimple<RES> sendStep);
- <DATA> R visitSend(SendStepWithResponse<DATA, RES> sendStep);
- }
- }
-
- /**
- * Creates a final step that simply holds a result.
- */
- public static <RES> Step<RES> createFinalStep(final RES finalResult) {
- return new Step<RES>() {
- @Override
- public <R> R accept(Visitor<R, RES> visitor) {
- return visitor.visitFinal(finalResult);
- }
- };
- }
-
- /**
- * A base class for 'send' step that sends a request and processes its response.
- * @param <RES> a type that the entire relay should return
- */
- public static abstract class SendStepSimple<RES> implements Step<RES> {
- public abstract WipParams getParams();
-
- /**
- * Handles normal response and returns a next step (or throws {@link ProcessException}).
- * The response itself contains no data, so there's no such parameter.
- */
- public abstract Step<RES> processResponse() throws ProcessException;
-
- /**
- * Optionally wraps the cause with a more high-level exception. Must return cause by default.
- * @return not null
- */
- public abstract Exception processFailure(Exception cause);
-
- @Override public final <R> R accept(Visitor<R, RES> visitor) {
- return visitor.visitSend(this);
- }
- }
-
- public static abstract class SendStepWithResponse<DATA, RES> implements Step<RES> {
- public abstract WipParamsWithResponse<DATA> getParams();
-
- /**
- * Handles normal response and returns a next step (or throws {@link ProcessException}).
- */
- public abstract Step<RES> processResponse(DATA response) throws ProcessException;
-
- /**
- * Optionally wraps the cause with a more high-level exception. Must return cause by default.
- * @return not null
- */
- public abstract Exception processFailure(Exception cause);
-
- @Override public final <R> R accept(Visitor<R, RES> visitor) {
- return visitor.visitSend(this);
- }
- }
-
- /**
- * An exception that step can throw if response cannot be processed normally. It aborts the relay
- * and gets passed to user callback.
- */
- public static class ProcessException extends Exception {
- public ProcessException() {
- }
- public ProcessException(String message, Throwable cause) {
- super(message, cause);
- }
- public ProcessException(String message) {
- super(message);
- }
- public ProcessException(Throwable cause) {
- super(cause);
- }
- }
-
- /**
- * Runs a relay defined by a chain of steps.
- * @param <RES> return type of the entire relay
- * @param firstStep a first step that defines the entire relay
- * @param callback
- * @param relaySyncCallback a {@link SyncCallback} wrapped as {@link RelaySyncCallback}
- */
- public static <RES> RelayOk run(final WipCommandProcessor commandProcessor, Step<RES> firstStep,
- final GenericCallback<RES> callback, final RelaySyncCallback relaySyncCallback) {
-
- return firstStep.accept(new Step.Visitor<RelayOk, RES>() {
- @Override
- public RelayOk visitFinal(RES finalResult) {
- if (callback != null) {
- callback.success(finalResult);
- }
- return relaySyncCallback.finish();
- }
-
- @Override
- public RelayOk visitSend(final SendStepSimple<RES> sendStep) {
- final RelaySyncCallback.Guard guard = relaySyncCallback.newGuard();
-
- WipCommandCallback sendCallback = new WipCommandCallback() {
- @Override
- public void messageReceived(WipCommandResponse response) {
- Step<RES> processResult;
- try {
- processResult = sendStep.processResponse();
- } catch (ProcessException e) {
- if (callback != null) {
- callback.failure(e);
- }
- // Todo: consider throwing e.
- return;
- }
- RelayOk relayOk = run(commandProcessor, processResult, callback, guard.getRelay());
- guard.discharge(relayOk);
- }
- @Override
- public void failure(String message) {
- if (callback != null) {
- callback.failure(sendStep.processFailure(new Exception(message)));
- }
- }
- };
-
- return commandProcessor.send(sendStep.getParams(), sendCallback, guard.asSyncCallback());
- }
-
- @Override
- public <RESPONSE> RelayOk visitSend(final SendStepWithResponse<RESPONSE, RES> sendStep) {
- final RelaySyncCallback.Guard guard = relaySyncCallback.newGuard();
-
- GenericCallback<RESPONSE> sendCallback = new GenericCallback<RESPONSE>() {
- @Override
- public void success(RESPONSE response) {
- Step<RES> processResult;
- try {
- processResult = sendStep.processResponse(response);
- } catch (ProcessException e) {
- if (callback != null) {
- callback.failure(e);
- }
- // Todo: consider throwing e.
- return;
- }
- RelayOk relayOk = run(commandProcessor, processResult, callback, guard.getRelay());
- guard.discharge(relayOk);
- }
-
- @Override
- public void failure(Exception exception) {
- if (callback != null) {
- callback.failure(sendStep.processFailure(exception));
- }
- }
- };
-
- return commandProcessor.send(sendStep.getParams(), sendCallback, guard.asSyncCallback());
- }
- });
- }
-}

Powered by Google App Engine
This is Rietveld 408576698