Sha256: 25a1d1de94fb1febef4489cbdb9fe0f4eb0b615da7d202144f7d3cd491c1d26d

Contents?: true

Size: 882 Bytes

Versions: 5

Compression:

Stored size: 882 Bytes

Contents

# frozen_string_literal: true

module MTLibuv
    class FSEvent < Handle


        define_callback function: :on_fs_event, params: [:pointer, :string, :int, :int]


        EVENTS = {1 => :rename, 2 => :change}.freeze


        def initialize(reactor, path)
            @reactor = reactor

            fs_event_ptr = ::MTLibuv::Ext.allocate_handle_fs_event
            error = check_result ::MTLibuv::Ext.fs_event_init(reactor.handle, fs_event_ptr, path, callback(:on_fs_event, fs_event_ptr.address), 0)

            super(fs_event_ptr, error)
        end


        private


        def on_fs_event(handle, filename, events, status)
            e = check_result(status)

            if e
                reject(e)
            else
                # notify of a change
                @reactor.exec { defer.notify(filename, EVENTS[events]) }
            end
        end
    end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mt-libuv-4.1.04 lib/mt-libuv/fs_event.rb
mt-libuv-4.1.03 lib/mt-libuv/fs_event.rb
mt-libuv-4.1.02 lib/mt-libuv/fs_event.rb
mt-libuv-4.1.01 lib/mt-libuv/fs_event.rb
mt-libuv-4.1.0 lib/mt-libuv/fs_event.rb