Method: FFI::Libfuse::FuseOperations#initialize

Defined in:
lib/ffi/libfuse/fuse_operations.rb

#initialize(fuse_wrappers: [], fuse_flags: [], delegate: self) ⇒ FuseOperations

Returns a new instance of FuseOperations.

Build a FuseOperations struct and register callback methods

The methods to register are identified by delegate.FFI::Libfuse::FuseCallbacks#fuse_respond_to? if available otherwise delegate.respond_to? is used.

Parameters:

  • delegate (Object) (defaults to: self)

    delegate object that quacks like our abstract methods (after any wrappers)

    if not provided defaults to self, ie a subclass of FuseOperations that implements the otherwise abstract callback and configuration methods, or a naked FuseOperations that must be externally configured.

  • fuse_wrappers (Array) (defaults to: [])

    A list of fuse_wrappers (see Callbacks#register). Passed into delegate.FFI::Libfuse::FuseCallbacks#fuse_wrappers if available

  • fuse_flags (Array<Symbol>) (defaults to: [])

    list of configuration flags (Not used in Fuse3) concatenated #fuse_flags if available



938
939
940
941
942
943
944
945
946
947
948
# File 'lib/ffi/libfuse/fuse_operations.rb', line 938

def initialize(*args, fuse_wrappers: [], fuse_flags: [], delegate: self)
  super(*args) # FFI::Struct constructor
  return if args.any? # only configure if this is a new allocation

  initialize_callbacks(wrappers: fuse_wrappers, delegate: delegate)

  return unless FUSE_MAJOR_VERSION < 3

  fuse_flags.concat(delegate.fuse_flags) if delegate.respond_to?(:fuse_flags)
  send(:[]=, :flags, fuse_flags.uniq)
end