コード例 #1
0
ファイル: _transmission.py プロジェクト: wirlfly/grpc
 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_TICKET_KIND[outcome]
         return interfaces.BackToFrontTicket(operation_id, sequence_number,
                                             kind, None)
コード例 #2
0
ファイル: _transmission.py プロジェクト: wirlfly/grpc
 def ticketize(self, operation_id, sequence_number, payload, complete):
     """See _Ticketizer.ticketize for specification."""
     if complete:
         kind = interfaces.BackToFrontTicket.Kind.COMPLETION
     else:
         kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
     return interfaces.BackToFrontTicket(operation_id, sequence_number,
                                         kind, payload)
コード例 #3
0
ファイル: _links_test.py プロジェクト: sidrakesh93/grpc
 def rear_action(front_to_back_ticket, fore_link):
     if front_to_back_ticket.kind in (
             interfaces.FrontToBackTicket.Kind.COMPLETION,
             interfaces.FrontToBackTicket.Kind.ENTIRE):
         back_to_front_ticket = interfaces.BackToFrontTicket(
             front_to_back_ticket.operation_id, 0,
             interfaces.BackToFrontTicket.Kind.COMPLETION, None)
         fore_link.accept_back_to_front_ticket(back_to_front_ticket)
コード例 #4
0
 def _on_complete_event(self, operation_id, event, rpc_state):
   if not event.complete_accepted:
     logging.error('RPC complete not accepted! Event: %s', (event,))
     rpc_state.active = False
     ticket = base_interfaces.BackToFrontTicket(
         operation_id, rpc_state.common.sequence_number,
         base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
     rpc_state.common.sequence_number += 1
     self._fore_link.accept_back_to_front_ticket(ticket)
コード例 #5
0
  def _on_read_event(self, operation_id, event, rpc_state):
    if event.bytes is not None:
      rpc_state.call.read(operation_id)
      rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)

      ticket = base_interfaces.BackToFrontTicket(
          operation_id, rpc_state.common.sequence_number,
          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)
コード例 #6
0
 def _on_finish_event(self, operation_id, event, rpc_state):
   """Handle termination of an RPC."""
   # TODO(nathaniel): Cover all statuses.
   if event.status.code is _low.Code.OK:
     kind = base_interfaces.BackToFrontTicket.Kind.COMPLETION
   elif event.status.code is _low.Code.CANCELLED:
     kind = base_interfaces.BackToFrontTicket.Kind.CANCELLATION
   elif event.status.code is _low.Code.EXPIRED:
     kind = base_interfaces.BackToFrontTicket.Kind.EXPIRATION
   else:
     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)
コード例 #7
0
ファイル: _links_test.py プロジェクト: sidrakesh93/grpc
 def rear_action(front_to_back_ticket, fore_link):
     if front_to_back_ticket.payload is None:
         payload = None
     else:
         payload = test_back_to_front_datum
     terminal = front_to_back_ticket.kind in (
         interfaces.FrontToBackTicket.Kind.COMPLETION,
         interfaces.FrontToBackTicket.Kind.ENTIRE)
     if payload is not None or terminal:
         if terminal:
             kind = interfaces.BackToFrontTicket.Kind.COMPLETION
         else:
             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
         fore_link.accept_back_to_front_ticket(back_to_front_ticket)
コード例 #8
0
ファイル: _links_test.py プロジェクト: wfarr/grpc
 def rear_action(front_to_back_ticket, fore_link):
   with rear_lock:
     if front_to_back_ticket.payload is not None:
       response = scenario.response_for_request(front_to_back_ticket.payload)
     else:
       response = None
   terminal = front_to_back_ticket.kind in (
       interfaces.FrontToBackTicket.Kind.COMPLETION,
       interfaces.FrontToBackTicket.Kind.ENTIRE)
   if response is not None or terminal:
     if terminal:
       kind = interfaces.BackToFrontTicket.Kind.COMPLETION
     else:
       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
     fore_link.accept_back_to_front_ticket(back_to_front_ticket)
コード例 #9
0
 def _on_write_event(self, operation_id, event, rpc_state):
   if event.write_accepted:
     if rpc_state.common.write.pending:
       rpc_state.call.write(
           rpc_state.common.write.pending.pop(0), operation_id)
       rpc_state.outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
     elif rpc_state.common.write.high is _common.HighWrite.CLOSED:
       rpc_state.call.complete(operation_id)
       rpc_state.outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
       rpc_state.common.write.low = _LowWrite.CLOSED
     else:
       rpc_state.common.write.low = _LowWrite.OPEN
   else:
     logging.error('RPC write not accepted! Event: %s', (event,))
     rpc_state.active = False
     ticket = base_interfaces.BackToFrontTicket(
         operation_id, rpc_state.common.sequence_number,
         base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
     rpc_state.common.sequence_number += 1
     self._fore_link.accept_back_to_front_ticket(ticket)