Sha256: 1a9d43abc1d3f71fb7fe7f0840ad328e7e2e5fcee7075a9372f028c1153c8dff

Contents?: true

Size: 887 Bytes

Versions: 1

Compression:

Stored size: 887 Bytes

Contents

module Thrift
  module Middleware
    class NopMiddleware
      def handle_binary(_mth, args = {}, &block)
        block.call(args)
      end

      def handle_unary(_mth, args = {},  &block)
        block.call(args)
      end
    end

    class MultiMiddleware
      def initialize(middlewares)
        @middlewares = middlewares
      end

      def handle_unary(mth, args = {}, &block)
        @middlewares.reverse.reduce(block) do |acc, m|
          Proc.new do |args|
            m.handle_unary(mth, args) { |args| acc.call(args) }
          end
        end.call(args)
      end

      def handle_binary(mth, args = {}, &block)
        @middlewares.reverse.reduce(block) do |acc, m|
          Proc.new do |args|
            m.handle_binary(mth, args) { |args| acc.call(args) }
          end
        end.call(args)
      end
    end

    NOP_MIDDLEWARE = NopMiddleware.new
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
upfluence-thrift-2.1.1 lib/thrift/middleware.rb