Sha256: 4be49eb2139b1e108e0442b441e0807e2bf2e096cd2f43da4c8aa46bc31ebae7

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

module Libuv
    module FsChecks


        def stat
            @stat_deferred = @loop.defer

            request = ::Libuv::Ext.create_request(:uv_fs)
            pre_check @stat_deferred, request, ::Libuv::Ext.fs_fstat(@loop.handle, request, @fileno, callback(:on_stat))
            @stat_deferred.promise
        end


        private


        def on_stat(req)
            if post_check(req, @stat_deferred)
                uv_stat = req[:stat]
                uv_members = uv_stat.members

                stats = {}
                uv_members.each do |key|
                    stats[key] = uv_stat[key]
                end

                cleanup(req)
                @stat_deferred.resolve(stats)
            end
            @stat_deferred = nil
        end

        def pre_check(deferrable, request, result)
            error = check_result result
            if error
                ::Libuv::Ext.free(request)
                deferrable.reject(error)
            end
        end

        def cleanup(req)
            ::Libuv::Ext.fs_req_cleanup(req)
            ::Libuv::Ext.free(req)
        end

        def post_check(req, deferrable)
            error = check_result(req[:result])
            if error
                cleanup(req)
                deferrable.reject(error)
                false
            else
                true
            end
        end
    end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
libuv-0.11.21 lib/libuv/mixins/fs_checks.rb
libuv-0.11.20 lib/libuv/mixins/fs_checks.rb
libuv-0.11.19 lib/libuv/mixins/fs_checks.rb
libuv-0.11.18 lib/libuv/mixins/fs_checks.rb
libuv-0.11.7 lib/libuv/mixins/fs_checks.rb