Xmmp4r and backgroundrb

Hello all,

Subject: Not able to return object from backgroundrb worker

I am trying to use xmpp4r and backgroundrb for my chat application.
I am able to create a connectnion with XMPP4r through a worker in
backgrounddrb.
I have the problem in returning the object from the worker to my rails
application.

My code is as follows:

class ChatWorker < BackgrounDRb::MetaWorker
require ‘xmpp4r’
require ‘xmpp4r/bytestreams’
require ‘xmpp4r/roster/helper/roster’
require ‘xmpp4r/roster/iq/roster’
include Jabber
Jabber::debug = true

set_worker_name :chat_worker
def create(args = nil)
# this method is called, when worker is loaded for the first time
logger.info ‘Initializing Chat Worker…’
end
def connect_chat(args)
logger.info “Conencting chat…#{args[:username]} --”
jid = Jabber::JID.new(args[:username])
@client = Jabber::Client.new(jid)
@client.connect
@client.auth(args[:password])
@client.send(Jabber::Presence.new.set_show(nil).set_status(‘From
Rails!’))
logger.info “Chat Connection status - #{@client.is_connected?}”
return @client.is_connected?
end
def connected?
return @client.is_connected?
end
def get_buddies
if self.connected?
@buddy_list = []
roster = Jabber::Roster::Helper.new(@client)
mainthread = Thread.current
roster.add_query_callback { |iq|
mainthread.wakeup
}
Thread.stop
roster.groups.each { |group|
roster.find_by_group(group).each { |item|
@buddy_list << item#[{:name => item.iname, :jid => item.jid,
:subscription => item.subscription}]
}
}
logger.info “Buddies\n#{@buddy_list.inspect}”
return @buddy_list
end

end

When i call the connect_chat worker method from console i am able to
connect to the server as below.
MiddleMan.worker(:chat_worker).connect_chat(:arg => {:username =>
[email protected]’,:password => ‘xxxx’})

But when i try to call the get_buddies worker method, i am not able to
get the buddy list as below.
MiddleMan.worker(:chat_worker).get_buddies
Even in the log file, i printed the @buddy_list object and its showing
the correct result. But it is not returning the result.

The problem is with result returning.

Could you please help me in solving the issues. I am struggling with
this for the whole day.

Thank you for your any kind of suggestions.

Regards
Murugaraj B

Anybody please help me !