class Yrpc::Interceptors::Registry

Public Class Methods

new() click to toggle source
# File lib/yrpc/interceptors/register.rb, line 5
def initialize
  @interceptors ||= []
end

Public Instance Methods

interceptors_mutex(&block) click to toggle source

ruby 互斥锁,防止线程对资源进行竞争,导致资源不同步

# File lib/yrpc/interceptors/register.rb, line 19
def interceptors_mutex(&block)
  @interceptors_mutex ||= begin
    require 'monitor'
    Monitor.new
  end
  @interceptors_mutex.synchronize(&block)
end
use(interceptor_class, options = {}) click to toggle source
# File lib/yrpc/interceptors/register.rb, line 9
def use(interceptor_class, options = {})
  interceptors_mutex do
    @interceptors << {
        klass: interceptor_class,
        options: options
    }
  end
end