aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Masood Malekghassemi <soltanmm@users.noreply.github.com>2015-03-17 18:07:22 -0700
committerGravatar Masood Malekghassemi <soltanmm@users.noreply.github.com>2015-03-17 18:07:22 -0700
commitacfcd03f06f45bc008c0ac80d2ab54948042b63e (patch)
tree7408f941141d592776b3523f9f9ffcb0361cb24b /src
parentd2773a9bd8ef3f1951f0b338b90837bb8a656860 (diff)
parentde5490c15c90c5276f8c4e40fa55c3e1537e53df (diff)
Merge pull request #1073 from nathanielmanistaatgoogle/python-refactor
Python refactor
Diffstat (limited to 'src')
-rw-r--r--src/python/src/grpc/_adapter/_face_test_case.py6
-rw-r--r--src/python/src/grpc/_adapter/_links_test.py60
-rw-r--r--src/python/src/grpc/_adapter/_lonely_rear_link_test.py15
-rw-r--r--src/python/src/grpc/_adapter/_test_links.py2
-rw-r--r--src/python/src/grpc/_adapter/fore.py62
-rw-r--r--src/python/src/grpc/_adapter/rear.py43
-rw-r--r--src/python/src/grpc/early_adopter/implementations.py6
-rw-r--r--src/python/src/grpc/framework/base/_cancellation.py (renamed from src/python/src/grpc/framework/base/packets/_cancellation.py)9
-rw-r--r--src/python/src/grpc/framework/base/_constants.py (renamed from src/python/src/grpc/framework/base/packets/_constants.py)0
-rw-r--r--src/python/src/grpc/framework/base/_context.py (renamed from src/python/src/grpc/framework/base/packets/_context.py)16
-rw-r--r--src/python/src/grpc/framework/base/_emission.py (renamed from src/python/src/grpc/framework/base/packets/_emission.py)15
-rw-r--r--src/python/src/grpc/framework/base/_ends.py (renamed from src/python/src/grpc/framework/base/packets/_ends.py)80
-rw-r--r--src/python/src/grpc/framework/base/_expiration.py (renamed from src/python/src/grpc/framework/base/packets/_expiration.py)8
-rw-r--r--src/python/src/grpc/framework/base/_ingestion.py (renamed from src/python/src/grpc/framework/base/packets/_ingestion.py)5
-rw-r--r--src/python/src/grpc/framework/base/_interfaces.py (renamed from src/python/src/grpc/framework/base/packets/_interfaces.py)19
-rw-r--r--src/python/src/grpc/framework/base/_reception.py (renamed from src/python/src/grpc/framework/base/packets/_reception.py)243
-rw-r--r--src/python/src/grpc/framework/base/_termination.py (renamed from src/python/src/grpc/framework/base/packets/_termination.py)4
-rw-r--r--src/python/src/grpc/framework/base/_transmission.py (renamed from src/python/src/grpc/framework/base/packets/_transmission.py)195
-rw-r--r--src/python/src/grpc/framework/base/implementations.py (renamed from src/python/src/grpc/framework/base/packets/implementations.py)46
-rw-r--r--src/python/src/grpc/framework/base/implementations_test.py (renamed from src/python/src/grpc/framework/base/packets/implementations_test.py)8
-rw-r--r--src/python/src/grpc/framework/base/in_memory.py (renamed from src/python/src/grpc/framework/base/packets/in_memory.py)6
-rw-r--r--src/python/src/grpc/framework/base/interfaces.py131
-rw-r--r--src/python/src/grpc/framework/base/interfaces_test_case.py24
-rw-r--r--src/python/src/grpc/framework/base/null.py (renamed from src/python/src/grpc/framework/base/packets/null.py)2
-rw-r--r--src/python/src/grpc/framework/base/packets/__init__.py30
-rw-r--r--src/python/src/grpc/framework/base/packets/interfaces.py84
-rw-r--r--src/python/src/grpc/framework/base/packets/packets.py118
-rw-r--r--src/python/src/grpc/framework/face/demonstration.py6
-rw-r--r--src/python/src/grpc/framework/face/testing/base_util.py10
-rw-r--r--src/python/src/grpc/framework/foundation/_logging_pool_test.py2
-rw-r--r--src/python/src/setup.py1
31 files changed, 573 insertions, 683 deletions
diff --git a/src/python/src/grpc/_adapter/_face_test_case.py b/src/python/src/grpc/_adapter/_face_test_case.py
index 2542eb6da4..923e889844 100644
--- a/src/python/src/grpc/_adapter/_face_test_case.py
+++ b/src/python/src/grpc/_adapter/_face_test_case.py
@@ -34,7 +34,7 @@ import unittest
from grpc._adapter import fore
from grpc._adapter import rear
from grpc.framework.base import util
-from grpc.framework.base.packets import implementations as tickets_implementations
+from grpc.framework.base import implementations as base_implementations
from grpc.framework.face import implementations as face_implementations
from grpc.framework.face.testing import coverage
from grpc.framework.face.testing import serial
@@ -69,8 +69,8 @@ class FaceTestCase(test_case.FaceTestCase, coverage.BlockingCoverage):
serialization.request_serializers,
serialization.response_deserializers, False, None, None, None)
rear_link.start()
- front = tickets_implementations.front(pool, pool, pool)
- back = tickets_implementations.back(
+ front = base_implementations.front_link(pool, pool, pool)
+ back = base_implementations.back_link(
servicer, pool, pool, pool, _TIMEOUT, _MAXIMUM_TIMEOUT)
fore_link.join_rear_link(back)
back.join_fore_link(fore_link)
diff --git a/src/python/src/grpc/_adapter/_links_test.py b/src/python/src/grpc/_adapter/_links_test.py
index 49fd1f7a1c..cfdcc2c4bc 100644
--- a/src/python/src/grpc/_adapter/_links_test.py
+++ b/src/python/src/grpc/_adapter/_links_test.py
@@ -37,7 +37,6 @@ from grpc._adapter import _test_links
from grpc._adapter import fore
from grpc._adapter import rear
from grpc.framework.base import interfaces
-from grpc.framework.base.packets import packets as tickets
from grpc.framework.foundation import logging_pool
_IDENTITY = lambda x: x
@@ -60,11 +59,11 @@ class RoundTripTest(unittest.TestCase):
test_fore_link = _test_links.ForeLink(None, None)
def rear_action(front_to_back_ticket, fore_link):
if front_to_back_ticket.kind in (
- tickets.FrontToBackPacket.Kind.COMPLETION,
- tickets.FrontToBackPacket.Kind.ENTIRE):
- back_to_front_ticket = tickets.BackToFrontPacket(
+ interfaces.FrontToBackTicket.Kind.COMPLETION,
+ interfaces.FrontToBackTicket.Kind.ENTIRE):
+ back_to_front_ticket = interfaces.BackToFrontTicket(
front_to_back_ticket.operation_id, 0,
- tickets.BackToFrontPacket.Kind.COMPLETION, None)
+ interfaces.BackToFrontTicket.Kind.COMPLETION, None)
fore_link.accept_back_to_front_ticket(back_to_front_ticket)
test_rear_link = _test_links.RearLink(rear_action, None)
@@ -82,8 +81,8 @@ class RoundTripTest(unittest.TestCase):
test_fore_link.join_rear_link(rear_link)
rear_link.start()
- front_to_back_ticket = tickets.FrontToBackPacket(
- test_operation_id, 0, tickets.FrontToBackPacket.Kind.ENTIRE,
+ front_to_back_ticket = interfaces.FrontToBackTicket(
+ test_operation_id, 0, interfaces.FrontToBackTicket.Kind.ENTIRE,
test_method, interfaces.ServicedSubscription.Kind.FULL, None, None,
_TIMEOUT)
rear_link.accept_front_to_back_ticket(front_to_back_ticket)
@@ -91,7 +90,7 @@ class RoundTripTest(unittest.TestCase):
with test_fore_link.condition:
while (not test_fore_link.tickets or
test_fore_link.tickets[-1].kind is
- tickets.BackToFrontPacket.Kind.CONTINUATION):
+ interfaces.BackToFrontTicket.Kind.CONTINUATION):
test_fore_link.condition.wait()
rear_link.stop()
@@ -100,7 +99,7 @@ class RoundTripTest(unittest.TestCase):
with test_fore_link.condition:
self.assertIs(
test_fore_link.tickets[-1].kind,
- tickets.BackToFrontPacket.Kind.COMPLETION)
+ interfaces.BackToFrontTicket.Kind.COMPLETION)
def testEntireRoundTrip(self):
test_operation_id = object()
@@ -115,14 +114,14 @@ class RoundTripTest(unittest.TestCase):
else:
payload = test_back_to_front_datum
terminal = front_to_back_ticket.kind in (
- tickets.FrontToBackPacket.Kind.COMPLETION,
- tickets.FrontToBackPacket.Kind.ENTIRE)
+ interfaces.FrontToBackTicket.Kind.COMPLETION,
+ interfaces.FrontToBackTicket.Kind.ENTIRE)
if payload is not None or terminal:
if terminal:
- kind = tickets.BackToFrontPacket.Kind.COMPLETION
+ kind = interfaces.BackToFrontTicket.Kind.COMPLETION
else:
- kind = tickets.BackToFrontPacket.Kind.CONTINUATION
- back_to_front_ticket = tickets.BackToFrontPacket(
+ kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
+ back_to_front_ticket = interfaces.BackToFrontTicket(
front_to_back_ticket.operation_id, rear_sequence_number[0], kind,
payload)
rear_sequence_number[0] += 1
@@ -144,8 +143,8 @@ class RoundTripTest(unittest.TestCase):
test_fore_link.join_rear_link(rear_link)
rear_link.start()
- front_to_back_ticket = tickets.FrontToBackPacket(
- test_operation_id, 0, tickets.FrontToBackPacket.Kind.ENTIRE,
+ front_to_back_ticket = interfaces.FrontToBackTicket(
+ test_operation_id, 0, interfaces.FrontToBackTicket.Kind.ENTIRE,
test_method, interfaces.ServicedSubscription.Kind.FULL, None,
test_front_to_back_datum, _TIMEOUT)
rear_link.accept_front_to_back_ticket(front_to_back_ticket)
@@ -153,7 +152,7 @@ class RoundTripTest(unittest.TestCase):
with test_fore_link.condition:
while (not test_fore_link.tickets or
test_fore_link.tickets[-1].kind is not
- tickets.BackToFrontPacket.Kind.COMPLETION):
+ interfaces.BackToFrontTicket.Kind.COMPLETION):
test_fore_link.condition.wait()
rear_link.stop()
@@ -183,14 +182,14 @@ class RoundTripTest(unittest.TestCase):
else:
response = None
terminal = front_to_back_ticket.kind in (
- tickets.FrontToBackPacket.Kind.COMPLETION,
- tickets.FrontToBackPacket.Kind.ENTIRE)
+ interfaces.FrontToBackTicket.Kind.COMPLETION,
+ interfaces.FrontToBackTicket.Kind.ENTIRE)
if response is not None or terminal:
if terminal:
- kind = tickets.BackToFrontPacket.Kind.COMPLETION
+ kind = interfaces.BackToFrontTicket.Kind.COMPLETION
else:
- kind = tickets.BackToFrontPacket.Kind.CONTINUATION
- back_to_front_ticket = tickets.BackToFrontPacket(
+ kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
+ back_to_front_ticket = interfaces.BackToFrontTicket(
front_to_back_ticket.operation_id, rear_sequence_number[0], kind,
response)
rear_sequence_number[0] += 1
@@ -213,22 +212,23 @@ class RoundTripTest(unittest.TestCase):
test_fore_link.join_rear_link(rear_link)
rear_link.start()
- commencement_ticket = tickets.FrontToBackPacket(
- test_operation_id, 0, tickets.FrontToBackPacket.Kind.COMMENCEMENT,
- test_method, interfaces.ServicedSubscription.Kind.FULL, None, None,
+ commencement_ticket = interfaces.FrontToBackTicket(
+ test_operation_id, 0,
+ interfaces.FrontToBackTicket.Kind.COMMENCEMENT, test_method,
+ interfaces.ServicedSubscription.Kind.FULL, None, None,
_TIMEOUT)
fore_sequence_number = 1
rear_link.accept_front_to_back_ticket(commencement_ticket)
for request in scenario.requests():
- continuation_ticket = tickets.FrontToBackPacket(
+ continuation_ticket = interfaces.FrontToBackTicket(
test_operation_id, fore_sequence_number,
- tickets.FrontToBackPacket.Kind.CONTINUATION, None, None, None,
+ interfaces.FrontToBackTicket.Kind.CONTINUATION, None, None, None,
request, None)
fore_sequence_number += 1
rear_link.accept_front_to_back_ticket(continuation_ticket)
- completion_ticket = tickets.FrontToBackPacket(
+ completion_ticket = interfaces.FrontToBackTicket(
test_operation_id, fore_sequence_number,
- tickets.FrontToBackPacket.Kind.COMPLETION, None, None, None, None,
+ interfaces.FrontToBackTicket.Kind.COMPLETION, None, None, None, None,
None)
fore_sequence_number += 1
rear_link.accept_front_to_back_ticket(completion_ticket)
@@ -236,7 +236,7 @@ class RoundTripTest(unittest.TestCase):
with test_fore_link.condition:
while (not test_fore_link.tickets or
test_fore_link.tickets[-1].kind is not
- tickets.BackToFrontPacket.Kind.COMPLETION):
+ interfaces.BackToFrontTicket.Kind.COMPLETION):
test_fore_link.condition.wait()
rear_link.stop()
diff --git a/src/python/src/grpc/_adapter/_lonely_rear_link_test.py b/src/python/src/grpc/_adapter/_lonely_rear_link_test.py
index ead0b9eb38..25799d679c 100644
--- a/src/python/src/grpc/_adapter/_lonely_rear_link_test.py
+++ b/src/python/src/grpc/_adapter/_lonely_rear_link_test.py
@@ -34,7 +34,6 @@ import unittest
from grpc._adapter import _test_links
from grpc._adapter import rear
from grpc.framework.base import interfaces
-from grpc.framework.base.packets import packets
from grpc.framework.foundation import logging_pool
_IDENTITY = lambda x: x
@@ -68,7 +67,7 @@ class LonelyRearLinkTest(unittest.TestCase):
rear_link.join_fore_link(fore_link)
rear_link.start()
- front_to_back_ticket = packets.FrontToBackPacket(
+ front_to_back_ticket = interfaces.FrontToBackTicket(
test_operation_id, 0, front_to_back_ticket_kind, test_method,
interfaces.ServicedSubscription.Kind.FULL, None, None, _TIMEOUT)
rear_link.accept_front_to_back_ticket(front_to_back_ticket)
@@ -77,7 +76,7 @@ class LonelyRearLinkTest(unittest.TestCase):
while True:
if (fore_link.tickets and
fore_link.tickets[-1].kind is not
- packets.BackToFrontPacket.Kind.CONTINUATION):
+ interfaces.BackToFrontTicket.Kind.CONTINUATION):
break
fore_link.condition.wait()
@@ -86,15 +85,15 @@ class LonelyRearLinkTest(unittest.TestCase):
with fore_link.condition:
self.assertIsNot(
fore_link.tickets[-1].kind,
- packets.BackToFrontPacket.Kind.COMPLETION)
+ interfaces.BackToFrontTicket.Kind.COMPLETION)
- def testLonelyClientCommencementPacket(self):
+ def testLonelyClientCommencementTicket(self):
self._perform_lonely_client_test_with_ticket_kind(
- packets.FrontToBackPacket.Kind.COMMENCEMENT)
+ interfaces.FrontToBackTicket.Kind.COMMENCEMENT)
- def testLonelyClientEntirePacket(self):
+ def testLonelyClientEntireTicket(self):
self._perform_lonely_client_test_with_ticket_kind(
- packets.FrontToBackPacket.Kind.ENTIRE)
+ interfaces.FrontToBackTicket.Kind.ENTIRE)
if __name__ == '__main__':
diff --git a/src/python/src/grpc/_adapter/_test_links.py b/src/python/src/grpc/_adapter/_test_links.py
index ac0d6e20b6..86c7e61b17 100644
--- a/src/python/src/grpc/_adapter/_test_links.py
+++ b/src/python/src/grpc/_adapter/_test_links.py
@@ -31,7 +31,7 @@
import threading
-from grpc.framework.base.packets import interfaces
+from grpc.framework.base import interfaces
class ForeLink(interfaces.ForeLink):
diff --git a/src/python/src/grpc/_adapter/fore.py b/src/python/src/grpc/_adapter/fore.py
index 16e5a2018c..05016cdaf3 100644
--- a/src/python/src/grpc/_adapter/fore.py
+++ b/src/python/src/grpc/_adapter/fore.py
@@ -36,10 +36,8 @@ import time
from grpc._adapter import _common
from grpc._adapter import _low
-from grpc.framework.base import interfaces
-from grpc.framework.base.packets import interfaces as ticket_interfaces
-from grpc.framework.base.packets import null
-from grpc.framework.base.packets import packets as tickets
+from grpc.framework.base import interfaces as base_interfaces
+from grpc.framework.base import null
from grpc.framework.foundation import activated
from grpc.framework.foundation import logging_pool
@@ -69,7 +67,7 @@ def _status(call, rpc_state):
rpc_state.write.low = _LowWrite.CLOSED
-class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
+class ForeLink(base_interfaces.ForeLink, activated.Activated):
"""A service-side bridge between RPC Framework and the C-ish _low code."""
def __init__(
@@ -127,9 +125,9 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
self._request_deserializers[method],
self._response_serializers[method])
- ticket = tickets.FrontToBackPacket(
- call, 0, tickets.FrontToBackPacket.Kind.COMMENCEMENT, method,
- interfaces.ServicedSubscription.Kind.FULL, None, None,
+ ticket = base_interfaces.FrontToBackTicket(
+ call, 0, base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT, method,
+ base_interfaces.ServicedSubscription.Kind.FULL, None, None,
service_acceptance.deadline - time.time())
self._rear_link.accept_front_to_back_ticket(ticket)
@@ -145,14 +143,16 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
sequence_number = rpc_state.sequence_number
rpc_state.sequence_number += 1
if event.bytes is None:
- ticket = tickets.FrontToBackPacket(
- call, sequence_number, tickets.FrontToBackPacket.Kind.COMPLETION,
- None, None, None, None, None)
+ ticket = base_interfaces.FrontToBackTicket(
+ call, sequence_number,
+ base_interfaces.FrontToBackTicket.Kind.COMPLETION, None, None, None,
+ None, None)
else:
call.read(call)
- ticket = tickets.FrontToBackPacket(
- call, sequence_number, tickets.FrontToBackPacket.Kind.CONTINUATION,
- None, None, None, rpc_state.deserializer(event.bytes), None)
+ ticket = base_interfaces.FrontToBackTicket(
+ call, sequence_number,
+ base_interfaces.FrontToBackTicket.Kind.CONTINUATION, None, None,
+ None, rpc_state.deserializer(event.bytes), None)
self._rear_link.accept_front_to_back_ticket(ticket)
@@ -180,10 +180,10 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
sequence_number = rpc_state.sequence_number
rpc_state.sequence_number += 1
- ticket = tickets.FrontToBackPacket(
+ ticket = base_interfaces.FrontToBackTicket(
call, sequence_number,
- tickets.FrontToBackPacket.Kind.TRANSMISSION_FAILURE, None, None,
- None, None, None)
+ base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
+ None, None, None, None)
self._rear_link.accept_front_to_back_ticket(ticket)
def _on_finish_event(self, event):
@@ -200,19 +200,21 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
sequence_number = rpc_state.sequence_number
rpc_state.sequence_number += 1
if code is _low.Code.CANCELLED:
- ticket = tickets.FrontToBackPacket(
- call, sequence_number, tickets.FrontToBackPacket.Kind.CANCELLATION,
- None, None, None, None, None)
+ ticket = base_interfaces.FrontToBackTicket(
+ call, sequence_number,
+ base_interfaces.FrontToBackTicket.Kind.CANCELLATION, None, None,
+ None, None, None)
elif code is _low.Code.EXPIRED:
- ticket = tickets.FrontToBackPacket(
- call, sequence_number, tickets.FrontToBackPacket.Kind.EXPIRATION,
- None, None, None, None, None)
+ ticket = base_interfaces.FrontToBackTicket(
+ call, sequence_number,
+ base_interfaces.FrontToBackTicket.Kind.EXPIRATION, None, None, None,
+ None, None)
else:
# TODO(nathaniel): Better mapping of codes to ticket-categories
- ticket = tickets.FrontToBackPacket(
+ ticket = base_interfaces.FrontToBackTicket(
call, sequence_number,
- tickets.FrontToBackPacket.Kind.TRANSMISSION_FAILURE, None, None,
- None, None, None)
+ base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
+ None, None, None, None)
self._rear_link.accept_front_to_back_ticket(ticket)
def _spin(self, completion_queue, server):
@@ -268,7 +270,7 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
self._rpc_states.pop(call, None)
def join_rear_link(self, rear_link):
- """See ticket_interfaces.ForeLink.join_rear_link for specification."""
+ """See base_interfaces.ForeLink.join_rear_link for specification."""
self._rear_link = null.NULL_REAR_LINK if rear_link is None else rear_link
def _start(self):
@@ -348,14 +350,14 @@ class ForeLink(ticket_interfaces.ForeLink, activated.Activated):
return self._port
def accept_back_to_front_ticket(self, ticket):
- """See ticket_interfaces.ForeLink.accept_back_to_front_ticket for spec."""
+ """See base_interfaces.ForeLink.accept_back_to_front_ticket for spec."""
with self._condition:
if self._server is None:
return
- if ticket.kind is tickets.BackToFrontPacket.Kind.CONTINUATION:
+ if ticket.kind is base_interfaces.BackToFrontTicket.Kind.CONTINUATION:
self._continue(ticket.operation_id, ticket.payload)
- elif ticket.kind is tickets.BackToFrontPacket.Kind.COMPLETION:
+ elif ticket.kind is base_interfaces.BackToFrontTicket.Kind.COMPLETION:
self._complete(ticket.operation_id, ticket.payload)
else:
self._cancel(ticket.operation_id)
diff --git a/src/python/src/grpc/_adapter/rear.py b/src/python/src/grpc/_adapter/rear.py
index eee008e4df..f19321c426 100644
--- a/src/python/src/grpc/_adapter/rear.py
+++ b/src/python/src/grpc/_adapter/rear.py
@@ -36,9 +36,8 @@ import time
from grpc._adapter import _common
from grpc._adapter import _low
-from grpc.framework.base.packets import interfaces as ticket_interfaces
-from grpc.framework.base.packets import null
-from grpc.framework.base.packets import packets as tickets
+from grpc.framework.base import interfaces as base_interfaces
+from grpc.framework.base import null
from grpc.framework.foundation import activated
from grpc.framework.foundation import logging_pool
@@ -88,7 +87,7 @@ def _write(operation_id, call, outstanding, write_state, serialized_payload):
raise ValueError('Write attempted after writes completed!')
-class RearLink(ticket_interfaces.RearLink, activated.Activated):
+class RearLink(base_interfaces.RearLink, activated.Activated):
"""An invocation-side bridge between RPC Framework and the C-ish _low code."""
def __init__(
@@ -152,9 +151,9 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
else:
logging.error('RPC write not accepted! Event: %s', (event,))
rpc_state.active = False
- ticket = tickets.BackToFrontPacket(
+ ticket = base_interfaces.BackToFrontTicket(
operation_id, rpc_state.common.sequence_number,
- tickets.BackToFrontPacket.Kind.TRANSMISSION_FAILURE, None)
+ base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
rpc_state.common.sequence_number += 1
self._fore_link.accept_back_to_front_ticket(ticket)
@@ -163,9 +162,9 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
rpc_state.call.read(operation_id)
rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)
- ticket = tickets.BackToFrontPacket(
+ ticket = base_interfaces.BackToFrontTicket(
operation_id, rpc_state.common.sequence_number,
- tickets.BackToFrontPacket.Kind.CONTINUATION,
+ base_interfaces.BackToFrontTicket.Kind.CONTINUATION,
rpc_state.common.deserializer(event.bytes))
rpc_state.common.sequence_number += 1
self._fore_link.accept_back_to_front_ticket(ticket)
@@ -174,9 +173,9 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
if not event.complete_accepted:
logging.error('RPC complete not accepted! Event: %s', (event,))
rpc_state.active = False
- ticket = tickets.BackToFrontPacket(
+ ticket = base_interfaces.BackToFrontTicket(
operation_id, rpc_state.common.sequence_number,
- tickets.BackToFrontPacket.Kind.TRANSMISSION_FAILURE, None)
+ base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
rpc_state.common.sequence_number += 1
self._fore_link.accept_back_to_front_ticket(ticket)
@@ -189,14 +188,14 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
"""Handle termination of an RPC."""
# TODO(nathaniel): Cover all statuses.
if event.status.code is _low.Code.OK:
- kind = tickets.BackToFrontPacket.Kind.COMPLETION
+ kind = base_interfaces.BackToFrontTicket.Kind.COMPLETION
elif event.status.code is _low.Code.CANCELLED:
- kind = tickets.BackToFrontPacket.Kind.CANCELLATION
+ kind = base_interfaces.BackToFrontTicket.Kind.CANCELLATION
elif event.status.code is _low.Code.EXPIRED:
- kind = tickets.BackToFrontPacket.Kind.EXPIRATION
+ kind = base_interfaces.BackToFrontTicket.Kind.EXPIRATION
else:
- kind = tickets.BackToFrontPacket.Kind.TRANSMISSION_FAILURE
- ticket = tickets.BackToFrontPacket(
+ kind = base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE
+ ticket = base_interfaces.BackToFrontTicket(
operation_id, rpc_state.common.sequence_number, kind, None)
rpc_state.common.sequence_number += 1
self._fore_link.accept_back_to_front_ticket(ticket)
@@ -317,7 +316,7 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
rpc_state.active = False
def join_fore_link(self, fore_link):
- """See ticket_interfaces.RearLink.join_fore_link for specification."""
+ """See base_interfaces.RearLink.join_fore_link for specification."""
with self._condition:
self._fore_link = null.NULL_FORE_LINK if fore_link is None else fore_link
@@ -366,22 +365,22 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
self._stop()
def accept_front_to_back_ticket(self, ticket):
- """See ticket_interfaces.RearLink.accept_front_to_back_ticket for spec."""
+ """See base_interfaces.RearLink.accept_front_to_back_ticket for spec."""
with self._condition:
if self._completion_queue is None:
return
- if ticket.kind is tickets.FrontToBackPacket.Kind.COMMENCEMENT:
+ if ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
self._commence(
ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
- elif ticket.kind is tickets.FrontToBackPacket.Kind.CONTINUATION:
+ elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CONTINUATION:
self._continue(ticket.operation_id, ticket.payload)
- elif ticket.kind is tickets.FrontToBackPacket.Kind.COMPLETION:
+ elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMPLETION:
self._complete(ticket.operation_id, ticket.payload)
- elif ticket.kind is tickets.FrontToBackPacket.Kind.ENTIRE:
+ elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.ENTIRE:
self._entire(
ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
- elif ticket.kind is tickets.FrontToBackPacket.Kind.CANCELLATION:
+ elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CANCELLATION:
self._cancel(ticket.operation_id)
else:
# NOTE(nathaniel): All other categories are treated as cancellation.
diff --git a/src/python/src/grpc/early_adopter/implementations.py b/src/python/src/grpc/early_adopter/implementations.py
index 7c50d7d8b2..9cadb58d0f 100644
--- a/src/python/src/grpc/early_adopter/implementations.py
+++ b/src/python/src/grpc/early_adopter/implementations.py
@@ -36,8 +36,8 @@ from grpc._adapter import rear as _rear
from grpc.early_adopter import _face_utilities
from grpc.early_adopter import _reexport
from grpc.early_adopter import interfaces
+from grpc.framework.base import implementations as _base_implementations
from grpc.framework.base import util as _base_utilities
-from grpc.framework.base.packets import implementations as _tickets_implementations
from grpc.framework.face import implementations as _face_implementations
from grpc.framework.foundation import logging_pool
@@ -66,7 +66,7 @@ class _Server(interfaces.Server):
self._pool = logging_pool.pool(_THREAD_POOL_SIZE)
servicer = _face_implementations.servicer(
self._pool, self._breakdown.implementations, None)
- self._back = _tickets_implementations.back(
+ self._back = _base_implementations.back_link(
servicer, self._pool, self._pool, self._pool, _ONE_DAY_IN_SECONDS,
_ONE_DAY_IN_SECONDS)
self._fore_link = _fore.ForeLink(
@@ -134,7 +134,7 @@ class _Stub(interfaces.Stub):
with self._lock:
if self._pool is None:
self._pool = logging_pool.pool(_THREAD_POOL_SIZE)
- self._front = _tickets_implementations.front(
+ self._front = _base_implementations.front_link(
self._pool, self._pool, self._pool)
self._rear_link = _rear.RearLink(
self._host, self._port, self._pool,
diff --git a/src/python/src/grpc/framework/base/packets/_cancellation.py b/src/python/src/grpc/framework/base/_cancellation.py
index 4a0ced1440..ffbc90668f 100644
--- a/src/python/src/grpc/framework/base/packets/_cancellation.py
+++ b/src/python/src/grpc/framework/base/_cancellation.py
@@ -29,9 +29,8 @@
"""State and behavior for operation cancellation."""
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _interfaces
-from grpc.framework.base.packets import packets
+from grpc.framework.base import _interfaces
+from grpc.framework.base import interfaces
class CancellationManager(_interfaces.CancellationManager):
@@ -59,7 +58,7 @@ class CancellationManager(_interfaces.CancellationManager):
def cancel(self):
"""See _interfaces.CancellationManager.cancel for specification."""
with self._lock:
- self._termination_manager.abort(base_interfaces.Outcome.CANCELLED)
- self._transmission_manager.abort(base_interfaces.Outcome.CANCELLED)
+ self._termination_manager.abort(interfaces.Outcome.CANCELLED)
+ self._transmission_manager.abort(interfaces.Outcome.CANCELLED)
self._ingestion_manager.abort()
self._expiration_manager.abort()
diff --git a/src/python/src/grpc/framework/base/packets/_constants.py b/src/python/src/grpc/framework/base/_constants.py
index 8fbdc82782..8fbdc82782 100644
--- a/src/python/src/grpc/framework/base/packets/_constants.py
+++ b/src/python/src/grpc/framework/base/_constants.py
diff --git a/src/python/src/grpc/framework/base/packets/_context.py b/src/python/src/grpc/framework/base/_context.py
index 45241c639e..d84871d639 100644
--- a/src/python/src/grpc/framework/base/packets/_context.py
+++ b/src/python/src/grpc/framework/base/_context.py
@@ -32,12 +32,12 @@
import time
# _interfaces is referenced from specification in this module.
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _interfaces # pylint: disable=unused-import
+from grpc.framework.base import interfaces
+from grpc.framework.base import _interfaces # pylint: disable=unused-import
-class OperationContext(base_interfaces.OperationContext):
- """An implementation of base_interfaces.OperationContext."""
+class OperationContext(interfaces.OperationContext):
+ """An implementation of interfaces.OperationContext."""
def __init__(
self, lock, operation_id, local_failure, termination_manager,
@@ -47,8 +47,8 @@ class OperationContext(base_interfaces.OperationContext):
Args:
lock: The operation-wide lock.
operation_id: An object identifying the operation.
- local_failure: Whichever one of base_interfaces.Outcome.SERVICED_FAILURE
- or base_interfaces.Outcome.SERVICER_FAILURE describes local failure of
+ local_failure: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
+ interfaces.Outcome.SERVICER_FAILURE describes local failure of
customer code.
termination_manager: The _interfaces.TerminationManager for the operation.
transmission_manager: The _interfaces.TransmissionManager for the
@@ -75,12 +75,12 @@ class OperationContext(base_interfaces.OperationContext):
self._expiration_manager = expiration_manager
def is_active(self):
- """See base_interfaces.OperationContext.is_active for specification."""
+ """See interfaces.OperationContext.is_active for specification."""
with self._lock:
return self._termination_manager.is_active()
def add_termination_callback(self, callback):
- """See base_interfaces.OperationContext.add_termination_callback."""
+ """See interfaces.OperationContext.add_termination_callback."""
with self._lock:
self._termination_manager.add_callback(callback)
diff --git a/src/python/src/grpc/framework/base/packets/_emission.py b/src/python/src/grpc/framework/base/_emission.py
index cfc9e40a24..1829669a72 100644
--- a/src/python/src/grpc/framework/base/packets/_emission.py
+++ b/src/python/src/grpc/framework/base/_emission.py
@@ -29,8 +29,8 @@
"""State and behavior for handling emitted values."""
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _interfaces
+from grpc.framework.base import interfaces
+from grpc.framework.base import _interfaces
class _EmissionManager(_interfaces.EmissionManager):
@@ -42,10 +42,9 @@ class _EmissionManager(_interfaces.EmissionManager):
Args:
lock: The operation-wide lock.
- failure_outcome: Whichever one of
- base_interfaces.Outcome.SERVICED_FAILURE or
- base_interfaces.Outcome.SERVICER_FAILURE describes this object's
- methods being called inappropriately by customer code.
+ failure_outcome: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
+ interfaces.Outcome.SERVICER_FAILURE describes this object's methods
+ being called inappropriately by customer code.
termination_manager: The _interfaces.TerminationManager for the operation.
transmission_manager: The _interfaces.TransmissionManager for the
operation.
@@ -106,7 +105,7 @@ def front_emission_manager(lock, termination_manager, transmission_manager):
An _interfaces.EmissionManager appropriate for front-side use.
"""
return _EmissionManager(
- lock, base_interfaces.Outcome.SERVICED_FAILURE, termination_manager,
+ lock, interfaces.Outcome.SERVICED_FAILURE, termination_manager,
transmission_manager)
@@ -122,5 +121,5 @@ def back_emission_manager(lock, termination_manager, transmission_manager):
An _interfaces.EmissionManager appropriate for back-side use.
"""
return _EmissionManager(
- lock, base_interfaces.Outcome.SERVICER_FAILURE, termination_manager,
+ lock, interfaces.Outcome.SERVICER_FAILURE, termination_manager,
transmission_manager)
diff --git a/src/python/src/grpc/framework/base/packets/_ends.py b/src/python/src/grpc/framework/base/_ends.py
index 614d1f666e..176f3ac06e 100644
--- a/src/python/src/grpc/framework/base/packets/_ends.py
+++ b/src/python/src/grpc/framework/base/_ends.py
@@ -27,32 +27,30 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Implementations of Fronts and Backs."""
+"""Implementations of FrontLinks and BackLinks."""
import collections
import threading
import uuid
-# _interfaces and packets are referenced from specification in this module.
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _cancellation
-from grpc.framework.base.packets import _context
-from grpc.framework.base.packets import _emission
-from grpc.framework.base.packets import _expiration
-from grpc.framework.base.packets import _ingestion
-from grpc.framework.base.packets import _interfaces # pylint: disable=unused-import
-from grpc.framework.base.packets import _reception
-from grpc.framework.base.packets import _termination
-from grpc.framework.base.packets import _transmission
-from grpc.framework.base.packets import interfaces
-from grpc.framework.base.packets import packets # pylint: disable=unused-import
+# _interfaces is referenced from specification in this module.
+from grpc.framework.base import _cancellation
+from grpc.framework.base import _context
+from grpc.framework.base import _emission
+from grpc.framework.base import _expiration
+from grpc.framework.base import _ingestion
+from grpc.framework.base import _interfaces # pylint: disable=unused-import
+from grpc.framework.base import _reception
+from grpc.framework.base import _termination
+from grpc.framework.base import _transmission
+from grpc.framework.base import interfaces
from grpc.framework.foundation import callable_util
_IDLE_ACTION_EXCEPTION_LOG_MESSAGE = 'Exception calling idle action!'
-class _EasyOperation(base_interfaces.Operation):
- """A trivial implementation of base_interfaces.Operation."""
+class _EasyOperation(interfaces.Operation):
+ """A trivial implementation of interfaces.Operation."""
def __init__(self, emission_manager, context, cancellation_manager):
"""Constructor.
@@ -60,7 +58,7 @@ class _EasyOperation(base_interfaces.Operation):
Args:
emission_manager: The _interfaces.EmissionManager for the operation that
will accept values emitted by customer code.
- context: The base_interfaces.OperationContext for use by the customer
+ context: The interfaces.OperationContext for use by the customer
during the operation.
cancellation_manager: The _interfaces.CancellationManager for the
operation.
@@ -88,7 +86,7 @@ class _Endlette(object):
# indicates an in-progress fire-and-forget operation for which the customer
# has chosen to ignore results.
self._operations = {}
- self._stats = {outcome: 0 for outcome in base_interfaces.Outcome}
+ self._stats = {outcome: 0 for outcome in interfaces.Outcome}
self._idle_actions = []
def terminal_action(self, operation_id):
@@ -152,9 +150,9 @@ def _front_operate(
"""Constructs objects necessary for front-side operation management.
Args:
- callback: A callable that accepts packets.FrontToBackPackets and delivers
- them to the other side of the operation. Execution of this callable may
- take any arbitrary length of time.
+ callback: A callable that accepts interfaces.FrontToBackTickets and
+ delivers them to the other side of the operation. Execution of this
+ callable may take any arbitrary length of time.
work_pool: A thread pool in which to execute customer code.
transmission_pool: A thread pool to use for transmitting to the other side
of the operation.
@@ -169,7 +167,7 @@ def _front_operate(
complete: A boolean indicating whether or not additional payloads will be
supplied by the customer.
timeout: A length of time in seconds to allow for the operation.
- subscription: A base_interfaces.ServicedSubscription describing the
+ subscription: A interfaces.ServicedSubscription describing the
customer's interest in the results of the operation.
trace_id: A uuid.UUID identifying a set of related operations to which this
operation belongs. May be None.
@@ -188,7 +186,7 @@ def _front_operate(
lock, transmission_pool, callback, operation_id, name,
subscription.kind, trace_id, timeout, termination_manager)
operation_context = _context.OperationContext(
- lock, operation_id, base_interfaces.Outcome.SERVICED_FAILURE,
+ lock, operation_id, interfaces.Outcome.SERVICED_FAILURE,
termination_manager, transmission_manager)
emission_manager = _emission.front_emission_manager(
lock, termination_manager, transmission_manager)
@@ -216,7 +214,7 @@ def _front_operate(
transmission_manager.inmit(payload, complete)
- if subscription.kind is base_interfaces.ServicedSubscription.Kind.NONE:
+ if subscription.kind is interfaces.ServicedSubscription.Kind.NONE:
returned_reception_manager = None
else:
returned_reception_manager = reception_manager
@@ -226,8 +224,8 @@ def _front_operate(
cancellation_manager)
-class Front(interfaces.Front):
- """An implementation of interfaces.Front."""
+class FrontLink(interfaces.FrontLink):
+ """An implementation of interfaces.FrontLink."""
def __init__(self, work_pool, transmission_pool, utility_pool):
"""Constructor.
@@ -252,16 +250,16 @@ class Front(interfaces.Front):
self._callback = rear_link.accept_front_to_back_ticket
def operation_stats(self):
- """See base_interfaces.End.operation_stats for specification."""
+ """See interfaces.End.operation_stats for specification."""
return self._endlette.operation_stats()
def add_idle_action(self, action):
- """See base_interfaces.End.add_idle_action for specification."""
+ """See interfaces.End.add_idle_action for specification."""
self._endlette.add_idle_action(action)
def operate(
self, name, payload, complete, timeout, subscription, trace_id):
- """See base_interfaces.Front.operate for specification."""
+ """See interfaces.Front.operate for specification."""
operation_id = uuid.uuid4()
with self._endlette:
management = _front_operate(
@@ -278,7 +276,7 @@ class Front(interfaces.Front):
with self._endlette:
reception_manager = self._endlette.get_operation(ticket.operation_id)
if reception_manager:
- reception_manager.receive_packet(ticket)
+ reception_manager.receive_ticket(ticket)
def _back_operate(
@@ -291,16 +289,16 @@ def _back_operate(
Args:
servicer: An interfaces.Servicer for servicing operations.
- callback: A callable that accepts packets.BackToFrontPackets and delivers
- them to the other side of the operation. Execution of this callable may
- take any arbitrary length of time.
+ callback: A callable that accepts interfaces.BackToFrontTickets and
+ delivers them to the other side of the operation. Execution of this
+ callable may take any arbitrary length of time.
work_pool: A thread pool in which to execute customer code.
transmission_pool: A thread pool to use for transmitting to the other side
of the operation.
utility_pool: A thread pool for utility tasks.
termination_action: A no-arg behavior to be called upon operation
completion.
- ticket: The first packets.FrontToBackPacket received for the operation.
+ ticket: The first interfaces.FrontToBackTicket received for the operation.
default_timeout: A length of time in seconds to be used as the default
time alloted for a single operation.
maximum_timeout: A length of time in seconds to be used as the maximum
@@ -317,7 +315,7 @@ def _back_operate(
lock, transmission_pool, callback, ticket.operation_id,
termination_manager, ticket.subscription)
operation_context = _context.OperationContext(
- lock, ticket.operation_id, base_interfaces.Outcome.SERVICER_FAILURE,
+ lock, ticket.operation_id, interfaces.Outcome.SERVICER_FAILURE,
termination_manager, transmission_manager)
emission_manager = _emission.back_emission_manager(
lock, termination_manager, transmission_manager)
@@ -340,13 +338,13 @@ def _back_operate(
ingestion_manager, expiration_manager)
ingestion_manager.set_expiration_manager(expiration_manager)
- reception_manager.receive_packet(ticket)
+ reception_manager.receive_ticket(ticket)
return reception_manager
-class Back(interfaces.Back):
- """An implementation of interfaces.Back."""
+class BackLink(interfaces.BackLink):
+ """An implementation of interfaces.BackLink."""
def __init__(
self, servicer, work_pool, transmission_pool, utility_pool,
@@ -390,12 +388,12 @@ class Back(interfaces.Back):
self._default_timeout, self._maximum_timeout)
self._endlette.add_operation(ticket.operation_id, reception_manager)
else:
- reception_manager.receive_packet(ticket)
+ reception_manager.receive_ticket(ticket)
def operation_stats(self):
- """See base_interfaces.End.operation_stats for specification."""
+ """See interfaces.End.operation_stats for specification."""
return self._endlette.operation_stats()
def add_idle_action(self, action):
- """See base_interfaces.End.add_idle_action for specification."""
+ """See interfaces.End.add_idle_action for specification."""
self._endlette.add_idle_action(action)
diff --git a/src/python/src/grpc/framework/base/packets/_expiration.py b/src/python/src/grpc/framework/base/_expiration.py
index a9ecaeaa63..17acbef4c1 100644
--- a/src/python/src/grpc/framework/base/packets/_expiration.py
+++ b/src/python/src/grpc/framework/base/_expiration.py
@@ -31,8 +31,8 @@
import time
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _interfaces
+from grpc.framework.base import _interfaces
+from grpc.framework.base import interfaces
from grpc.framework.foundation import later
@@ -73,8 +73,8 @@ class _ExpirationManager(_interfaces.ExpirationManager):
with self._lock:
if self._future is not None and index == self._index:
self._future = None
- self._termination_manager.abort(base_interfaces.Outcome.EXPIRED)
- self._transmission_manager.abort(base_interfaces.Outcome.EXPIRED)
+ self._termination_manager.abort(interfaces.Outcome.EXPIRED)
+ self._transmission_manager.abort(interfaces.Outcome.EXPIRED)
self._ingestion_manager.abort()
def start(self):
diff --git a/src/python/src/grpc/framework/base/packets/_ingestion.py b/src/python/src/grpc/framework/base/_ingestion.py
index c5c08fd98e..06d5b92f0b 100644
--- a/src/python/src/grpc/framework/base/packets/_ingestion.py
+++ b/src/python/src/grpc/framework/base/_ingestion.py
@@ -32,11 +32,10 @@
import abc
import collections
+from grpc.framework.base import _constants
+from grpc.framework.base import _interfaces
from grpc.framework.base import exceptions
from grpc.framework.base import interfaces
-from grpc.framework.base.packets import _constants
-from grpc.framework.base.packets import _interfaces
-from grpc.framework.base.packets import packets
from grpc.framework.foundation import abandonment
from grpc.framework.foundation import callable_util
from grpc.framework.foundation import stream
diff --git a/src/python/src/grpc/framework/base/packets/_interfaces.py b/src/python/src/grpc/framework/base/_interfaces.py
index 64184bdf7c..d88cf76590 100644
--- a/src/python/src/grpc/framework/base/packets/_interfaces.py
+++ b/src/python/src/grpc/framework/base/_interfaces.py
@@ -31,9 +31,8 @@
import abc
-# base_interfaces and packets are referenced from specification in this module.
-from grpc.framework.base import interfaces as base_interfaces # pylint: disable=unused-import
-from grpc.framework.base.packets import packets # pylint: disable=unused-import
+# interfaces is referenced from specification in this module.
+from grpc.framework.base import interfaces # pylint: disable=unused-import
from grpc.framework.foundation import stream
@@ -63,7 +62,7 @@ class TerminationManager(object):
immediately.
Args:
- callback: A callable that will be passed a base_interfaces.Outcome value.
+ callback: A callable that will be passed an interfaces.Outcome value.
"""
raise NotImplementedError()
@@ -87,7 +86,7 @@ class TerminationManager(object):
"""Indicates that the operation must abort for the indicated reason.
Args:
- outcome: A base_interfaces.Outcome indicating operation abortion.
+ outcome: An interfaces.Outcome indicating operation abortion.
"""
raise NotImplementedError()
@@ -113,7 +112,7 @@ class TransmissionManager(object):
"""Indicates that the operation has aborted for the indicated reason.
Args:
- outcome: A base_interfaces.Outcome indicating operation abortion.
+ outcome: An interfaces.Outcome indicating operation abortion.
"""
raise NotImplementedError()
@@ -248,15 +247,15 @@ class ExpirationManager(object):
class ReceptionManager(object):
- """A manager responsible for receiving packets from the other end."""
+ """A manager responsible for receiving tickets from the other end."""
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
- def receive_packet(self, packet):
- """Handle a packet from the other side of the operation.
+ def receive_ticket(self, ticket):
+ """Handle a ticket from the other side of the operation.
Args:
- packet: A packets.BackToFrontPacket or packets.FrontToBackPacket
+ ticket: An interfaces.BackToFrontTicket or interfaces.FrontToBackTicket
appropriate to this end of the operation and this object.
"""
raise NotImplementedError()
diff --git a/src/python/src/grpc/framework/base/packets/_reception.py b/src/python/src/grpc/framework/base/_reception.py
index ef10c7f8fe..dd428964f1 100644
--- a/src/python/src/grpc/framework/base/packets/_reception.py
+++ b/src/python/src/grpc/framework/base/_reception.py
@@ -27,47 +27,46 @@
# (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 packet reception."""
+"""State and behavior for ticket reception."""
import abc
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base.packets import _interfaces
-from grpc.framework.base.packets import packets
+from grpc.framework.base import interfaces
+from grpc.framework.base import _interfaces
-_INITIAL_FRONT_TO_BACK_PACKET_KINDS = (
- packets.FrontToBackPacket.Kind.COMMENCEMENT,
- packets.FrontToBackPacket.Kind.ENTIRE,
+_INITIAL_FRONT_TO_BACK_TICKET_KINDS = (
+ interfaces.FrontToBackTicket.Kind.COMMENCEMENT,
+ interfaces.FrontToBackTicket.Kind.ENTIRE,
)
class _Receiver(object):
- """Common specification of different packet-handling behavior."""
+ """Common specification of different ticket-handling behavior."""
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
- def abort_if_abortive(self, packet):
- """Aborts the operation if the packet is abortive.
+ def abort_if_abortive(self, ticket):
+ """Aborts the operation if the ticket is abortive.
Args:
- packet: A just-arrived packet.
+ ticket: A just-arrived ticket.
Returns:
A boolean indicating whether or not this Receiver aborted the operation
- based on the packet.
+ based on the ticket.
"""
raise NotImplementedError()
@abc.abstractmethod
- def receive(self, packet):
- """Handles a just-arrived packet.
+ def receive(self, ticket):
+ """Handles a just-arrived ticket.
Args:
- packet: A just-arrived packet.
+ ticket: A just-arrived ticket.
Returns:
- A boolean indicating whether or not the packet was terminal (i.e. whether
- or not non-abortive packets are legal after this one).
+ A boolean indicating whether or not the ticket was terminal (i.e. whether
+ or not non-abortive tickets are legal after this one).
"""
raise NotImplementedError()
@@ -88,15 +87,15 @@ def _abort(
def _abort_if_abortive(
- packet, abortive, termination_manager, transmission_manager,
+ ticket, abortive, termination_manager, transmission_manager,
ingestion_manager, expiration_manager):
- """Determines a packet's being abortive and if so aborts the operation.
+ """Determines a ticket's being abortive and if so aborts the operation.
Args:
- packet: A just-arrived packet.
- abortive: A callable that takes a packet and returns a
- base_interfaces.Outcome indicating that the operation should be aborted
- or None indicating that the operation should not be aborted.
+ ticket: A just-arrived ticket.
+ abortive: A callable that takes a ticket and returns an interfaces.Outcome
+ indicating that the operation should be aborted or None indicating that
+ the operation should not be aborted.
termination_manager: The operation's _interfaces.TerminationManager.
transmission_manager: The operation's _interfaces.TransmissionManager.
ingestion_manager: The operation's _interfaces.IngestionManager.
@@ -105,7 +104,7 @@ def _abort_if_abortive(
Returns:
True if the operation was aborted; False otherwise.
"""
- abortion_outcome = abortive(packet)
+ abortion_outcome = abortive(ticket)
if abortion_outcome is None:
return False
else:
@@ -120,12 +119,12 @@ def _reception_failure(
expiration_manager):
"""Aborts the operation with an indication of reception failure."""
_abort(
- base_interfaces.Outcome.RECEPTION_FAILURE, termination_manager,
+ interfaces.Outcome.RECEPTION_FAILURE, termination_manager,
transmission_manager, ingestion_manager, expiration_manager)
class _BackReceiver(_Receiver):
- """Packet-handling specific to the back side of an operation."""
+ """Ticket-handling specific to the back side of an operation."""
def __init__(
self, termination_manager, transmission_manager, ingestion_manager,
@@ -143,68 +142,68 @@ class _BackReceiver(_Receiver):
self._ingestion_manager = ingestion_manager
self._expiration_manager = expiration_manager
- self._first_packet_seen = False
- self._last_packet_seen = False
+ self._first_ticket_seen = False
+ self._last_ticket_seen = False
- def _abortive(self, packet):
- """Determines whether or not (and if so, how) a packet is abortive.
+ def _abortive(self, ticket):
+ """Determines whether or not (and if so, how) a ticket is abortive.
Args:
- packet: A just-arrived packet.
+ ticket: A just-arrived ticket.
Returns:
- A base_interfaces.Outcome value describing operation abortion if the
- packet is abortive or None if the packet is not abortive.
+ An interfaces.Outcome value describing operation abortion if the
+ ticket is abortive or None if the ticket is not abortive.
"""
- if packet.kind is packets.FrontToBackPacket.Kind.CANCELLATION:
- return base_interfaces.Outcome.CANCELLED
- elif packet.kind is packets.FrontToBackPacket.Kind.EXPIRATION:
- return base_interfaces.Outcome.EXPIRED
- elif packet.kind is packets.FrontToBackPacket.Kind.SERVICED_FAILURE:
- return base_interfaces.Outcome.SERVICED_FAILURE
- elif packet.kind is packets.FrontToBackPacket.Kind.RECEPTION_FAILURE:
- return base_interfaces.Outcome.SERVICED_FAILURE
- elif (packet.kind in _INITIAL_FRONT_TO_BACK_PACKET_KINDS and
- self._first_packet_seen):
- return base_interfaces.Outcome.RECEPTION_FAILURE
- elif self._last_packet_seen:
- return base_interfaces.Outcome.RECEPTION_FAILURE
+ if ticket.kind is interfaces.FrontToBackTicket.Kind.CANCELLATION:
+ return interfaces.Outcome.CANCELLED
+ elif ticket.kind is interfaces.FrontToBackTicket.Kind.EXPIRATION:
+ return interfaces.Outcome.EXPIRED
+ elif ticket.kind is interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE:
+ return interfaces.Outcome.SERVICED_FAILURE
+ elif ticket.kind is interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE:
+ return interfaces.Outcome.SERVICED_FAILURE
+ elif (ticket.kind in _INITIAL_FRONT_TO_BACK_TICKET_KINDS and
+ self._first_ticket_seen):
+ return interfaces.Outcome.RECEPTION_FAILURE
+ elif self._last_ticket_seen:
+ return interfaces.Outcome.RECEPTION_FAILURE
else:
return None
- def abort_if_abortive(self, packet):
+ def abort_if_abortive(self, ticket):
"""See _Receiver.abort_if_abortive for specification."""
return _abort_if_abortive(
- packet, self._abortive, self._termination_manager,
+ ticket, self._abortive, self._termination_manager,
self._transmission_manager, self._ingestion_manager,
self._expiration_manager)
- def receive(self, packet):
+ def receive(self, ticket):
"""See _Receiver.receive for specification."""
- if packet.timeout is not None:
- self._expiration_manager.change_timeout(packet.timeout)
-
- if packet.kind is packets.FrontToBackPacket.Kind.COMMENCEMENT:
- self._first_packet_seen = True
- self._ingestion_manager.start(packet.name)
- if packet.payload is not None:
- self._ingestion_manager.consume(packet.payload)
- elif packet.kind is packets.FrontToBackPacket.Kind.CONTINUATION:
- self._ingestion_manager.consume(packet.payload)
- elif packet.kind is packets.FrontToBackPacket.Kind.COMPLETION:
- self._last_packet_seen = True
- if packet.payload is None:
+ if ticket.timeout is not None:
+ self._expiration_manager.change_timeout(ticket.timeout)
+
+ if ticket.kind is interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
+ self._first_ticket_seen = True
+ self._ingestion_manager.start(ticket.name)
+ if ticket.payload is not None:
+ self._ingestion_manager.consume(ticket.payload)
+ elif ticket.kind is interfaces.FrontToBackTicket.Kind.CONTINUATION:
+ self._ingestion_manager.consume(ticket.payload)
+ elif ticket.kind is interfaces.FrontToBackTicket.Kind.COMPLETION:
+ self._last_ticket_seen = True
+ if ticket.payload is None:
self._ingestion_manager.terminate()
else:
- self._ingestion_manager.consume_and_terminate(packet.payload)
+ self._ingestion_manager.consume_and_terminate(ticket.payload)
else:
- self._first_packet_seen = True
- self._last_packet_seen = True
- self._ingestion_manager.start(packet.name)
- if packet.payload is None:
+ self._first_ticket_seen = True
+ self._last_ticket_seen = True
+ self._ingestion_manager.start(ticket.name)
+ if ticket.payload is None:
self._ingestion_manager.terminate()
else:
- self._ingestion_manager.consume_and_terminate(packet.payload)
+ self._ingestion_manager.consume_and_terminate(ticket.payload)
def reception_failure(self):
"""See _Receiver.reception_failure for specification."""
@@ -214,7 +213,7 @@ class _BackReceiver(_Receiver):
class _FrontReceiver(_Receiver):
- """Packet-handling specific to the front side of an operation."""
+ """Ticket-handling specific to the front side of an operation."""
def __init__(
self, termination_manager, transmission_manager, ingestion_manager,
@@ -232,48 +231,48 @@ class _FrontReceiver(_Receiver):
self._ingestion_manager = ingestion_manager
self._expiration_manager = expiration_manager
- self._last_packet_seen = False
+ self._last_ticket_seen = False
- def _abortive(self, packet):
- """Determines whether or not (and if so, how) a packet is abortive.
+ def _abortive(self, ticket):
+ """Determines whether or not (and if so, how) a ticket is abortive.
Args:
- packet: A just-arrived packet.
+ ticket: A just-arrived ticket.
Returns:
- A base_interfaces.Outcome value describing operation abortion if the
- packet is abortive or None if the packet is not abortive.
+ An interfaces.Outcome value describing operation abortion if the ticket
+ is abortive or None if the ticket is not abortive.
"""
- if packet.kind is packets.BackToFrontPacket.Kind.CANCELLATION:
- return base_interfaces.Outcome.CANCELLED
- elif packet.kind is packets.BackToFrontPacket.Kind.EXPIRATION:
- return base_interfaces.Outcome.EXPIRED
- elif packet.kind is packets.BackToFrontPacket.Kind.SERVICER_FAILURE:
- return base_interfaces.Outcome.SERVICER_FAILURE
- elif packet.kind is packets.BackToFrontPacket.Kind.RECEPTION_FAILURE:
- return base_interfaces.Outcome.SERVICER_FAILURE
- elif self._last_packet_seen:
- return base_interfaces.Outcome.RECEPTION_FAILURE
+ if ticket.kind is interfaces.BackToFrontTicket.Kind.CANCELLATION:
+ return interfaces.Outcome.CANCELLED
+ elif ticket.kind is interfaces.BackToFrontTicket.Kind.EXPIRATION:
+ return interfaces.Outcome.EXPIRED
+ elif ticket.kind is interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE:
+ return interfaces.Outcome.SERVICER_FAILURE
+ elif ticket.kind is interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE:
+ return interfaces.Outcome.SERVICER_FAILURE
+ elif self._last_ticket_seen:
+ return interfaces.Outcome.RECEPTION_FAILURE
else:
return None
- def abort_if_abortive(self, packet):
+ def abort_if_abortive(self, ticket):
"""See _Receiver.abort_if_abortive for specification."""
return _abort_if_abortive(
- packet, self._abortive, self._termination_manager,
+ ticket, self._abortive, self._termination_manager,
self._transmission_manager, self._ingestion_manager,
self._expiration_manager)
- def receive(self, packet):
+ def receive(self, ticket):
"""See _Receiver.receive for specification."""
- if packet.kind is packets.BackToFrontPacket.Kind.CONTINUATION:
- self._ingestion_manager.consume(packet.payload)
- elif packet.kind is packets.BackToFrontPacket.Kind.COMPLETION:
- self._last_packet_seen = True
- if packet.payload is None:
+ if ticket.kind is interfaces.BackToFrontTicket.Kind.CONTINUATION:
+ self._ingestion_manager.consume(ticket.payload)
+ elif ticket.kind is interfaces.BackToFrontTicket.Kind.COMPLETION:
+ self._last_ticket_seen = True
+ if ticket.payload is None:
self._ingestion_manager.terminate()
else:
- self._ingestion_manager.consume_and_terminate(packet.payload)
+ self._ingestion_manager.consume_and_terminate(ticket.payload)
def reception_failure(self):
"""See _Receiver.reception_failure for specification."""
@@ -290,72 +289,72 @@ class _ReceptionManager(_interfaces.ReceptionManager):
Args:
lock: The operation-servicing-wide lock object.
- receiver: A _Receiver responsible for handling received packets.
+ receiver: A _Receiver responsible for handling received tickets.
"""
self._lock = lock
self._receiver = receiver
self._lowest_unseen_sequence_number = 0
- self._out_of_sequence_packets = {}
+ self._out_of_sequence_tickets = {}
self._completed_sequence_number = None
self._aborted = False
- def _sequence_failure(self, packet):
- """Determines a just-arrived packet's sequential legitimacy.
+ def _sequence_failure(self, ticket):
+ """Determines a just-arrived ticket's sequential legitimacy.
Args:
- packet: A just-arrived packet.
+ ticket: A just-arrived ticket.
Returns:
- True if the packet is sequentially legitimate; False otherwise.
+ True if the ticket is sequentially legitimate; False otherwise.
"""
- if packet.sequence_number < self._lowest_unseen_sequence_number:
+ if ticket.sequence_number < self._lowest_unseen_sequence_number:
return True
- elif packet.sequence_number in self._out_of_sequence_packets:
+ elif ticket.sequence_number in self._out_of_sequence_tickets:
return True
elif (self._completed_sequence_number is not None and
- self._completed_sequence_number <= packet.sequence_number):
+ self._completed_sequence_number <= ticket.sequence_number):
return True
else:
return False
- def _process(self, packet):
- """Process those packets ready to be processed.
+ def _process(self, ticket):
+ """Process those tickets ready to be processed.
Args:
- packet: A just-arrived packet the sequence number of which matches this
+ ticket: A just-arrived ticket the sequence number of which matches this
_ReceptionManager's _lowest_unseen_sequence_number field.
"""
while True:
- completed = self._receiver.receive(packet)
+ completed = self._receiver.receive(ticket)
if completed:
- self._out_of_sequence_packets.clear()
- self._completed_sequence_number = packet.sequence_number
- self._lowest_unseen_sequence_number = packet.sequence_number + 1
+ self._out_of_sequence_tickets.clear()
+ self._completed_sequence_number = ticket.sequence_number
+ self._lowest_unseen_sequence_number = ticket.sequence_number + 1
return
else:
- next_packet = self._out_of_sequence_packets.pop(
- packet.sequence_number + 1, None)
- if next_packet is None:
- self._lowest_unseen_sequence_number = packet.sequence_number + 1
+ next_ticket = self._out_of_sequence_tickets.pop(
+ ticket.sequence_number + 1, None)
+ if next_ticket is None:
+ self._lowest_unseen_sequence_number = ticket.sequence_number + 1
return
else:
- packet = next_packet
+ ticket = next_ticket
- def receive_packet(self, packet):
- """See _interfaces.ReceptionManager.receive_packet for specification."""
+ def receive_ticket(self, ticket):
+ """See _interfaces.ReceptionManager.receive_ticket for specification."""
with self._lock:
if self._aborted:
return
- elif self._sequence_failure(packet):
+ elif self._sequence_failure(ticket):
self._receiver.reception_failure()
self._aborted = True
- elif self._receiver.abort_if_abortive(packet):
+ elif self._receiver.abort_if_abortive(ticket):
self._aborted = True
- elif packet.sequence_number == self._lowest_unseen_sequence_number:
- self._process(packet)
+ elif ticket.sequence_number == self._lowest_unseen_sequence_number:
+ self._process(ticket)
else:
- self._out_of_sequence_packets[packet.sequence_number] = packet
+ self._out_of_sequence_tickets[ticket.sequence_number] = ticket
def front_reception_manager(
diff --git a/src/python/src/grpc/framework/base/packets/_termination.py b/src/python/src/grpc/framework/base/_termination.py
index 6afba88fc4..ddcbc60293 100644
--- a/src/python/src/grpc/framework/base/packets/_termination.py
+++ b/src/python/src/grpc/framework/base/_termination.py
@@ -31,9 +31,9 @@
import enum
+from grpc.framework.base import _constants
+from grpc.framework.base import _interfaces
from grpc.framework.base import interfaces
-from grpc.framework.base.packets import _constants
-from grpc.framework.base.packets import _interfaces
from grpc.framework.foundation import callable_util
_CALLBACK_EXCEPTION_LOG_MESSAGE = 'Exception calling termination callback!'
diff --git a/src/python/src/grpc/framework/base/packets/_transmission.py b/src/python/src/grpc/framework/base/_transmission.py
index 1b18204ec5..6845129234 100644
--- a/src/python/src/grpc/framework/base/packets/_transmission.py
+++ b/src/python/src/grpc/framework/base/_transmission.py
@@ -27,14 +27,13 @@
# (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 packet transmission during an operation."""
+"""State and behavior for ticket transmission during an operation."""
import abc
+from grpc.framework.base import _constants
+from grpc.framework.base import _interfaces
from grpc.framework.base import interfaces
-from grpc.framework.base.packets import _constants
-from grpc.framework.base.packets import _interfaces
-from grpc.framework.base.packets import packets
from grpc.framework.foundation import callable_util
_TRANSMISSION_EXCEPTION_LOG_MESSAGE = 'Exception during transmission!'
@@ -47,53 +46,53 @@ _BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES = (
interfaces.Outcome.SERVICED_FAILURE,
)
-_ABORTION_OUTCOME_TO_FRONT_TO_BACK_PACKET_KIND = {
+_ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND = {
interfaces.Outcome.CANCELLED:
- packets.FrontToBackPacket.Kind.CANCELLATION,
+ interfaces.FrontToBackTicket.Kind.CANCELLATION,
interfaces.Outcome.EXPIRED:
- packets.FrontToBackPacket.Kind.EXPIRATION,
+ interfaces.FrontToBackTicket.Kind.EXPIRATION,
interfaces.Outcome.RECEPTION_FAILURE:
- packets.FrontToBackPacket.Kind.RECEPTION_FAILURE,
+ interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE,
interfaces.Outcome.TRANSMISSION_FAILURE:
- packets.FrontToBackPacket.Kind.TRANSMISSION_FAILURE,
+ interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE,
interfaces.Outcome.SERVICED_FAILURE:
- packets.FrontToBackPacket.Kind.SERVICED_FAILURE,
+ interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE,
interfaces.Outcome.SERVICER_FAILURE:
- packets.FrontToBackPacket.Kind.SERVICER_FAILURE,
+ interfaces.FrontToBackTicket.Kind.SERVICER_FAILURE,
}
-_ABORTION_OUTCOME_TO_BACK_TO_FRONT_PACKET_KIND = {
+_ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND = {
interfaces.Outcome.CANCELLED:
- packets.BackToFrontPacket.Kind.CANCELLATION,
+ interfaces.BackToFrontTicket.Kind.CANCELLATION,
interfaces.Outcome.EXPIRED:
- packets.BackToFrontPacket.Kind.EXPIRATION,
+ interfaces.BackToFrontTicket.Kind.EXPIRATION,
interfaces.Outcome.RECEPTION_FAILURE:
- packets.BackToFrontPacket.Kind.RECEPTION_FAILURE,
+ interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE,
interfaces.Outcome.TRANSMISSION_FAILURE:
- packets.BackToFrontPacket.Kind.TRANSMISSION_FAILURE,
+ interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE,
interfaces.Outcome.SERVICED_FAILURE:
- packets.BackToFrontPacket.Kind.SERVICED_FAILURE,
+ interfaces.BackToFrontTicket.Kind.SERVICED_FAILURE,
interfaces.Outcome.SERVICER_FAILURE:
- packets.BackToFrontPacket.Kind.SERVICER_FAILURE,
+ interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE,
}
-class _Packetizer(object):
- """Common specification of different packet-creating behavior."""
+class _Ticketizer(object):
+ """Common specification of different ticket-creating behavior."""
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
- def packetize(self, operation_id, sequence_number, payload, complete):
- """Creates a packet indicating ordinary operation progress.
+ def ticketize(self, operation_id, sequence_number, payload, complete):
+ """Creates a ticket indicating ordinary operation progress.
Args:
operation_id: The operation ID for the current operation.
- sequence_number: A sequence number for the packet.
+ sequence_number: A sequence number for the ticket.
payload: A customer payload object. May be None if sequence_number is
zero or complete is true.
- complete: A boolean indicating whether or not the packet should describe
+ complete: A boolean indicating whether or not the ticket should describe
itself as (but for a later indication of operation abortion) the last
- packet to be sent.
+ ticket to be sent.
Returns:
An object of an appropriate type suitable for transmission to the other
@@ -102,12 +101,12 @@ class _Packetizer(object):
raise NotImplementedError()
@abc.abstractmethod
- def packetize_abortion(self, operation_id, sequence_number, outcome):
- """Creates a packet indicating that the operation is aborted.
+ def ticketize_abortion(self, operation_id, sequence_number, outcome):
+ """Creates a ticket indicating that the operation is aborted.
Args:
operation_id: The operation ID for the current operation.
- sequence_number: A sequence number for the packet.
+ sequence_number: A sequence number for the ticket.
outcome: An interfaces.Outcome value describing the operation abortion.
Returns:
@@ -118,8 +117,8 @@ class _Packetizer(object):
raise NotImplementedError()
-class _FrontPacketizer(_Packetizer):
- """Front-side packet-creating behavior."""
+class _FrontTicketizer(_Ticketizer):
+ """Front-side ticket-creating behavior."""
def __init__(self, name, subscription_kind, trace_id, timeout):
"""Constructor.
@@ -127,7 +126,7 @@ class _FrontPacketizer(_Packetizer):
Args:
name: The name of the operation.
subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in packets sent from the back.
+ describing the interest the front has in tickets sent from the back.
trace_id: A uuid.UUID identifying a set of related operations to which
this operation belongs.
timeout: A length of time in seconds to allow for the entire operation.
@@ -137,54 +136,54 @@ class _FrontPacketizer(_Packetizer):
self._trace_id = trace_id
self._timeout = timeout
- def packetize(self, operation_id, sequence_number, payload, complete):
- """See _Packetizer.packetize for specification."""
+ def ticketize(self, operation_id, sequence_number, payload, complete):
+ """See _Ticketizer.ticketize for specification."""
if sequence_number:
if complete:
- kind = packets.FrontToBackPacket.Kind.COMPLETION
+ kind = interfaces.FrontToBackTicket.Kind.COMPLETION
else:
- kind = packets.FrontToBackPacket.Kind.CONTINUATION
- return packets.FrontToBackPacket(
+ kind = interfaces.FrontToBackTicket.Kind.CONTINUATION
+ return interfaces.FrontToBackTicket(
operation_id, sequence_number, kind, self._name,
self._subscription_kind, self._trace_id, payload, self._timeout)
else:
if complete:
- kind = packets.FrontToBackPacket.Kind.ENTIRE
+ kind = interfaces.FrontToBackTicket.Kind.ENTIRE
else:
- kind = packets.FrontToBackPacket.Kind.COMMENCEMENT
- return packets.FrontToBackPacket(
+ kind = interfaces.FrontToBackTicket.Kind.COMMENCEMENT
+ return interfaces.FrontToBackTicket(
operation_id, 0, kind, self._name, self._subscription_kind,
self._trace_id, payload, self._timeout)
- def packetize_abortion(self, operation_id, sequence_number, outcome):
- """See _Packetizer.packetize_abortion for specification."""
+ def ticketize_abortion(self, operation_id, sequence_number, outcome):
+ """See _Ticketizer.ticketize_abortion for specification."""
if outcome in _FRONT_TO_BACK_NO_TRANSMISSION_OUTCOMES:
return None
else:
- kind = _ABORTION_OUTCOME_TO_FRONT_TO_BACK_PACKET_KIND[outcome]
- return packets.FrontToBackPacket(
+ kind = _ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND[outcome]
+ return interfaces.FrontToBackTicket(
operation_id, sequence_number, kind, None, None, None, None, None)
-class _BackPacketizer(_Packetizer):
- """Back-side packet-creating behavior."""
+class _BackTicketizer(_Ticketizer):
+ """Back-side ticket-creating behavior."""
- def packetize(self, operation_id, sequence_number, payload, complete):
- """See _Packetizer.packetize for specification."""
+ def ticketize(self, operation_id, sequence_number, payload, complete):
+ """See _Ticketizer.ticketize for specification."""
if complete:
- kind = packets.BackToFrontPacket.Kind.COMPLETION
+ kind = interfaces.BackToFrontTicket.Kind.COMPLETION
else:
- kind = packets.BackToFrontPacket.Kind.CONTINUATION
- return packets.BackToFrontPacket(
+ kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
+ return interfaces.BackToFrontTicket(
operation_id, sequence_number, kind, payload)
- def packetize_abortion(self, operation_id, sequence_number, outcome):
- """See _Packetizer.packetize_abortion for specification."""
+ def ticketize_abortion(self, operation_id, sequence_number, outcome):
+ """See _Ticketizer.ticketize_abortion for specification."""
if outcome in _BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES:
return None
else:
- kind = _ABORTION_OUTCOME_TO_BACK_TO_FRONT_PACKET_KIND[outcome]
- return packets.BackToFrontPacket(
+ kind = _ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND[outcome]
+ return interfaces.BackToFrontTicket(
operation_id, sequence_number, kind, None)
@@ -221,21 +220,21 @@ class _EmptyTransmissionManager(TransmissionManager):
class _TransmittingTransmissionManager(TransmissionManager):
- """A TransmissionManager implementation that sends packets."""
+ """A TransmissionManager implementation that sends tickets."""
def __init__(
- self, lock, pool, callback, operation_id, packetizer,
+ self, lock, pool, callback, operation_id, ticketizer,
termination_manager):
"""Constructor.
Args:
lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting packets will be
+ pool: A thread pool in which the work of transmitting tickets will be
performed.
- callback: A callable that accepts packets and sends them to the other side
+ callback: A callable that accepts tickets and sends them to the other side
of the operation.
operation_id: The operation's ID.
- packetizer: A _Packetizer for packet creation.
+ ticketizer: A _Ticketizer for ticket creation.
termination_manager: The _interfaces.TerminationManager associated with
this operation.
"""
@@ -243,7 +242,7 @@ class _TransmittingTransmissionManager(TransmissionManager):
self._pool = pool
self._callback = callback
self._operation_id = operation_id
- self._packetizer = packetizer
+ self._ticketizer = ticketizer
self._termination_manager = termination_manager
self._ingestion_manager = None
self._expiration_manager = None
@@ -260,8 +259,8 @@ class _TransmittingTransmissionManager(TransmissionManager):
self._ingestion_manager = ingestion_manager
self._expiration_manager = expiration_manager
- def _lead_packet(self, emission, complete):
- """Creates a packet suitable for leading off the transmission loop.
+ def _lead_ticket(self, emission, complete):
+ """Creates a ticket suitable for leading off the transmission loop.
Args:
emission: A customer payload object to be sent to the other side of the
@@ -270,37 +269,37 @@ class _TransmittingTransmissionManager(TransmissionManager):
the passed object.
Returns:
- A packet with which to lead off the transmission loop.
+ A ticket with which to lead off the transmission loop.
"""
sequence_number = self._lowest_unused_sequence_number
self._lowest_unused_sequence_number += 1
- return self._packetizer.packetize(
+ return self._ticketizer.ticketize(
self._operation_id, sequence_number, emission, complete)
- def _abortive_response_packet(self, outcome):
- """Creates a packet indicating operation abortion.
+ def _abortive_response_ticket(self, outcome):
+ """Creates a ticket indicating operation abortion.
Args:
outcome: An interfaces.Outcome value describing operation abortion.
Returns:
- A packet indicating operation abortion.
+ A ticket indicating operation abortion.
"""
- packet = self._packetizer.packetize_abortion(
+ ticket = self._ticketizer.ticketize_abortion(
self._operation_id, self._lowest_unused_sequence_number, outcome)
- if packet is None:
+ if ticket is None:
return None
else:
self._lowest_unused_sequence_number += 1
- return packet
+ return ticket
- def _next_packet(self):
- """Creates the next packet to be sent to the other side of the operation.
+ def _next_ticket(self):
+ """Creates the next ticket to be sent to the other side of the operation.
Returns:
- A (completed, packet) tuple comprised of a boolean indicating whether or
- not the sequence of packets has completed normally and a packet to send
- to the other side if the sequence of packets hasn't completed. The tuple
+ A (completed, ticket) tuple comprised of a boolean indicating whether or
+ not the sequence of tickets has completed normally and a ticket to send
+ to the other side if the sequence of tickets hasn't completed. The tuple
will never have both a True first element and a non-None second element.
"""
if self._emissions is None:
@@ -311,29 +310,29 @@ class _TransmittingTransmissionManager(TransmissionManager):
complete = self._emission_complete and not self._emissions
sequence_number = self._lowest_unused_sequence_number
self._lowest_unused_sequence_number += 1
- return complete, self._packetizer.packetize(
+ return complete, self._ticketizer.ticketize(
self._operation_id, sequence_number, payload, complete)
else:
return self._emission_complete, None
else:
- packet = self._abortive_response_packet(self._outcome)
+ ticket = self._abortive_response_ticket(self._outcome)
self._emissions = None
- return False, None if packet is None else packet
+ return False, None if ticket is None else ticket
- def _transmit(self, packet):
- """Commences the transmission loop sending packets.
+ def _transmit(self, ticket):
+ """Commences the transmission loop sending tickets.
Args:
- packet: A packet to be sent to the other side of the operation.
+ ticket: A ticket to be sent to the other side of the operation.
"""
- def transmit(packet):
+ def transmit(ticket):
while True:
transmission_outcome = callable_util.call_logging_exceptions(
- self._callback, _TRANSMISSION_EXCEPTION_LOG_MESSAGE, packet)
+ self._callback, _TRANSMISSION_EXCEPTION_LOG_MESSAGE, ticket)
if transmission_outcome.exception is None:
with self._lock:
- complete, packet = self._next_packet()
- if packet is None:
+ complete, ticket = self._next_ticket()
+ if ticket is None:
if complete:
self._termination_manager.transmission_complete()
self._transmitting = False
@@ -349,7 +348,7 @@ class _TransmittingTransmissionManager(TransmissionManager):
return
self._pool.submit(callable_util.with_exceptions_logged(
- transmit, _constants.INTERNAL_ERROR_LOG_MESSAGE), packet)
+ transmit, _constants.INTERNAL_ERROR_LOG_MESSAGE), ticket)
self._transmitting = True
def inmit(self, emission, complete):
@@ -359,17 +358,17 @@ class _TransmittingTransmissionManager(TransmissionManager):
if self._transmitting:
self._emissions.append(emission)
else:
- self._transmit(self._lead_packet(emission, complete))
+ self._transmit(self._lead_ticket(emission, complete))
def abort(self, outcome):
"""See _interfaces.TransmissionManager.abort for specification."""
if self._emissions is not None and self._outcome is None:
self._outcome = outcome
if not self._transmitting:
- packet = self._abortive_response_packet(outcome)
+ ticket = self._abortive_response_ticket(outcome)
self._emissions = None
- if packet is not None:
- self._transmit(packet)
+ if ticket is not None:
+ self._transmit(ticket)
def front_transmission_manager(
@@ -379,14 +378,14 @@ def front_transmission_manager(
Args:
lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting packets will be
+ pool: A thread pool in which the work of transmitting tickets will be
performed.
- callback: A callable that accepts packets and sends them to the other side
+ callback: A callable that accepts tickets and sends them to the other side
of the operation.
operation_id: The operation's ID.
name: The name of the operation.
subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in packets sent from the back.
+ describing the interest the front has in tickets sent from the back.
trace_id: A uuid.UUID identifying a set of related operations to which
this operation belongs.
timeout: A length of time in seconds to allow for the entire operation.
@@ -397,7 +396,7 @@ def front_transmission_manager(
A TransmissionManager appropriate for front-side use.
"""
return _TransmittingTransmissionManager(
- lock, pool, callback, operation_id, _FrontPacketizer(
+ lock, pool, callback, operation_id, _FrontTicketizer(
name, subscription_kind, trace_id, timeout),
termination_manager)
@@ -409,15 +408,15 @@ def back_transmission_manager(
Args:
lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting packets will be
+ pool: A thread pool in which the work of transmitting tickets will be
performed.
- callback: A callable that accepts packets and sends them to the other side
+ callback: A callable that accepts tickets and sends them to the other side
of the operation.
operation_id: The operation's ID.
termination_manager: The _interfaces.TerminationManager associated with
this operation.
subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in packets sent from the back.
+ describing the interest the front has in tickets sent from the back.
Returns:
A TransmissionManager appropriate for back-side use.
@@ -426,5 +425,5 @@ def back_transmission_manager(
return _EmptyTransmissionManager()
else:
return _TransmittingTransmissionManager(
- lock, pool, callback, operation_id, _BackPacketizer(),
+ lock, pool, callback, operation_id, _BackTicketizer(),
termination_manager)
diff --git a/src/python/src/grpc/framework/base/packets/implementations.py b/src/python/src/grpc/framework/base/implementations.py
index 28688bcc0f..5656f9f981 100644
--- a/src/python/src/grpc/framework/base/packets/implementations.py
+++ b/src/python/src/grpc/framework/base/implementations.py
@@ -27,51 +27,51 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Entry points into the packet-exchange-based implementation the base layer."""
+"""Entry points into the ticket-exchange-based base layer implementation."""
# interfaces is referenced from specification in this module.
-from grpc.framework.base.packets import _ends
-from grpc.framework.base.packets import interfaces # pylint: disable=unused-import
+from grpc.framework.base import _ends
+from grpc.framework.base import interfaces # pylint: disable=unused-import
-def front(work_pool, transmission_pool, utility_pool):
- """Factory function for creating interfaces.Fronts.
+def front_link(work_pool, transmission_pool, utility_pool):
+ """Factory function for creating interfaces.FrontLinks.
Args:
- work_pool: A thread pool to be used for doing work within the created Front
- object.
- transmission_pool: A thread pool to be used within the created Front object
- for transmitting values to some Back object.
- utility_pool: A thread pool to be used within the created Front object for
- utility tasks.
+ work_pool: A thread pool to be used for doing work within the created
+ FrontLink object.
+ transmission_pool: A thread pool to be used within the created FrontLink
+ object for transmitting values to a joined RearLink object.
+ utility_pool: A thread pool to be used within the created FrontLink object
+ for utility tasks.
Returns:
- An interfaces.Front.
+ An interfaces.FrontLink.
"""
- return _ends.Front(work_pool, transmission_pool, utility_pool)
+ return _ends.FrontLink(work_pool, transmission_pool, utility_pool)
-def back(
+def back_link(
servicer, work_pool, transmission_pool, utility_pool, default_timeout,
maximum_timeout):
- """Factory function for creating interfaces.Backs.
+ """Factory function for creating interfaces.BackLinks.
Args:
servicer: An interfaces.Servicer for servicing operations.
- work_pool: A thread pool to be used for doing work within the created Back
- object.
- transmission_pool: A thread pool to be used within the created Back object
- for transmitting values to some Front object.
- utility_pool: A thread pool to be used within the created Back object for
- utility tasks.
+ work_pool: A thread pool to be used for doing work within the created
+ BackLink object.
+ transmission_pool: A thread pool to be used within the created BackLink
+ object for transmitting values to a joined ForeLink object.
+ utility_pool: A thread pool to be used within the created BackLink object
+ for utility tasks.
default_timeout: A length of time in seconds to be used as the default
time alloted for a single operation.
maximum_timeout: A length of time in seconds to be used as the maximum
time alloted for a single operation.
Returns:
- An interfaces.Back.
+ An interfaces.BackLink.
"""
- return _ends.Back(
+ return _ends.BackLink(
servicer, work_pool, transmission_pool, utility_pool, default_timeout,
maximum_timeout)
diff --git a/src/python/src/grpc/framework/base/packets/implementations_test.py b/src/python/src/grpc/framework/base/implementations_test.py
index e5855700c7..11e49caf75 100644
--- a/src/python/src/grpc/framework/base/packets/implementations_test.py
+++ b/src/python/src/grpc/framework/base/implementations_test.py
@@ -27,13 +27,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Tests for _framework.base.packets.implementations."""
+"""Tests for grpc.framework.base.implementations."""
import unittest
+from grpc.framework.base import implementations
from grpc.framework.base import interfaces_test_case
from grpc.framework.base import util
-from grpc.framework.base.packets import implementations
from grpc.framework.foundation import logging_pool
POOL_MAX_WORKERS = 100
@@ -54,10 +54,10 @@ class ImplementationsTest(
self.back_utility_pool = logging_pool.pool(POOL_MAX_WORKERS)
self.test_pool = logging_pool.pool(POOL_MAX_WORKERS)
self.test_servicer = interfaces_test_case.TestServicer(self.test_pool)
- self.front = implementations.front(
+ self.front = implementations.front_link(
self.front_work_pool, self.front_transmission_pool,
self.front_utility_pool)
- self.back = implementations.back(
+ self.back = implementations.back_link(
self.test_servicer, self.back_work_pool, self.back_transmission_pool,
self.back_utility_pool, DEFAULT_TIMEOUT, MAXIMUM_TIMEOUT)
self.front.join_rear_link(self.back)
diff --git a/src/python/src/grpc/framework/base/packets/in_memory.py b/src/python/src/grpc/framework/base/in_memory.py
index 453fd3b38a..c92d0bc663 100644
--- a/src/python/src/grpc/framework/base/packets/in_memory.py
+++ b/src/python/src/grpc/framework/base/in_memory.py
@@ -27,12 +27,12 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Entry points into the packet-exchange-based implementation the base layer."""
+"""In-memory implementations of base layer interfaces."""
import threading
-from grpc.framework.base.packets import _constants
-from grpc.framework.base.packets import interfaces
+from grpc.framework.base import _constants
+from grpc.framework.base import interfaces
from grpc.framework.foundation import callable_util
diff --git a/src/python/src/grpc/framework/base/interfaces.py b/src/python/src/grpc/framework/base/interfaces.py
index ed43b253fe..e22c10d975 100644
--- a/src/python/src/grpc/framework/base/interfaces.py
+++ b/src/python/src/grpc/framework/base/interfaces.py
@@ -30,6 +30,7 @@
"""Interfaces defined and used by the base layer of RPC Framework."""
import abc
+import collections
import enum
# stream is referenced from specification in this module.
@@ -230,3 +231,133 @@ class Front(End):
class Back(End):
"""Serverish objects that perform the work of operations."""
__metaclass__ = abc.ABCMeta
+
+
+class FrontToBackTicket(
+ collections.namedtuple(
+ 'FrontToBackTicket',
+ ['operation_id', 'sequence_number', 'kind', 'name', 'subscription',
+ 'trace_id', 'payload', 'timeout'])):
+ """A sum type for all values sent from a front to a back.
+
+ Attributes:
+ operation_id: A unique-with-respect-to-equality hashable object identifying
+ a particular operation.
+ sequence_number: A zero-indexed integer sequence number identifying the
+ ticket's place among all the tickets sent from front to back for this
+ particular operation. Must be zero if kind is Kind.COMMENCEMENT or
+ Kind.ENTIRE. Must be positive for any other kind.
+ kind: A Kind value describing the overall kind of ticket.
+ name: The name of an operation. Must be present if kind is Kind.COMMENCEMENT
+ or Kind.ENTIRE. Must be None for any other kind.
+ subscription: An ServicedSubscription.Kind value describing the interest
+ the front has in tickets sent from the back. Must be present if
+ kind is Kind.COMMENCEMENT or Kind.ENTIRE. Must be None for any other kind.
+ trace_id: A uuid.UUID identifying a set of related operations to which this
+ operation belongs. May be None.
+ payload: A customer payload object. Must be present if kind is
+ Kind.CONTINUATION. Must be None if kind is Kind.CANCELLATION. May be None
+ for any other kind.
+ timeout: An optional length of time (measured from the beginning of the
+ operation) to allow for the entire operation. If None, a default value on
+ the back will be used. If present and excessively large, the back may
+ limit the operation to a smaller duration of its choice. May be present
+ for any ticket kind; setting a value on a later ticket allows fronts
+ to request time extensions (or even time reductions!) on in-progress
+ operations.
+ """
+
+ @enum.unique
+ class Kind(enum.Enum):
+ """Identifies the overall kind of a FrontToBackTicket."""
+
+ COMMENCEMENT = 'commencement'
+ CONTINUATION = 'continuation'
+ COMPLETION = 'completion'
+ ENTIRE = 'entire'
+ CANCELLATION = 'cancellation'
+ EXPIRATION = 'expiration'
+ SERVICER_FAILURE = 'servicer failure'
+ SERVICED_FAILURE = 'serviced failure'
+ RECEPTION_FAILURE = 'reception failure'
+ TRANSMISSION_FAILURE = 'transmission failure'
+
+
+class BackToFrontTicket(
+ collections.namedtuple(
+ 'BackToFrontTicket',
+ ['operation_id', 'sequence_number', 'kind', 'payload'])):
+ """A sum type for all values sent from a back to a front.
+
+ Attributes:
+ operation_id: A unique-with-respect-to-equality hashable object identifying
+ a particular operation.
+ sequence_number: A zero-indexed integer sequence number identifying the
+ ticket's place among all the tickets sent from back to front for this
+ particular operation.
+ kind: A Kind value describing the overall kind of ticket.
+ payload: A customer payload object. Must be present if kind is
+ Kind.CONTINUATION. May be None if kind is Kind.COMPLETION. Must be None
+ otherwise.
+ """
+
+ @enum.unique
+ class Kind(enum.Enum):
+ """Identifies the overall kind of a BackToFrontTicket."""
+
+ CONTINUATION = 'continuation'
+ COMPLETION = 'completion'
+ CANCELLATION = 'cancellation'
+ EXPIRATION = 'expiration'
+ SERVICER_FAILURE = 'servicer failure'
+ SERVICED_FAILURE = 'serviced failure'
+ RECEPTION_FAILURE = 'reception failure'
+ TRANSMISSION_FAILURE = 'transmission failure'
+
+
+class ForeLink(object):
+ """Accepts back-to-front tickets and emits front-to-back tickets."""
+ __metaclass__ = abc.ABCMeta
+
+ @abc.abstractmethod
+ def accept_back_to_front_ticket(self, ticket):
+ """Accept a BackToFrontTicket.
+
+ Args:
+ ticket: Any BackToFrontTicket.
+ """
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def join_rear_link(self, rear_link):
+ """Mates this object with a peer with which it will exchange tickets."""
+ raise NotImplementedError()
+
+
+class RearLink(object):
+ """Accepts front-to-back tickets and emits back-to-front tickets."""
+ __metaclass__ = abc.ABCMeta
+
+ @abc.abstractmethod
+ def accept_front_to_back_ticket(self, ticket):
+ """Accepts a FrontToBackTicket.
+
+ Args:
+ ticket: Any FrontToBackTicket.
+ """
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def join_fore_link(self, fore_link):
+ """Mates this object with a peer with which it will exchange tickets."""
+ raise NotImplementedError()
+
+
+class FrontLink(Front, ForeLink):
+ """Clientish objects that operate by sending and receiving tickets."""
+ __metaclass__ = abc.ABCMeta
+
+
+class BackLink(Back, RearLink):
+ """Serverish objects that operate by sending and receiving tickets."""
+ __metaclass__ = abc.ABCMeta
diff --git a/src/python/src/grpc/framework/base/interfaces_test_case.py b/src/python/src/grpc/framework/base/interfaces_test_case.py
index b86011c449..dec10c2924 100644
--- a/src/python/src/grpc/framework/base/interfaces_test_case.py
+++ b/src/python/src/grpc/framework/base/interfaces_test_case.py
@@ -164,7 +164,7 @@ class FrontAndBackTest(object):
# pylint: disable=invalid-name
def testSimplestCall(self):
- """Tests the absolute simplest call - a one-packet fire-and-forget."""
+ """Tests the absolute simplest call - a one-ticket fire-and-forget."""
self.front.operate(
SYNCHRONOUS_ECHO, None, True, SMALL_TIMEOUT,
util.none_serviced_subscription(), 'test trace ID')
@@ -175,25 +175,25 @@ class FrontAndBackTest(object):
# Assuming nothing really pathological (such as pauses on the order of
# SMALL_TIMEOUT interfering with this test) there are a two different ways
# the back could have experienced execution up to this point:
- # (1) The packet is still either in the front waiting to be transmitted
+ # (1) The ticket is still either in the front waiting to be transmitted
# or is somewhere on the link between the front and the back. The back has
# no idea that this test is even happening. Calling wait_for_idle on it
# would do no good because in this case the back is idle and the call would
- # return with the packet bound for it still in the front or on the link.
+ # return with the ticket bound for it still in the front or on the link.
back_operation_stats = self.back.operation_stats()
first_back_possibility = EMPTY_OUTCOME_DICT
- # (2) The packet arrived at the back and the back completed the operation.
+ # (2) The ticket arrived at the back and the back completed the operation.
second_back_possibility = dict(EMPTY_OUTCOME_DICT)
second_back_possibility[interfaces.Outcome.COMPLETED] = 1
self.assertIn(
back_operation_stats, (first_back_possibility, second_back_possibility))
- # It's true that if the packet had arrived at the back and the back had
+ # It's true that if the ticket had arrived at the back and the back had
# begun processing that wait_for_idle could hold test execution until the
# back completed the operation, but that doesn't really collapse the
# possibility space down to one solution.
def testEntireEcho(self):
- """Tests a very simple one-packet-each-way round-trip."""
+ """Tests a very simple one-ticket-each-way round-trip."""
test_payload = 'test payload'
test_consumer = stream_testing.TestConsumer()
subscription = util.full_serviced_subscription(
@@ -212,7 +212,7 @@ class FrontAndBackTest(object):
self.assertListEqual([(test_payload, True)], test_consumer.calls)
def testBidirectionalStreamingEcho(self):
- """Tests sending multiple packets each way."""
+ """Tests sending multiple tickets each way."""
test_payload_template = 'test_payload: %03d'
test_payloads = [test_payload_template % i for i in range(STREAM_LENGTH)]
test_consumer = stream_testing.TestConsumer()
@@ -255,16 +255,16 @@ class FrontAndBackTest(object):
# Assuming nothing really pathological (such as pauses on the order of
# SMALL_TIMEOUT interfering with this test) there are a two different ways
# the back could have experienced execution up to this point:
- # (1) Both packets are still either in the front waiting to be transmitted
+ # (1) Both tickets are still either in the front waiting to be transmitted
# or are somewhere on the link between the front and the back. The back has
# no idea that this test is even happening. Calling wait_for_idle on it
# would do no good because in this case the back is idle and the call would
- # return with the packets bound for it still in the front or on the link.
+ # return with the tickets bound for it still in the front or on the link.
back_operation_stats = self.back.operation_stats()
first_back_possibility = EMPTY_OUTCOME_DICT
- # (2) Both packets arrived within SMALL_TIMEOUT of one another at the back.
- # The back started processing based on the first packet and then stopped
- # upon receiving the cancellation packet.
+ # (2) Both tickets arrived within SMALL_TIMEOUT of one another at the back.
+ # The back started processing based on the first ticket and then stopped
+ # upon receiving the cancellation ticket.
second_back_possibility = dict(EMPTY_OUTCOME_DICT)
second_back_possibility[interfaces.Outcome.CANCELLED] = 1
self.assertIn(
diff --git a/src/python/src/grpc/framework/base/packets/null.py b/src/python/src/grpc/framework/base/null.py
index 5a2121243b..1e30d4557b 100644
--- a/src/python/src/grpc/framework/base/packets/null.py
+++ b/src/python/src/grpc/framework/base/null.py
@@ -29,7 +29,7 @@
"""Null links that ignore tickets passed to them."""
-from grpc.framework.base.packets import interfaces
+from grpc.framework.base import interfaces
class _NullForeLink(interfaces.ForeLink):
diff --git a/src/python/src/grpc/framework/base/packets/__init__.py b/src/python/src/grpc/framework/base/packets/__init__.py
deleted file mode 100644
index 7086519106..0000000000
--- a/src/python/src/grpc/framework/base/packets/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
diff --git a/src/python/src/grpc/framework/base/packets/interfaces.py b/src/python/src/grpc/framework/base/packets/interfaces.py
deleted file mode 100644
index 7c48956ba5..0000000000
--- a/src/python/src/grpc/framework/base/packets/interfaces.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces defined and used by the base layer of RPC Framework."""
-
-import abc
-
-# packets is referenced from specifications in this module.
-from grpc.framework.base import interfaces
-from grpc.framework.base.packets import packets # pylint: disable=unused-import
-
-
-class ForeLink(object):
- """Accepts back-to-front tickets and emits front-to-back tickets."""
- __metaclass__ = abc.ABCMeta
-
- @abc.abstractmethod
- def accept_back_to_front_ticket(self, ticket):
- """Accept a packets.BackToFrontPacket.
-
- Args:
- ticket: Any packets.BackToFrontPacket.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def join_rear_link(self, rear_link):
- """Mates this object with a peer with which it will exchange tickets."""
- raise NotImplementedError()
-
-
-class RearLink(object):
- """Accepts front-to-back tickets and emits back-to-front tickets."""
- __metaclass__ = abc.ABCMeta
-
- @abc.abstractmethod
- def accept_front_to_back_ticket(self, ticket):
- """Accepts a packets.FrontToBackPacket.
-
- Args:
- ticket: Any packets.FrontToBackPacket.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def join_fore_link(self, fore_link):
- """Mates this object with a peer with which it will exchange tickets."""
- raise NotImplementedError()
-
-
-class Front(ForeLink, interfaces.Front):
- """Clientish objects that operate by sending and receiving tickets."""
- __metaclass__ = abc.ABCMeta
-
-
-class Back(RearLink, interfaces.Back):
- """Serverish objects that operate by sending and receiving tickets."""
- __metaclass__ = abc.ABCMeta
diff --git a/src/python/src/grpc/framework/base/packets/packets.py b/src/python/src/grpc/framework/base/packets/packets.py
deleted file mode 100644
index 1b140481f0..0000000000
--- a/src/python/src/grpc/framework/base/packets/packets.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Packets used between fronts and backs."""
-
-import collections
-import enum
-
-# interfaces is referenced from specifications in this module.
-from grpc.framework.base import interfaces # pylint: disable=unused-import
-
-
-class FrontToBackPacket(
- collections.namedtuple(
- 'FrontToBackPacket',
- ['operation_id', 'sequence_number', 'kind', 'name', 'subscription',
- 'trace_id', 'payload', 'timeout'])):
- """A sum type for all values sent from a front to a back.
-
- Attributes:
- operation_id: A unique-with-respect-to-equality hashable object identifying
- a particular operation.
- sequence_number: A zero-indexed integer sequence number identifying the
- packet's place among all the packets sent from front to back for this
- particular operation. Must be zero if kind is Kind.COMMENCEMENT or
- Kind.ENTIRE. Must be positive for any other kind.
- kind: A Kind value describing the overall kind of ticket.
- name: The name of an operation. Must be present if kind is Kind.COMMENCEMENT
- or Kind.ENTIRE. Must be None for any other kind.
- subscription: An interfaces.ServicedSubscription.Kind value describing the
- interest the front has in packets sent from the back. Must be present if
- kind is Kind.COMMENCEMENT or Kind.ENTIRE. Must be None for any other kind.
- trace_id: A uuid.UUID identifying a set of related operations to which this
- operation belongs. May be None.
- payload: A customer payload object. Must be present if kind is
- Kind.CONTINUATION. Must be None if kind is Kind.CANCELLATION. May be None
- for any other kind.
- timeout: An optional length of time (measured from the beginning of the
- operation) to allow for the entire operation. If None, a default value on
- the back will be used. If present and excessively large, the back may
- limit the operation to a smaller duration of its choice. May be present
- for any ticket kind; setting a value on a later ticket allows fronts
- to request time extensions (or even time reductions!) on in-progress
- operations.
- """
-
- @enum.unique
- class Kind(enum.Enum):
- """Identifies the overall kind of a FrontToBackPacket."""
-
- COMMENCEMENT = 'commencement'
- CONTINUATION = 'continuation'
- COMPLETION = 'completion'
- ENTIRE = 'entire'
- CANCELLATION = 'cancellation'
- EXPIRATION = 'expiration'
- SERVICER_FAILURE = 'servicer failure'
- SERVICED_FAILURE = 'serviced failure'
- RECEPTION_FAILURE = 'reception failure'
- TRANSMISSION_FAILURE = 'transmission failure'
-
-
-class BackToFrontPacket(
- collections.namedtuple(
- 'BackToFrontPacket',
- ['operation_id', 'sequence_number', 'kind', 'payload'])):
- """A sum type for all values sent from a back to a front.
-
- Attributes:
- operation_id: A unique-with-respect-to-equality hashable object identifying
- a particular operation.
- sequence_number: A zero-indexed integer sequence number identifying the
- packet's place among all the packets sent from back to front for this
- particular operation.
- kind: A Kind value describing the overall kind of ticket.
- payload: A customer payload object. Must be present if kind is
- Kind.CONTINUATION. May be None if kind is Kind.COMPLETION. Must be None
- otherwise.
- """
-
- @enum.unique
- class Kind(enum.Enum):
- """Identifies the overall kind of a BackToFrontPacket."""
-
- CONTINUATION = 'continuation'
- COMPLETION = 'completion'
- CANCELLATION = 'cancellation'
- EXPIRATION = 'expiration'
- SERVICER_FAILURE = 'servicer failure'
- SERVICED_FAILURE = 'serviced failure'
- RECEPTION_FAILURE = 'reception failure'
- TRANSMISSION_FAILURE = 'transmission failure'
diff --git a/src/python/src/grpc/framework/face/demonstration.py b/src/python/src/grpc/framework/face/demonstration.py
index d922f6e5ef..eabeac4569 100644
--- a/src/python/src/grpc/framework/face/demonstration.py
+++ b/src/python/src/grpc/framework/face/demonstration.py
@@ -30,7 +30,7 @@
"""Demonstration-suitable implementation of the face layer of RPC Framework."""
from grpc.framework.base import util as _base_util
-from grpc.framework.base.packets import implementations as _tickets_implementations
+from grpc.framework.base import implementations as _base_implementations
from grpc.framework.face import implementations
from grpc.framework.foundation import logging_pool
@@ -105,9 +105,9 @@ def server_and_stub(
event_stream_in_stream_out_methods=event_stream_in_stream_out_methods,
multi_method=multi_method)
- front = _tickets_implementations.front(
+ front = _base_implementations.front_link(
front_work_pool, front_transmission_pool, front_utility_pool)
- back = _tickets_implementations.back(
+ back = _base_implementations.back_link(
servicer, back_work_pool, back_transmission_pool, back_utility_pool,
default_timeout, _MAXIMUM_TIMEOUT)
front.join_rear_link(back)
diff --git a/src/python/src/grpc/framework/face/testing/base_util.py b/src/python/src/grpc/framework/face/testing/base_util.py
index 7872a6b9e9..151d0ef793 100644
--- a/src/python/src/grpc/framework/face/testing/base_util.py
+++ b/src/python/src/grpc/framework/face/testing/base_util.py
@@ -33,9 +33,9 @@ import abc
# interfaces is referenced from specification in this module.
from grpc.framework.base import util as _base_util
-from grpc.framework.base.packets import implementations
-from grpc.framework.base.packets import in_memory
-from grpc.framework.base.packets import interfaces # pylint: disable=unused-import
+from grpc.framework.base import implementations
+from grpc.framework.base import in_memory
+from grpc.framework.base import interfaces # pylint: disable=unused-import
from grpc.framework.foundation import logging_pool
_POOL_SIZE_LIMIT = 20
@@ -89,9 +89,9 @@ def linked_pair(servicer, default_timeout):
back_work_pool, back_transmission_pool, back_utility_pool)
link = in_memory.Link(link_pool)
- front = implementations.front(
+ front = implementations.front_link(
front_work_pool, front_transmission_pool, front_utility_pool)
- back = implementations.back(
+ back = implementations.back_link(
servicer, back_work_pool, back_transmission_pool, back_utility_pool,
default_timeout, _MAXIMUM_TIMEOUT)
front.join_rear_link(link)
diff --git a/src/python/src/grpc/framework/foundation/_logging_pool_test.py b/src/python/src/grpc/framework/foundation/_logging_pool_test.py
index 11463a8bec..c92cf8c0ab 100644
--- a/src/python/src/grpc/framework/foundation/_logging_pool_test.py
+++ b/src/python/src/grpc/framework/foundation/_logging_pool_test.py
@@ -27,7 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Tests for _framework.foundation.logging_pool."""
+"""Tests for grpc.framework.foundation.logging_pool."""
import unittest
diff --git a/src/python/src/setup.py b/src/python/src/setup.py
index 7d93aa7ded..63731212c7 100644
--- a/src/python/src/setup.py
+++ b/src/python/src/setup.py
@@ -65,7 +65,6 @@ _PACKAGES = (
'grpc.early_adopter',
'grpc.framework',
'grpc.framework.base',
- 'grpc.framework.base.packets',
'grpc.framework.common',
'grpc.framework.face',
'grpc.framework.face.testing',