Class: GSSAPI::LibGSSAPI::UnManagedGssBufferDesc
- Inherits:
-
GssUMStruct
- Object
- FFI::Struct
- GssUMStruct
- GSSAPI::LibGSSAPI::UnManagedGssBufferDesc
- Includes:
- GssBufferDescLayout
- Defined in:
- lib/gssapi/lib_gssapi.rb
Overview
This class implements the gss_buffer_desc type. Use #pointer to emulate gss_buffer_t If you are setting the value of the buffer and it is not being set from the function this is the type of buffer you should use. If the buffer is being allocated and set inside the function you should use a ManagedGssBufferDesc instead so gss_release_buffer is called for it. It states in the manpage for each gss function whether or not gss_release_buffer needs to be called or not.
Instance Method Summary collapse
-
#initialize(ptr = nil) ⇒ UnManagedGssBufferDesc
constructor
A new instance of UnManagedGssBufferDesc.
-
#value=(val) ⇒ Object
Set the value of the string for the “value” parameter.
Methods included from GssBufferDescLayout
Constructor Details
#initialize(ptr = nil) ⇒ UnManagedGssBufferDesc
Returns a new instance of UnManagedGssBufferDesc.
79 80 81 82 83 84 85 |
# File 'lib/gssapi/lib_gssapi.rb', line 79 def initialize(ptr = nil) if(ptr.nil?) super(FFI::Pointer.new(FFI::MemoryPointer.new(self.size))) else super(ptr) end end |
Instance Method Details
#value=(val) ⇒ Object
Set the value of the string for the “value” parameter. This method also
appropriately sets the length parameter.
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/gssapi/lib_gssapi.rb', line 89 def value=(val) if(val.nil?) self[:length] = 0 self[:value] = val elsif(val.is_a?(String)) buff = FFI::MemoryPointer.from_string(val) self[:length] = val.length self[:value] = buff elsif(val.is_a?(Fixnum)) buff = FFI::MemoryPointer.new :OM_uint32 buff.write_int val self[:length] = FFI::type_size :OM_uint32 self[:value] = buff else raise StandardError, "Can't handle type #{val.class.name}" end end |