class KerberosAuthenticator::Krb5::LibCallError

A Kerberos error returned from a library call as a `krb5_error_code`.

Attributes

error_code[R]

@!attribute [r] error_code

@return [Integer] the krb5_error_code used to convey the status of a Kerberos library operation.
@see http://web.mit.edu/kerberos/krb5-1.14/doc/appdev/refs/types/krb5_error_code.html krb5_error_code

Public Class Methods

new(context_ptr, krb5_error_code) click to toggle source

Initializes a new LibCallError using an error code and the relevant Context to provide a friendly error message. @param context_ptr [FFI::Pointer] A Context's pointer @param krb5_error_code [Integer] An integer used to convey a operation's status @return [LibCallError] @see web.mit.edu/kerberos/krb5-1.14/doc/appdev/refs/api/krb5_get_error_message.html krb5_get_error_message

Calls superclass method
# File lib/kerberos_authenticator/krb5/error.rb, line 24
def initialize(context_ptr, krb5_error_code)
  @error_code = krb5_error_code
  error_message, error_ptr = Krb5.get_error_message(context_ptr, krb5_error_code)
  self.class.release(error_ptr)
  super String.new(error_message).force_encoding('UTF-8')
end
raise_if_error(context_ptr = nil) { || ... } click to toggle source

Used to wrap Kerberos library functions that return a krb5_error_code. @return [Integer] always returns zero on success @yield [] A call to a Kerberos library function @yieldreturn [Integer] a krb5_error_code @raise [LibCallError] if the krb5_error_code differed from zero

# File lib/kerberos_authenticator/krb5/error.rb, line 43
def self.raise_if_error(context_ptr = nil)
  err = yield
  return 0 if err.zero?
  raise self.new(context_ptr, err)
end
release(pointer) click to toggle source

Frees an error message @api private @see web.mit.edu/kerberos/krb5-1.14/doc/appdev/refs/api/krb5_free_error_message.html krb5_free_error_message

# File lib/kerberos_authenticator/krb5/error.rb, line 34
def self.release(pointer)
  Krb5.free_error_message(Context.context.ptr, pointer)
end