Sha256: 7dd177c96fa2d3368ae164cf250cbf2129476ec2c16617df8d1334aa42ee9ec4

Contents?: true

Size: 735 Bytes

Versions: 4

Compression:

Stored size: 735 Bytes

Contents

require 'timeout'

module Yoda
  class Server
    module Providers
      module WithTimeout
        module PrependHook
          def provide(*args)
            begin
              Timeout.timeout(timeout) { super }
            rescue Timeout::Error => err
              if message = timeout_message(*args)
                Logger.error("Request expired: " + message)
              else
                Logger.error("Request expired")
              end
              raise err
            end
          end
        end

        def included(mod)
          mod.send(:prepend, PrependHook)
        end

        def timeout
          nil
        end

        def timeout_message(*args)
          nil
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/server/providers/with_timeout.rb
yoda-language-server-0.10.0 lib/yoda/server/providers/with_timeout.rb
yoda-language-server-0.9.0 lib/yoda/server/providers/with_timeout.rb
yoda-language-server-0.8.0 lib/yoda/server/providers/with_timeout.rb