From d63c95d2b3e36780d4d3c0948a8245df857322bc Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Sat, 14 Jan 2012 14:18:44 +0400 Subject: [PATCH] Remove deprecated code that we have been supporting for backwards compatibility with 0.6.x and 0.7.x series We initiailly installed deprecation warning around July 2011, during final 0.8.0 development iterations. See http://rubyamqp.info/articles/08_migration/ to learn about migration path from 0.6.x and 0.7.x to 0.8.x and later releases. --- lib/amqp.rb | 7 -- lib/amqp/deprecated/fork.rb | 17 ---- lib/amqp/deprecated/logger.rb | 100 -------------------- lib/amqp/deprecated/mq.rb | 22 ----- lib/amqp/deprecated/rpc.rb | 169 ---------------------------------- lib/amqp/ext/em.rb | 3 - lib/amqp/ext/emfork.rb | 72 --------------- lib/amqp/logger.rb | 19 ---- lib/amqp/rpc.rb | 20 ---- lib/mq.rb | 35 ------- lib/mq/logger.rb | 4 - lib/mq/rpc.rb | 4 - 12 files changed, 472 deletions(-) delete mode 100644 lib/amqp/deprecated/fork.rb delete mode 100644 lib/amqp/deprecated/logger.rb delete mode 100644 lib/amqp/deprecated/mq.rb delete mode 100644 lib/amqp/deprecated/rpc.rb delete mode 100644 lib/amqp/ext/em.rb delete mode 100644 lib/amqp/ext/emfork.rb delete mode 100644 lib/amqp/logger.rb delete mode 100644 lib/amqp/rpc.rb delete mode 100644 lib/mq.rb delete mode 100644 lib/mq/logger.rb delete mode 100644 lib/mq/rpc.rb diff --git a/lib/amqp.rb b/lib/amqp.rb index 08f07f9c..17acca3a 100644 --- a/lib/amqp.rb +++ b/lib/amqp.rb @@ -14,10 +14,3 @@ require "amqp/queue" require "amqp/channel" require "amqp/header" - - -# Will be removed before 1.0. - -require "amqp/deprecated/mq" -require "amqp/deprecated/rpc" -require "amqp/deprecated/fork" \ No newline at end of file diff --git a/lib/amqp/deprecated/fork.rb b/lib/amqp/deprecated/fork.rb deleted file mode 100644 index 4efa2a8f..00000000 --- a/lib/amqp/deprecated/fork.rb +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - -require "amqp/ext/em" - -module AMQP - # @deprecated - # @private - def self.fork(workers) - EM.fork(workers) do - # clean up globals in the fork - Thread.current[:mq] = nil - AMQP.instance_variable_set('@conn', nil) - - yield - end - end -end diff --git a/lib/amqp/deprecated/logger.rb b/lib/amqp/deprecated/logger.rb deleted file mode 100644 index bbf4bf64..00000000 --- a/lib/amqp/deprecated/logger.rb +++ /dev/null @@ -1,100 +0,0 @@ -# encoding: utf-8 - -module AMQP - # @private - class Logger - def initialize(*args, &block) - opts = args.pop if args.last.is_a? Hash - opts ||= {} - - printer(block) if block - - @prop = opts - @tags = ([:timestamp] + args).uniq - end - - attr_reader :prop - alias :base :prop - - def log(severity, *args) - opts = args.pop if args.last.is_a? Hash and args.size != 1 - opts ||= {} - opts = @prop.clone.update(opts) - - data = args.shift - - data = {:type => :exception, - :name => data.class.to_s.intern, - :backtrace => data.backtrace, - :message => data.message} if data.is_a? Exception - - (@tags + args).each do |tag| - tag = tag.to_sym - case tag - when :timestamp - opts.update :timestamp => Time.now - when :hostname - @hostname ||= { :hostname => `hostname`.strip } - opts.update @hostname - when :process - @process_id ||= { :process_id => Process.pid, - :process_name => $0, - :process_parent_id => Process.ppid, - :thread_id => Thread.current.object_id } - opts.update :process => @process_id - else - (opts[:tags] ||= []) << tag - end - end - - opts.update(:severity => severity, - :msg => data) - - print(opts) - unless Logger.disabled? - AMQP::Channel.new.fanout('logging', :durable => true).publish Marshal.dump(opts) - end - - opts - end - alias :method_missing :log - - def print(data = nil, &block) - if block - @printer = block - elsif data.is_a? Proc - @printer = data - elsif data - (pr = @printer || self.class.printer) and pr.call(data) - else - @printer - end - end - alias :printer :print - - def self.printer &block - @printer = block if block - @printer - end - - def self.disabled? - !!@disabled - end - - def self.enable - @disabled = false - end - - def self.disable - @disabled = true - end - end -end - - -require "amqp/deprecated/mq" -class MQ - # @note This class will be removed before 1.0 release. - # @deprecated - class Logger < ::AMQP::Logger; end -end diff --git a/lib/amqp/deprecated/mq.rb b/lib/amqp/deprecated/mq.rb deleted file mode 100644 index db7a905e..00000000 --- a/lib/amqp/deprecated/mq.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: utf-8 - -# Alias for AMQP::Channel. -# -# @note This class will be removed before 1.0 release. -# @deprecated -class MQ < AMQP::Channel; end - - -class MQ - # Alias for AMQP::Exchange. - # - # @note This class will be removed before 1.0 release. - # @deprecated - class Exchange < ::AMQP::Exchange; end - - # Alias for AMQP::Queue. - # - # @note This class will be removed before 1.0 release. - # @deprecated - class Queue < ::AMQP::Queue; end -end diff --git a/lib/amqp/deprecated/rpc.rb b/lib/amqp/deprecated/rpc.rb deleted file mode 100644 index 250b0353..00000000 --- a/lib/amqp/deprecated/rpc.rb +++ /dev/null @@ -1,169 +0,0 @@ -# encoding: utf-8 - -module AMQP - if defined?(BasicObject) - # @private - class BlankSlate < BasicObject; end - else - # @private - class BlankSlate - instance_methods.each { |m| undef_method m unless m =~ /^__/ } - end - end - - - # Basic RPC (remote procedure call) facility. - # - # Needs more detail and explanation. - # - # EM.run do - # server = AMQP::Channel.new.rpc('hash table node', Hash) - # - # client = AMQP::Channel.new.rpc('hash table node') - # client[:now] = Time.now - # client[:one] = 1 - # - # client.values do |res| - # p 'client', :values => res - # end - # - # client.keys do |res| - # p 'client', :keys => res - # EM.stop_event_loop - # end - # end - # - # - # @note This class will be removed before 1.0 release. - # @deprecated - # @private - class RPC < ::AMQP::BlankSlate - - # - # API - # - - - attr_reader :name - - # Takes a channel, queue and optional object. - # - # The optional object may be a class name, module name or object - # instance. When given a class or module name, the object is instantiated - # during this setup. The passed queue is automatically subscribed to so - # it passes all messages (and their arguments) to the object. - # - # Marshalling and unmarshalling the objects is handled internally. This - # marshalling is subject to the same restrictions as defined in the - # {http://ruby-doc.org/core/classes/Marshal.html Marshal} standard - # library. See that documentation for further reference. - # - # When the optional object is not passed, the returned rpc reference is - # used to send messages and arguments to the queue. See #method_missing - # which does all of the heavy lifting with the proxy. Some client - # elsewhere must call this method *with* the optional block so that - # there is a valid destination. Failure to do so will just enqueue - # marshalled messages that are never consumed. - # - def initialize(channel, queue, obj = nil) - @name = queue - @channel = channel - @channel.register_rpc(self) - - if @obj = normalize(obj) - @delegate = Server.new(channel, queue, @obj) - else - @delegate = Client.new(channel, queue) - end - end - - - def client? - @obj.nil? - end - - def server? - !client? - end - - - def method_missing(selector, *args, &block) - @delegate.__send__(selector, *args, &block) - end - - - # @private - class Client - attr_accessor :identifier - - def initialize(channel, server_queue_name) - @channel = channel - @exchange = AMQP::Exchange.default(@channel) - @server_queue_name = server_queue_name - - @handlers = Hash.new - @queue = channel.queue("__amqp_gem_rpc_client_#{rand(1_000_000)}", :auto_delete => true) - - @queue.subscribe do |header, payload| - *response_args = Marshal.load(payload) - handler = @handlers[header.message_id] - - handler.call(*response_args) - end - end - - def method_missing(selector, *args, &block) - @channel.once_open do - message_id = "message_identifier_#{rand(1_000_000)}" - - if block - @handlers[message_id] = block - @exchange.publish(Marshal.dump([selector, *args]), :routing_key => @server_queue_name, :reply_to => @queue.name, :message_id => message_id) - else - @exchange.publish(Marshal.dump([selector, *args]), :routing_key => @server_queue_name, :message_id => message_id) - end - end - end - end # Client - - # @private - class Server - def initialize(channel, queue_name, impl) - @channel = channel - @exchange = AMQP::Exchange.default(@channel) - @queue = @channel.queue(queue_name) - @impl = impl - - @handlers = Hash.new - @id = "client_identifier_#{rand(1_000_000)}" - - @queue.subscribe(:ack => true) do |header, payload| - selector, *args = Marshal.load(payload) - result = @impl.__send__(selector, *args) - - respond_to(header, result) if header.to_hash[:reply_to] - header.ack - end - end - - def respond_to(header, result) - @exchange.publish(Marshal.dump(result), :message_id => header.message_id, :routing_key => header.reply_to) - end - end # Server - - - - protected - - def normalize(input) - case input - when ::Class - input.new - when ::Module - (::Class.new do include(obj) end).new - else - input - end - end - end # RPC -end # AMQP diff --git a/lib/amqp/ext/em.rb b/lib/amqp/ext/em.rb deleted file mode 100644 index 1f1da8c7..00000000 --- a/lib/amqp/ext/em.rb +++ /dev/null @@ -1,3 +0,0 @@ -# encoding: utf-8 - -require 'amqp/ext/emfork' diff --git a/lib/amqp/ext/emfork.rb b/lib/amqp/ext/emfork.rb deleted file mode 100644 index cc56d389..00000000 --- a/lib/amqp/ext/emfork.rb +++ /dev/null @@ -1,72 +0,0 @@ -# encoding: utf-8 - -# @private -EMFORK = $0 == __FILE__ - -if EMFORK - require 'rubygems' -end - -require 'eventmachine' - -# helper to fork off EM reactors -# @private -def EM.fork num = 1, &blk - unless @forks - trap('CHLD') { - pid = Process.wait - p [:pid, pid, :died] if EMFORK - block = @forks.delete(pid) - EM.fork(1, &block) - } - - trap('EXIT') { - p [:pid, Process.pid, :exit] if EMFORK - @forks.keys.each { |pid| - p [:pid, Process.pid, :killing, pid] if EMFORK - Process.kill('USR1', pid) - } - } - - @forks = {} - end - - num.times do - pid = EM.fork_reactor do - p [:pid, Process.pid, :started] if EMFORK - - trap('USR1') { EM.stop_event_loop } - trap('CHLD') {} - trap('EXIT') {} - - blk.call - end - - @forks[pid] = blk - p [:children, EM.forks] if EMFORK - end -end - -# @private -def EM.forks - @forks ? @forks.keys : [] -end - -if EMFORK - p 'starting reactor' - - trap('INT') { EM.stop_event_loop } - - EM.run { - p [:parent, Process.pid] - - EM.fork(2) { - EM.add_periodic_timer(1) do - p [:fork, Process.pid, :ping] - end - } - - } - - p 'reactor stopped' -end diff --git a/lib/amqp/logger.rb b/lib/amqp/logger.rb deleted file mode 100644 index 6753f0c5..00000000 --- a/lib/amqp/logger.rb +++ /dev/null @@ -1,19 +0,0 @@ -# encoding: utf-8 - -$stdout.puts <<-MESSAGE -------------------------------------------------------------------------------------- -DEPRECATION WARNING! - -Use of amqp/logger.rb is deprecated. Instead of - - require "amqp/logger" - -please use - - require "amqp/deprecated/logger" - - -Both amqp/logger.rb and AMQP::Logger will be REMOVED before 1.0 release. -MESSAGE - -require "amqp/deprecated/logger" diff --git a/lib/amqp/rpc.rb b/lib/amqp/rpc.rb deleted file mode 100644 index b5d8cca8..00000000 --- a/lib/amqp/rpc.rb +++ /dev/null @@ -1,20 +0,0 @@ -# encoding: utf-8 - -$stdout.puts <<-MESSAGE -------------------------------------------------------------------------------------- -DEPRECATION WARNING! - -Use of amqp/rpc.rb is deprecated. Instead of - - require "amqp/rpc" - -please use - - require "amqp/deprecated/rpc" - - -Both amqp/rpc.rb and AMQP::RPC implementation will be REMOVED before 1.0 release. -If you need RPC, we recommend the rpc gem (see https://github.com/ruby-amqp/rpc). -MESSAGE - -require "amqp/deprecated/rpc" diff --git a/lib/mq.rb b/lib/mq.rb deleted file mode 100644 index a5fa2564..00000000 --- a/lib/mq.rb +++ /dev/null @@ -1,35 +0,0 @@ -# encoding: utf-8 - -$stdout.puts <<-MESSAGE -------------------------------------------------------------------------------------- -DEPRECATION WARNING! - -Use of mq.rb is deprecated. Instead of - - require "mq" - -please use - - require "amqp" - - -mq.rb will be REMOVED in AMQP gem version 1.0. - -Why is it deprecated? Because it was a poor name choice all along. We better not -release 1.0 with it. Both mq.rb and MQ class step away from AMQP terminology and -make 8 out of 10 engineers think it has something to do with AMQP queues (in fact, -MQ should have been called Channel all along). No other AMQP client library we know -of invents its own terminology when it comes to AMQP entities, and amqp gem shouldn't, -too. - -Learn more at http://bit.ly/amqp-gem-080-migration, all documentation guides are at -http://bit.ly/amqp-gem-docs, AMQP Model Explained at http://bit.ly/amqp-model-explained. - -We are also in #rabbitmq on irc.freenode.net. - -Thank you for understanding. AMQP gem maintainers team. - -------------------------------------------------------------------------------------- -MESSAGE - -require "amqp" diff --git a/lib/mq/logger.rb b/lib/mq/logger.rb deleted file mode 100644 index 7360a464..00000000 --- a/lib/mq/logger.rb +++ /dev/null @@ -1,4 +0,0 @@ -# encoding: utf-8 - -require "mq" -require "amqp/logger" diff --git a/lib/mq/rpc.rb b/lib/mq/rpc.rb deleted file mode 100644 index fd8956e6..00000000 --- a/lib/mq/rpc.rb +++ /dev/null @@ -1,4 +0,0 @@ -# encoding: utf-8 - -require "mq" -require "amqp/rpc"