diff options
Diffstat (limited to 'trunk/qpid/ruby/lib/qpid/spec08.rb')
-rw-r--r-- | trunk/qpid/ruby/lib/qpid/spec08.rb | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/trunk/qpid/ruby/lib/qpid/spec08.rb b/trunk/qpid/ruby/lib/qpid/spec08.rb deleted file mode 100644 index 902c05c297..0000000000 --- a/trunk/qpid/ruby/lib/qpid/spec08.rb +++ /dev/null @@ -1,190 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -require "qpid/spec" - -module Qpid08 - - module Spec - - include Qpid::Spec - - # XXX: workaround for ruby bug/missfeature - Reference = Reference - - class Root - fields(:major, :minor, :classes, :constants, :domains) - - def find_method(name) - classes.each do |c| - c.methods.each do |m| - if name == m.qname - return m - end - end - end - - return nil - end - end - - class Constant - fields(:name, :id, :type, :docs) - end - - class Domain - fields(:name, :type) - end - - class Class - fields(:name, :id, :handler, :fields, :methods, :docs) - end - - class Method - fields(:name, :id, :content?, :responses, :synchronous?, :fields, - :docs) - - def init() - @response = false - end - - attr :parent, true - - def response?; @response end - def response=(b); @response = b end - - def qname - :"#{parent.name}_#{name}" - end - end - - class Field - fields(:name, :id, :type, :docs) - - def default - case type - when :bit then false - when :octet, :short, :long, :longlong then 0 - when :shortstr, :longstr then "" - when :table then {} - end - end - end - - class Doc - fields(:type, :text) - end - - class Container08 < Container - def do_lookup(key) - case key - when Integer - return find {|x| x.id == key} - else - return super(key) - end - end - end - - class Loader08 < Loader - - def container() - return Container08.new() - end - - def load_amqp() - Root.new(attr("major", :int), attr("minor", :int), load("class"), - load("constant"), load("domain")) - end - - def load_class() - Class.new(attr("name", :name), attr("index", :int), attr("handler", :name), - load("field"), load("method"), load("doc")) - end - - def load_method() - Method.new(attr("name", :name), attr("index", :int), - attr("content", :bool), load("response"), - attr("synchronous", :bool), load("field"), load("docs")) - end - - def load_response() - name = attr("name", :name) - Reference.new {|spec, klass| - response = klass.methods[name] - if response.nil? - raise Exception.new("no such method: #{name}") - end - response - } - end - - def load_field() - type = attr("type", :name) - if type.nil? - domain = attr("domain", :name) - type = Reference.new {|spec, klass| - spec.domains[domain].type - } - end - Field.new(attr("name", :name), @index, type, load("docs")) - end - - def load_constant() - Constant.new(attr("name", :name), attr("value", :int), attr("class", :name), - load("doc")) - end - - def load_domain() - Domain.new(attr("name", :name), attr("type", :name)) - end - - def load_doc() - Doc.new(attr("type", :symbol), text) - end - - end - - def self.load(spec) - case spec - when String - spec = File.new(spec) - end - doc = Document.new(spec) - spec = Loader08.new().load(doc.root) - spec.classes.each do |klass| - klass.traverse! do |o| - case o - when Reference - o.resolve(spec, klass) - else - o - end - end - klass.methods.each do |m| - m.parent = klass - m.responses.each do |r| - r.response = true - end - end - end - return spec - end - end -end |