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 - #[email protected]_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\...@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

_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel

Reply via email to