Class: Jabber::Bytestreams::IBBTarget
- Defined in:
- lib/xmpp4r/bytestreams/helper/ibb/target.rb
Overview
Implementation of IBB at the target side
Constant Summary
Constants inherited from IBB
Jabber::Bytestreams::IBB::NS_IBB
Instance Attribute Summary collapse
-
#block_size ⇒ Object
readonly
You may read the block-size after accept.
Instance Method Summary collapse
-
#accept ⇒ Object
Wait for the initiator side to start the stream.
- #accept_wait ⇒ Object
-
#initialize(stream, session_id, initiator_jid, target_jid) ⇒ IBBTarget
constructor
A new instance of IBBTarget.
Methods inherited from IBB
#active?, #close, #flush, #read, #write
Constructor Details
#initialize(stream, session_id, initiator_jid, target_jid) ⇒ IBBTarget
Returns a new instance of IBBTarget.
13 14 15 16 17 |
# File 'lib/xmpp4r/bytestreams/helper/ibb/target.rb', line 13 def initialize(stream, session_id, initiator_jid, target_jid) # Target and Initiator are swapped here, because we're the target super(stream, session_id, target_jid, initiator_jid) @accept_ready = Semaphore::new end |
Instance Attribute Details
#block_size ⇒ Object (readonly)
You may read the block-size after accept
11 12 13 |
# File 'lib/xmpp4r/bytestreams/helper/ibb/target.rb', line 11 def block_size @block_size end |
Instance Method Details
#accept ⇒ Object
Wait for the initiator side to start the stream.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/xmpp4r/bytestreams/helper/ibb/target.rb', line 26 def accept connect_sem = Semaphore.new @stream.add_iq_callback(200, self) { |iq| open = iq.first_element('open') if iq.type == :set and iq.from == @peer_jid and iq.to == @my_jid and open and open.attributes['sid'] == @session_id @stream.delete_iq_callback(self) activate @block_size = (open.attributes['block-size'] || 4096).to_i reply = iq.answer(false) reply.type = :result @stream.send(reply) connect_sem.run true else false end } @accept_ready.run connect_sem.wait true end |
#accept_wait ⇒ Object
19 20 21 |
# File 'lib/xmpp4r/bytestreams/helper/ibb/target.rb', line 19 def accept_wait @accept_ready.wait end |