class KerberosAuthenticator::Krb5::LibCallError
A Kerberos error returned from a library call as a `krb5_error_code`.
Attributes
@!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
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
# 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
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
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