示例#1
0
 def __call__(self,
              request_iterator,
              timeout=None,
              metadata=None,
              credentials=None,
              wait_for_ready=None,
              compression=None):
     deadline = _deadline(timeout)
     state = _RPCState(_STREAM_STREAM_INITIAL_DUE, None, None, None, None)
     initial_metadata_flags = _InitialMetadataFlags().with_wait_for_ready(
         wait_for_ready)
     augmented_metadata = _compression.augment_metadata(
         metadata, compression)
     operationses = (
         (
             cygrpc.SendInitialMetadataOperation(augmented_metadata,
                                                 initial_metadata_flags),
             cygrpc.ReceiveStatusOnClientOperation(_EMPTY_FLAGS),
         ),
         (cygrpc.ReceiveInitialMetadataOperation(_EMPTY_FLAGS), ),
     )
     event_handler = _event_handler(state, self._response_deserializer)
     call = self._channel.managed_call(
         cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS, self._method,
         None, _determine_deadline(deadline), augmented_metadata,
         None if credentials is None else credentials._credentials,
         operationses, event_handler, self._context)
     _consume_request_iterator(request_iterator, state, call,
                               self._request_serializer, event_handler)
     return _MultiThreadedRendezvous(state, call,
                                     self._response_deserializer, deadline)
示例#2
0
 def future(self,
            request_iterator,
            timeout=None,
            metadata=None,
            credentials=None,
            wait_for_ready=None,
            compression=None):
     deadline = _deadline(timeout)
     state = _RPCState(_STREAM_UNARY_INITIAL_DUE, None, None, None, None)
     event_handler = _event_handler(state, self._response_deserializer)
     initial_metadata_flags = _InitialMetadataFlags().with_wait_for_ready(
         wait_for_ready)
     augmented_metadata = _compression.augment_metadata(
         metadata, compression)
     call = self._channel.managed_call(
         cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS, self._method,
         None, deadline, augmented_metadata,
         None if credentials is None else credentials._credentials,
         _stream_unary_invocation_operationses(metadata,
                                               initial_metadata_flags),
         event_handler, self._context)
     _consume_request_iterator(request_iterator, state, call,
                               self._request_serializer, event_handler)
     return _MultiThreadedRendezvous(state, call,
                                     self._response_deserializer, deadline)
示例#3
0
 def __call__(self,
              request_iterator,
              timeout=None,
              metadata=None,
              credentials=None):
     deadline, deadline_timespec = _deadline(timeout)
     state = _RPCState(_STREAM_STREAM_INITIAL_DUE, None, None, None, None)
     channel = self._channel.get_channel()
     call, drive_call = channel.managed_call(None, 0, self._method, None,
                                             deadline_timespec)
     if credentials is not None:
         call.set_credentials(credentials._credentials)
     event_handler = _event_handler(state, call,
                                    self._response_deserializer)
     with state.condition:
         call.start_client_batch(
             cygrpc.Operations(
                 (cygrpc.operation_receive_initial_metadata(_EMPTY_FLAGS),
                  )), event_handler)
         operations = (
             cygrpc.operation_send_initial_metadata(
                 _common.to_cygrpc_metadata(metadata), _EMPTY_FLAGS),
             cygrpc.operation_receive_status_on_client(_EMPTY_FLAGS),
         )
         call_error = call.start_client_batch(cygrpc.Operations(operations),
                                              event_handler)
         if call_error != cygrpc.CallError.ok:
             _call_error_set_RPCstate(state, call_error, metadata)
             return _Rendezvous(state, None, None, deadline)
         drive_call()
         _consume_request_iterator(request_iterator, state, call,
                                   self._request_serializer)
     return _Rendezvous(state, call, self._response_deserializer, deadline)
示例#4
0
 def future(self,
            request,
            timeout=None,
            metadata=None,
            credentials=None,
            wait_for_ready=None,
            compression=None):
     state, operations, deadline, rendezvous = self._prepare(
         request, timeout, metadata, wait_for_ready, compression)
     if state is None:
         raise rendezvous
     else:
         event_handler = _event_handler(state, self._response_deserializer)
         call = self._channel.managed_call(
             cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS,
             self._method, None, deadline, metadata,
             None if credentials is None else credentials._credentials,
             (operations, ), event_handler, self._context)
         return _MultiThreadedRendezvous(state, call,
                                         self._response_deserializer,
                                         deadline)
示例#5
0
    def __call__(self,
                 request,
                 timeout=None,
                 metadata=None,
                 credentials=None,
                 wait_for_ready=None,
                 compression=None):
        deadline, serialized_request, rendezvous = _start_unary_request(
            request, timeout, self._request_serializer)
        initial_metadata_flags = _InitialMetadataFlags().with_wait_for_ready(
            wait_for_ready)
        if serialized_request is None:
            raise rendezvous
        else:
            augmented_metadata = _compression.augment_metadata(
                metadata, compression)
            state = _RPCState(_UNARY_STREAM_INITIAL_DUE, None, None, None,
                              None)
            operationses = (
                (
                    cygrpc.SendInitialMetadataOperation(
                        augmented_metadata, initial_metadata_flags),
                    cygrpc.SendMessageOperation(serialized_request,
                                                _EMPTY_FLAGS),
                    cygrpc.SendCloseFromClientOperation(_EMPTY_FLAGS),
                    cygrpc.ReceiveStatusOnClientOperation(_EMPTY_FLAGS),
                ),
                (cygrpc.ReceiveInitialMetadataOperation(_EMPTY_FLAGS), ),
            )

            call = self._channel.managed_call(
                cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS,
                self._method, None, _determine_deadline(deadline), metadata,
                None if credentials is None else credentials._credentials,
                operationses, _event_handler(state,
                                             self._response_deserializer),
                self._context)
            return _MultiThreadedRendezvous(state, call,
                                            self._response_deserializer,
                                            deadline)
示例#6
0
    def future(self, request, timeout=None, metadata=None, credentials=None):
        state, operations, deadline, deadline_timespec, rendezvous = self._prepare(
            request, timeout, metadata)
        if rendezvous:
            return rendezvous
        else:
            channel = self._channel.get_channel()
            call, drive_call = channel.managed_call(None, 0, self._method,
                                                    None, deadline_timespec)

            if credentials is not None:
                call.set_credentials(credentials._credentials)

            event_handler = _event_handler(state, call,
                                           self._response_deserializer)
            with state.condition:
                call_error = call.start_client_batch(
                    cygrpc.Operations(operations), event_handler)
                if call_error != cygrpc.CallError.ok:
                    _call_error_set_RPCstate(state, call_error, metadata)
                    return _Rendezvous(state, None, None, deadline)
                drive_call()
            return _Rendezvous(state, call, self._response_deserializer,
                               deadline)