Sha256: 70d981e3b32806a611798ce978bac592a2a377c25d24e20d0cf0f2caf279180a
Contents?: true
Size: 1.11 KB
Versions: 6
Compression:
Stored size: 1.11 KB
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 class << self def wrap(middlewares) case middlewares.length when 0 NOP_MIDDLEWARE when 1 middlewares.first else MultiMiddleware.new(middlewares) end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems