Parent

Class/Module Index [+]

Quicksearch

Jabber::Component

The component class provides everything needed to build a XMPP Component.

Components are more flexible as they are only restricted in the use of a fixed domain. node and resource of JIDs are freely choosable for all stanzas.

Attributes

jid[R]

The component's JID

server_address[R]

The server's address

server_port[R]

The server's port

Public Class Methods

new(jid, server_address=nil, server_port=5347) click to toggle source

Create a new Component

jid

JID
# File lib/xmpp4r/component.rb, line 26
def initialize(jid, server_address=nil, server_port=5347)
  super()
  @jid = (jid.kind_of?(JID) ? jid : JID.new(jid.to_s))

  if server_address
    $stderr.puts "Passing server and port to Jabber::Component.new is " +
                 "obsolete and will vanish in some later XMPP4R release. " +
                 "Please use these arguments when calling " +
                 "Jabber::Client#connect"
    @server_address = server_address
    @server_port = server_port
  end
end

Public Instance Methods

auth(secret) click to toggle source

Send auth with given secret and wait for result

Throws ComponentAuthenticationFailure

secret

String

the shared secret

# File lib/xmpp4r/component.rb, line 85
def auth(secret)
  hash = Digest::SHA1::hexdigest(@streamid.to_s + secret)
  authenticated = false
  send("<handshake>#{hash}</handshake>") { |r|
    if r.prefix == 'stream' and r.name == 'error'
      true
    elsif r.name == 'handshake'
      authenticated = true
      true
    else
      false
    end
  }
  unless authenticated
    raise ComponentAuthenticationFailure.new, "Component authentication failed"
  end
end
close() click to toggle source

Close the connection, sends </stream:stream> tag first

# File lib/xmpp4r/component.rb, line 57
def close
  send("</stream:stream>")
  super
end
connect(server=nil, port=5347) click to toggle source

Connect to the server (chaining-friendly)

server

String

Hostname

port

Integer

TCP port (5347)

return

self

# File lib/xmpp4r/component.rb, line 45
def connect(server=nil, port=5347)
  if server
    super(server, port)
  else
    super(@server_address, @server_port)
  end
  self
end
start() click to toggle source

Start the stream-parser and send the component-specific stream opening element

# File lib/xmpp4r/component.rb, line 69
def start
  super
  send(generate_stream_start(@jid)) { |e|
    if e.name == 'stream'
      true
    else
      false
    end
  }
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.