| Index: third_party/grpc/src/python/grpcio/grpc/framework/base/_cancellation.py
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/websocket/workers/resources/echo_wsh.py b/third_party/grpc/src/python/grpcio/grpc/framework/base/_cancellation.py
|
| similarity index 52%
|
| copy from third_party/WebKit/LayoutTests/http/tests/websocket/workers/resources/echo_wsh.py
|
| copy to third_party/grpc/src/python/grpcio/grpc/framework/base/_cancellation.py
|
| index 429f58186e3fce43dc21e81e0f9d7e20c7e0bf70..ffbc90668fb843d92063b85d12949e9c8779dec2 100644
|
| --- a/third_party/WebKit/LayoutTests/http/tests/websocket/workers/resources/echo_wsh.py
|
| +++ b/third_party/grpc/src/python/grpcio/grpc/framework/base/_cancellation.py
|
| @@ -1,4 +1,4 @@
|
| -# Copyright 2010, Google Inc.
|
| +# Copyright 2015, Google Inc.
|
| # All rights reserved.
|
| #
|
| # Redistribution and use in source and binary forms, with or without
|
| @@ -27,20 +27,38 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +"""State and behavior for operation cancellation."""
|
|
|
| -from mod_pywebsocket import msgutil
|
| +from grpc.framework.base import _interfaces
|
| +from grpc.framework.base import interfaces
|
|
|
|
|
| -_GOODBYE_MESSAGE = 'Goodbye'
|
| +class CancellationManager(_interfaces.CancellationManager):
|
| + """An implementation of _interfaces.CancellationManager."""
|
|
|
| + def __init__(
|
| + self, lock, termination_manager, transmission_manager, ingestion_manager,
|
| + expiration_manager):
|
| + """Constructor.
|
|
|
| -def web_socket_do_extra_handshake(request):
|
| - pass # Always accept.
|
| + Args:
|
| + lock: The operation-wide lock.
|
| + termination_manager: The _interfaces.TerminationManager for the operation.
|
| + transmission_manager: The _interfaces.TransmissionManager for the
|
| + operation.
|
| + ingestion_manager: The _interfaces.IngestionManager for the operation.
|
| + expiration_manager: The _interfaces.ExpirationManager for the operation.
|
| + """
|
| + self._lock = lock
|
| + self._termination_manager = termination_manager
|
| + self._transmission_manager = transmission_manager
|
| + self._ingestion_manager = ingestion_manager
|
| + self._expiration_manager = expiration_manager
|
|
|
| -
|
| -def web_socket_transfer_data(request):
|
| - while True:
|
| - line = msgutil.receive_message(request)
|
| - msgutil.send_message(request, line)
|
| - if line == _GOODBYE_MESSAGE:
|
| - return
|
| + def cancel(self):
|
| + """See _interfaces.CancellationManager.cancel for specification."""
|
| + with self._lock:
|
| + self._termination_manager.abort(interfaces.Outcome.CANCELLED)
|
| + self._transmission_manager.abort(interfaces.Outcome.CANCELLED)
|
| + self._ingestion_manager.abort()
|
| + self._expiration_manager.abort()
|
|
|