Protocol::GRPCSourceProtocolGRPCError

class Error

Base exception class for gRPC errors

Definitions

def initialize(status_code, message = nil, details: nil, metadata: {})

Signature

parameter status_code Integer

gRPC status code

parameter message String | Nil

Error message

parameter details Object | Nil

Error details

parameter metadata Hash

Custom metadata

Implementation

def initialize(status_code, message = nil, details: nil, metadata: {})
	@status_code = status_code
	@details = details
	@metadata = metadata
	super(message || Status::DESCRIPTIONS[status_code])
end

def self.error_class_for_status(status_code)

Map status code to error class

Signature

parameter status_code Integer

gRPC status code

returns Class

Error class for the status code

Implementation

def self.error_class_for_status(status_code)
	case status_code
	when Status::CANCELLED then Cancelled
	when Status::INVALID_ARGUMENT then InvalidArgument
	when Status::DEADLINE_EXCEEDED then DeadlineExceeded
	when Status::NOT_FOUND then NotFound
	when Status::INTERNAL then Internal
	when Status::UNAVAILABLE then Unavailable
	when Status::UNAUTHENTICATED then Unauthenticated
	else
		Error
	end
end

def self.for(status_code, message = nil, metadata: {})

Create an appropriate error instance for the given status code

Signature

parameter status_code Integer

gRPC status code

parameter message String | Nil

Error message

parameter metadata Hash

Custom metadata

returns Error

An instance of the appropriate error class

Implementation

def self.for(status_code, message = nil, metadata: {})
	error_class = error_class_for_status(status_code)
	
	if error_class == Error
		error_class.new(status_code, message, metadata: metadata)
	else
		error_class.new(message, metadata: metadata)
	end
end