Grpc-XS

 view release on metacpan or  search on metacpan

lib/Grpc/Client/BaseStub.pm  view on Meta::CPAN

	my $metadata    = $param{metadata} || {};
	my $options     = $param{options} || {};
	$options->{timeout} = $options->{timeout} || $self->{_timeout};

	my $call = new Grpc::Client::ClientStreamingCall(
																			$self->{_channel},
                                      $method,
                                      $serialize,
                                      $deserialize,
                        			        $options );
  my $jwt_aud_uri = $self->_get_jwt_aud_uri($method);

	if (defined($self->{_update_metadata})) {
		$metadata = $self->{_update_metadata}($metadata,$jwt_aud_uri);  ## TODO: PORT
  }
  $metadata = $self->_validate_and_normalize_metadata($metadata);
  $call->start($metadata, $options);

  return $call;
}

## Call a remote method that takes a single argument and returns a stream of
## responses.
##
## @param string $method The name of the method to call
## @param $argument The argument to the method
## @param callable $serialize   A function that serializes the request
## @param callable $deserialize A function that deserializes the responses
## @param array    $metadata    A metadata map to send to the server
##
## @return ServerStreamingSurfaceActiveCall The active call object

sub _serverStreamRequest {
	my $self  = shift;
	my %param = @_;
	my $method      = $param{method};
	my $argument    = $param{argument};
	my $serialize   = $param{serialize};
	my $deserialize = $param{deserialize};
	my $metadata    = $param{metadata} || {};
	my $options     = $param{options} || {};
	$options->{timeout} = $options->{timeout} || $self->{_timeout};

  my $call = new Grpc::Client::ServerStreamingCall(
																			$self->{_channel},
                                      $method,
                                      $serialize,
                                      $deserialize,
                        			        $options );
	my $jwt_aud_uri = $self->_get_jwt_aud_uri($method);

	if (defined($self->{_update_metadata})) {
		$metadata = $self->{_update_metadata}($metadata,$jwt_aud_uri);  ## TODO: PORT
  }
  $metadata = $self->_validate_and_normalize_metadata($metadata);
  $call->start($argument, $metadata, $options);

  return $call;
}

## Call a remote method with messages streaming in both directions.
##
## @param string   $method      The name of the method to call
## @param callable $serialize   A function that serializes the request
## @param callable $deserialize A function that deserializes the responses
## @param array    $metadata    A metadata map to send to the server
##
## @return BidiStreamingSurfaceActiveCall The active call object

sub _bidiRequest {
	my $self = shift;
	my %param = @_;
	my $method      = $param{method};
	my $serialize   = $param{serialize};
	my $deserialize = $param{deserialize};
	my $metadata    = $param{metadata} || {};
	my $options     = $param{options} || {};
	$options->{timeout} = $options->{timeout} || $self->{_timeout};

	my $call = new Grpc::Client::BidiStreamingCall(
																		$self->{_channel},
                                  	$method,
                                    $serialize,
                                    $deserialize,
                        			      $options );
  my $jwt_aud_uri = $self->_get_jwt_aud_uri($method);

	if (defined($self->{_update_metadata})) {
    $metadata = $self->{_update_metadata}($metadata,$jwt_aud_uri);  ## TODO: PORT
  }
  $metadata = $self->_validate_and_normalize_metadata($metadata);
  $call->start($metadata, $options);

  return $call;
}

1;



( run in 1.015 second using v1.01-cache-2.11-cpan-140bd7fdf52 )