summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings/qmf
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/bindings/qmf')
-rw-r--r--qpid/cpp/bindings/qmf/python/Makefile.am2
-rw-r--r--qpid/cpp/bindings/qmf/python/qmf.py14
-rw-r--r--qpid/cpp/bindings/qmf/ruby/qmf.rb295
-rwxr-xr-xqpid/cpp/bindings/qmf/tests/agent_ruby.rb7
-rw-r--r--qpid/cpp/bindings/qmf/tests/python_agent.py4
-rwxr-xr-xqpid/cpp/bindings/qmf/tests/ruby_console.rb83
6 files changed, 328 insertions, 77 deletions
diff --git a/qpid/cpp/bindings/qmf/python/Makefile.am b/qpid/cpp/bindings/qmf/python/Makefile.am
index f51d26bfad..55d9079fb7 100644
--- a/qpid/cpp/bindings/qmf/python/Makefile.am
+++ b/qpid/cpp/bindings/qmf/python/Makefile.am
@@ -29,7 +29,7 @@ EXTRA_DIST = python.i
BUILT_SOURCES = $(generated_file_list)
$(generated_file_list): $(srcdir)/python.i $(srcdir)/../qmfengine.i
- swig -python -c++ -Wall -I/usr/include $(INCLUDES) $(QPID_CXXFLAGS) -I$(top_srcdir)/src/qmf -o qmfengine.cpp $(srcdir)/python.i
+ swig -c++ -python -Wall -I/usr/include $(INCLUDES) $(QPID_CXXFLAGS) -I$(top_srcdir)/src/qmf -o qmfengine.cpp $(srcdir)/python.i
pylibdir = $(PYTHON_LIB)
diff --git a/qpid/cpp/bindings/qmf/python/qmf.py b/qpid/cpp/bindings/qmf/python/qmf.py
index 265f204852..4800b327f1 100644
--- a/qpid/cpp/bindings/qmf/python/qmf.py
+++ b/qpid/cpp/bindings/qmf/python/qmf.py
@@ -30,6 +30,8 @@ from qmfengine import (TYPE_ABSTIME, TYPE_ARRAY, TYPE_BOOL, TYPE_DELTATIME,
TYPE_INT8, TYPE_LIST, TYPE_LSTR, TYPE_MAP, TYPE_OBJECT,
TYPE_REF, TYPE_SSTR, TYPE_UINT16, TYPE_UINT32, TYPE_UINT64,
TYPE_UINT8, TYPE_UUID)
+from qmfengine import (O_EQ, O_NE, O_LT, O_LE, O_GT, O_GE, O_RE_MATCH, O_RE_NOMATCH,
+ E_NOT, E_AND, E_OR, E_XOR)
##==============================================================================
@@ -404,11 +406,16 @@ class Arguments:
class Query:
- def __init__(self, i=None):
+ def __init__(self, i=None, package="", cls=None, oid=None):
if i:
self.impl = i
else:
- self.impl = qmfengine.Query()
+ if cls:
+ self.impl = qmfengine.Query(cls, package)
+ elif oid:
+ self.impl = qmfengine.Query(oid)
+ else:
+ raise "Argument error"
def package_name(self): return self.impl.getPackage()
@@ -419,9 +426,6 @@ class Query:
return ObjectId(_objid)
else:
return None
- OPER_AND = qmfengine.Query.OPER_AND
- OPER_OR = qmfengine.Query.OPER_OR
-
##==============================================================================
diff --git a/qpid/cpp/bindings/qmf/ruby/qmf.rb b/qpid/cpp/bindings/qmf/ruby/qmf.rb
index 21fbf6c157..16f1058f4a 100644
--- a/qpid/cpp/bindings/qmf/ruby/qmf.rb
+++ b/qpid/cpp/bindings/qmf/ruby/qmf.rb
@@ -67,6 +67,7 @@ module Qmf
class ConnectionHandler
def conn_event_connected(); end
def conn_event_disconnected(error); end
+ def conn_event_visit(); end
def sess_event_session_closed(context, error); end
def sess_event_recv(context, message); end
end
@@ -82,6 +83,7 @@ module Qmf
@sockEngine, @sock = Socket::socketpair(Socket::PF_UNIX, Socket::SOCK_STREAM, 0)
@impl.setNotifyFd(@sockEngine.fileno)
@new_conn_handlers = []
+ @conn_handlers_to_delete = []
@conn_handlers = []
@thread = Thread.new do
@@ -89,17 +91,30 @@ module Qmf
end
end
+ def kick
+ @sockEngine.write(".")
+ @sockEngine.flush
+ end
+
def add_conn_handler(handler)
synchronize do
@new_conn_handlers << handler
end
- @sockEngine.write("x")
+ kick
+ end
+
+ def del_conn_handler(handler)
+ synchronize do
+ @conn_handlers_to_delete << handler
+ end
+ kick
end
def run()
eventImpl = Qmfengine::ResilientConnectionEvent.new
connected = nil
new_handlers = nil
+ del_handlers = nil
bt_count = 0
while :true
@@ -107,7 +122,9 @@ module Qmf
synchronize do
new_handlers = @new_conn_handlers
+ del_handlers = @conn_handlers_to_delete
@new_conn_handlers = []
+ @conn_handlers_to_delete = []
end
new_handlers.each do |nh|
@@ -116,6 +133,11 @@ module Qmf
end
new_handlers = nil
+ del_handlers.each do |dh|
+ d = @conn_handlers.delete(dh)
+ end
+ del_handlers = nil
+
valid = @impl.getEvent(eventImpl)
while valid
begin
@@ -141,6 +163,7 @@ module Qmf
@impl.popEvent
valid = @impl.getEvent(eventImpl)
end
+ @conn_handlers.each { |h| h.conn_event_visit }
end
end
end
@@ -167,23 +190,20 @@ module Qmf
class QmfObject
attr_reader :impl, :object_class
- def initialize(cls)
- @object_class = cls
- @impl = Qmfengine::Object.new(@object_class.impl)
- end
-
- def destroy
- @impl.destroy
+ def initialize(cls, kwargs={})
+ if cls:
+ @object_class = cls
+ @impl = Qmfengine::Object.new(@object_class.impl)
+ elsif kwargs.include?(:impl)
+ @impl = Qmfengine::Object.new(kwargs[:impl])
+ @object_class = SchemaObjectClass.new(nil, nil, :impl => @impl.getClass)
+ end
end
def object_id
return ObjectId.new(@impl.getObjectId)
end
- def set_object_id(oid)
- @impl.setObjectId(oid.impl)
- end
-
def get_attr(name)
val = value(name)
case val.getType
@@ -248,17 +268,31 @@ module Qmf
def value(name)
val = @impl.getValue(name.to_s)
if val.nil?
- raise ArgumentError, "Attribute '#{name}' not defined for class #{@object_class.impl.getName}"
+ raise ArgumentError, "Attribute '#{name}' not defined for class #{@object_class.impl.getClassKey.getPackageName}:#{@object_class.impl.getClassKey.getClassName}"
end
return val
end
end
+ class AgentObject < QmfObject
+ def initialize(cls, kwargs={})
+ super(cls, kwargs)
+ end
+
+ def destroy
+ @impl.destroy
+ end
+
+ def set_object_id(oid)
+ @impl.setObjectId(oid.impl)
+ end
+ end
+
class ConsoleObject < QmfObject
attr_reader :current_time, :create_time, :delete_time
- def initialize(cls)
- super(cls)
+ def initialize(cls, kwargs={})
+ super(cls, kwargs)
end
def update()
@@ -373,10 +407,30 @@ module Qmf
end
end
+ ##==============================================================================
+ ## QUERY
+ ##==============================================================================
+
class Query
attr_reader :impl
- def initialize(i)
- @impl = i
+ def initialize(kwargs = {})
+ if kwargs.include?(:impl)
+ @impl = kwargs[:impl]
+ else
+ package = ''
+ if kwargs.include?(:key)
+ @impl = Qmfengine::Query.new(kwargs[:key])
+ elsif kwargs.include?(:object_id)
+ @impl = Qmfengine::Query.new(kwargs[:object_id])
+ else
+ package = kwargs[:package] if kwargs.include?(:package)
+ if kwargs.include?(:class)
+ @impl = Qmfengine::Query.new(kwargs[:class], package)
+ else
+ raise ArgumentError, "Invalid arguments, use :key or :class[,:package]"
+ end
+ end
+ end
end
def package_name
@@ -403,36 +457,60 @@ module Qmf
class SchemaArgument
attr_reader :impl
def initialize(name, typecode, kwargs={})
- @impl = Qmfengine::SchemaArgument.new(name, typecode)
- @impl.setDirection(kwargs[:dir]) if kwargs.include?(:dir)
- @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
- @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ if kwargs.include?(:impl)
+ @impl = kwargs[:impl]
+ else
+ @impl = Qmfengine::SchemaArgument.new(name, typecode)
+ @impl.setDirection(kwargs[:dir]) if kwargs.include?(:dir)
+ @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
+ @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ end
+ end
+
+ def name
+ @impl.getName
end
end
class SchemaMethod
- attr_reader :impl
+ attr_reader :impl, :arguments
def initialize(name, kwargs={})
- @impl = Qmfengine::SchemaMethod.new(name)
- @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
@arguments = []
+ if kwargs.include?(:impl)
+ @impl = kwargs[:impl]
+ arg_count = @impl.getArgumentCount
+ for i in 0...arg_count
+ @arguments << SchemaArgument.new(nil, nil, :impl => @impl.getArgument(i))
+ end
+ else
+ @impl = Qmfengine::SchemaMethod.new(name)
+ @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ end
end
def add_argument(arg)
@arguments << arg
@impl.addArgument(arg.impl)
end
+
+ def name
+ @impl.getName
+ end
end
class SchemaProperty
attr_reader :impl
def initialize(name, typecode, kwargs={})
- @impl = Qmfengine::SchemaProperty.new(name, typecode)
- @impl.setAccess(kwargs[:access]) if kwargs.include?(:access)
- @impl.setIndex(kwargs[:index]) if kwargs.include?(:index)
- @impl.setOptional(kwargs[:optional]) if kwargs.include?(:optional)
- @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
- @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ if kwargs.include?(:impl)
+ @impl = kwargs[:impl]
+ else
+ @impl = Qmfengine::SchemaProperty.new(name, typecode)
+ @impl.setAccess(kwargs[:access]) if kwargs.include?(:access)
+ @impl.setIndex(kwargs[:index]) if kwargs.include?(:index)
+ @impl.setOptional(kwargs[:optional]) if kwargs.include?(:optional)
+ @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
+ @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ end
end
def name
@@ -443,9 +521,17 @@ module Qmf
class SchemaStatistic
attr_reader :impl
def initialize(name, typecode, kwargs={})
- @impl = Qmfengine::SchemaStatistic.new(name, typecode)
- @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
- @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ if kwargs.include?(:impl)
+ @impl = kwargs[:impl]
+ else
+ @impl = Qmfengine::SchemaStatistic.new(name, typecode)
+ @impl.setUnit(kwargs[:unit]) if kwargs.include?(:unit)
+ @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
+ end
+ end
+
+ def name
+ @impl.getName
end
end
@@ -465,13 +551,25 @@ module Qmf
end
class SchemaObjectClass
- attr_reader :impl
- def initialize(package='', name='', kwargs={})
+ attr_reader :impl, :properties, :statistics, :methods
+ def initialize(package, name, kwargs={})
@properties = []
@statistics = []
@methods = []
if kwargs.include?(:impl)
@impl = kwargs[:impl]
+
+ @impl.getPropertyCount.times do |i|
+ @properties << SchemaProperty.new(nil, nil, :impl => @impl.getProperty(i))
+ end
+
+ @impl.getStatisticCount.times do |i|
+ @statistics << SchemaStatistic.new(nil, nil, :impl => @impl.getStatistic(i))
+ end
+
+ @impl.getMethodCount.times do |i|
+ @methods << SchemaMethod.new(nil, :impl => @impl.getMethod(i))
+ end
else
@impl = Qmfengine::SchemaObjectClass.new(package, name)
end
@@ -495,24 +593,17 @@ module Qmf
def name
@impl.getClassKey.getClassName
end
-
- def properties
- unless @properties
- @properties = []
- @impl.getPropertyCount.times do |i|
- @properties << @impl.getProperty(i)
- end
- end
- return @properties
- end
end
class SchemaEventClass
- attr_reader :impl
- def initialize(package='', name='', kwargs={})
+ attr_reader :impl, :arguments
+ def initialize(package, name, kwargs={})
@arguments = []
if kwargs.include?(:impl)
@impl = kwargs[:impl]
+ @impl.getArgumentCount.times do |i|
+ @arguments << SchemaArgument.new(nil, nil, :impl => @impl.getArgument(i))
+ end
else
@impl = Qmfengine::SchemaEventClass.new(package, name)
@impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
@@ -546,13 +637,18 @@ module Qmf
end
class Console
+ include MonitorMixin
attr_reader :impl
def initialize(handler = nil, kwargs={})
+ super()
@handler = handler
@impl = Qmfengine::ConsoleEngine.new
@event = Qmfengine::ConsoleEvent.new
@broker_list = []
+ @cv = new_cond
+ @sync_count = nil
+ @sync_result = nil
end
def add_connection(conn)
@@ -562,6 +658,8 @@ module Qmf
end
def del_connection(broker)
+ broker.shutdown
+ @broker_list.delete(broker)
end
def get_packages()
@@ -581,9 +679,9 @@ module Qmf
class_kind = @impl.getClassKind(key)
if class_kind == kind
if kind == CLASS_OBJECT
- clist << SchemaObjectClass.new('', '', :impl => @impl.getObjectClass(key))
+ clist << SchemaObjectClass.new(nil, nil, :impl => @impl.getObjectClass(key))
elsif kind == CLASS_EVENT
- clist << SchemaEventClass.new('', '', :impl => @impl.getEventClass(key))
+ clist << SchemaEventClass.new(nil, nil, :impl => @impl.getEventClass(key))
end
end
end
@@ -591,19 +689,70 @@ module Qmf
return clist
end
- def get_schema(class_key)
- end
-
def bind_package(package)
+ @impl.bindPackage(package)
end
def bind_class(kwargs = {})
+ if kwargs.include?(:key)
+ @impl.bindClass(kwargs[:key])
+ elsif kwargs.include?(:package)
+ package = kwargs[:package]
+ if kwargs.include?(:class)
+ @impl.bindClass(package, kwargs[:class])
+ else
+ @impl.bindClass(package)
+ end
+ else
+ raise ArgumentError, "Invalid arguments, use :key or :package[,:class]"
+ end
end
def get_agents(broker = nil)
+ blist = []
+ if broker
+ blist << broker
+ else
+ blist = @broker_list
+ end
+
+ agents = []
+ blist.each do |b|
+ count = b.impl.agentCount
+ for idx in 0...count
+ agents << AgentProxy.new(b.impl.getAgent(idx), b)
+ end
+ end
+
+ return agents
end
def get_objects(query, kwargs = {})
+ timeout = 30
+ if kwargs.include?(:timeout)
+ timeout = kwargs[:timeout]
+ end
+ synchronize do
+ @sync_count = 1
+ @sync_result = []
+ broker = @broker_list[0]
+ broker.send_query(query.impl, nil)
+ unless @cv.wait(timeout) { @sync_count == 0 }
+ raise "Timed out waiting for response"
+ end
+
+ return @sync_result
+ end
+ end
+
+ def _get_result(list, context)
+ synchronize do
+ list.each do |item|
+ @sync_result << item
+ end
+ @sync_count -= 1
+ @cv.signal
+ end
end
def start_sync(query)
@@ -638,6 +787,19 @@ module Qmf
end
end
+ class AgentProxy
+ attr_reader :broker
+
+ def initialize(impl, broker)
+ @impl = impl
+ @broker = broker
+ end
+
+ def label
+ @impl.getLabel
+ end
+ end
+
class Broker < ConnectionHandler
include MonitorMixin
attr_reader :impl
@@ -654,6 +816,13 @@ module Qmf
@impl = Qmfengine::BrokerProxy.new(@console.impl)
@console.impl.addConnection(@impl, self)
@conn.add_conn_handler(self)
+ @operational = :true
+ end
+
+ def shutdown()
+ @console.impl.delConnection(@impl)
+ @conn.del_conn_handler(self)
+ @operational = :false
end
def waitForStable(timeout = nil)
@@ -671,6 +840,11 @@ module Qmf
end
end
+ def send_query(query, ctx)
+ @impl.sendQuery(query, ctx)
+ @conn.kick
+ end
+
def do_broker_events()
count = 0
valid = @impl.getEvent(@event)
@@ -694,6 +868,12 @@ module Qmf
@stable = :true
@cv.signal
end
+ when Qmfengine::BrokerEvent::QUERY_COMPLETE
+ result = []
+ for idx in 0...@event.queryResponse.getObjectCount
+ result << ConsoleObject.new(nil, :impl => @event.queryResponse.getObject(idx))
+ end
+ @console._get_result(result, @event.context)
end
@impl.popEvent
valid = @impl.getEvent(@event)
@@ -732,12 +912,17 @@ module Qmf
puts "Console Connection Lost"
end
+ def conn_event_visit
+ do_events
+ end
+
def sess_event_session_closed(context, error)
puts "Console Session Lost"
@impl.sessionClosed()
end
def sess_event_recv(context, message)
+ puts "Unexpected RECV Event" if not @operational
@impl.handleRcvMessage(message)
do_events
end
@@ -798,7 +983,7 @@ module Qmf
count += 1
case @event.kind
when Qmfengine::AgentEvent::GET_QUERY
- @handler.get_query(@event.sequence, Query.new(@event.query), @event.authUserId)
+ @handler.get_query(@event.sequence, Query.new(:impl => @event.query), @event.authUserId)
when Qmfengine::AgentEvent::START_SYNC
when Qmfengine::AgentEvent::END_SYNC
when Qmfengine::AgentEvent::METHOD_CALL
@@ -852,6 +1037,10 @@ module Qmf
puts "Agent Connection Lost"
end
+ def conn_event_visit
+ do_events
+ end
+
def sess_event_session_closed(context, error)
puts "Agent Session Lost"
end
diff --git a/qpid/cpp/bindings/qmf/tests/agent_ruby.rb b/qpid/cpp/bindings/qmf/tests/agent_ruby.rb
index 75de2b5fa1..67591319ee 100755
--- a/qpid/cpp/bindings/qmf/tests/agent_ruby.rb
+++ b/qpid/cpp/bindings/qmf/tests/agent_ruby.rb
@@ -72,8 +72,7 @@ end
class App < Qmf::AgentHandler
def get_query(context, query, userId)
-# puts "Query: user=#{userId} context=#{context} class=#{query.class_name} object_num=#{query.object_id.object_num_low if query.object_id}"
- #@parent.inc_attr("queryCount")
+# puts "Query: user=#{userId} context=#{context} class=#{query.class_name} object_num=#{query.object_id.object_num_low if query.object_id}"
if query.class_name == 'parent'
@agent.query_response(context, @parent)
elsif query.object_id == @parent_oid
@@ -135,7 +134,7 @@ class App < Qmf::AgentHandler
elsif name == "create_child"
oid = @agent.alloc_object_id(2)
args['child_ref'] = oid
- @child = Qmf::QmfObject.new(@model.child_class)
+ @child = Qmf::AgentObject.new(@model.child_class)
@child.set_attr("name", args.by_key("child_name"))
@child.set_object_id(oid)
@agent.method_response(context, 0, "OK", args)
@@ -161,7 +160,7 @@ class App < Qmf::AgentHandler
@agent.set_connection(@connection)
- @parent = Qmf::QmfObject.new(@model.parent_class)
+ @parent = Qmf::AgentObject.new(@model.parent_class)
@parent.set_attr("name", "Parent One")
@parent.set_attr("state", "OPERATIONAL")
diff --git a/qpid/cpp/bindings/qmf/tests/python_agent.py b/qpid/cpp/bindings/qmf/tests/python_agent.py
index f6cb51cbf5..d4373d3bb8 100644
--- a/qpid/cpp/bindings/qmf/tests/python_agent.py
+++ b/qpid/cpp/bindings/qmf/tests/python_agent.py
@@ -72,7 +72,9 @@ class Model:
class App(qmf.AgentHandler):
def get_query(self, context, query, userId):
- # puts "Query: user=#{userId} context=#{context} class=#{query.class_name} object_num=#{query.object_id.object_num_low if query.object_id}"
+ #print "Query: user=%s context=%d class=%s" % (userId, context, query.class_name())
+ #if query.object_id():
+ # print query.object_id().object_num_low()
self._parent.inc_attr("queryCount")
if query.class_name() == 'parent':
self._agent.query_response(context, self._parent)
diff --git a/qpid/cpp/bindings/qmf/tests/ruby_console.rb b/qpid/cpp/bindings/qmf/tests/ruby_console.rb
index fb48c29566..c071829f09 100755
--- a/qpid/cpp/bindings/qmf/tests/ruby_console.rb
+++ b/qpid/cpp/bindings/qmf/tests/ruby_console.rb
@@ -24,33 +24,90 @@ require 'socket'
class App < Qmf::ConsoleHandler
- def main
- @settings = Qmf::ConnectionSettings.new
- @settings.set_attr("host", ARGV[0]) if ARGV.size > 0
- @settings.set_attr("port", ARGV[1].to_i) if ARGV.size > 1
- @connection = Qmf::Connection.new(@settings)
- @qmf = Qmf::Console.new
-
- @broker = @qmf.add_connection(@connection)
- @broker.waitForStable
-
- packages = @qmf.get_packages
+ def dump_schema
+ packages = @qmfc.get_packages
puts "----- Packages -----"
packages.each do |p|
puts p
puts " ----- Object Classes -----"
- classes = @qmf.get_classes(p)
+ classes = @qmfc.get_classes(p)
classes.each do |c|
puts " #{c.name}"
+
+ puts " ---- Properties ----"
+ props = c.properties
+ props.each do |prop|
+ puts " #{prop.name}"
+ end
+
+ puts " ---- Statistics ----"
+ stats = c.statistics
+ stats.each do |stat|
+ puts " #{stat.name}"
+ end
+
+ puts " ---- Methods ----"
+ methods = c.methods
+ methods.each do |method|
+ puts " #{method.name}"
+ puts " ---- Args ----"
+ args = method.arguments
+ args.each do |arg|
+ puts " #{arg.name}"
+ end
+ end
end
+
puts " ----- Event Classes -----"
- classes = @qmf.get_classes(p, Qmf::CLASS_EVENT)
+ classes = @qmfc.get_classes(p, Qmf::CLASS_EVENT)
classes.each do |c|
puts " #{c.name}"
+ puts " ---- Args ----"
+ args = c.arguments
+ args.each do |arg|
+ puts " #{arg.name}"
+ end
end
end
puts "-----"
+ end
+
+ def main
+ @settings = Qmf::ConnectionSettings.new
+ @settings.set_attr("host", ARGV[0]) if ARGV.size > 0
+ @settings.set_attr("port", ARGV[1].to_i) if ARGV.size > 1
+ @connection = Qmf::Connection.new(@settings)
+ @qmfc = Qmf::Console.new
+
+ @broker = @qmfc.add_connection(@connection)
+ @broker.waitForStable
+
+ dump_schema
+
+ agents = @qmfc.get_agents()
+ puts "---- Agents ----"
+ agents.each do |a|
+ puts " => #{a.label}"
+ end
+ puts "----"
+
+ for idx in 0...20
+ blist = @qmfc.get_objects(Qmf::Query.new(:class => "broker"))
+ puts "---- Brokers ----"
+ blist.each do |b|
+ puts " ---- Broker ----"
+ puts " systemRef: #{b.get_attr('systemRef')}"
+ puts " port : #{b.get_attr('port')}"
+ puts " uptime : #{b.get_attr('uptime') / 1000000000}"
+ end
+ puts "----"
+ sleep(5)
+ end
+ sleep(5)
+ puts "Deleting connection..."
+ @qmfc.del_connection(@broker)
+ puts " done"
sleep
end
end