Package pyxmpp :: Package jabberd :: Module component :: Class Component
[show private | hide private]
[frames | no frames]

Class Component


Jabber external component ("jabber:component:accept" protocol) interface
implementation.

Override this class to build your components.

:Ivariables:
    - `jid`: component JID (should contain only the domain part).
    - `secret`: the authentication secret.
    - `server`: server to which the commonent will connect.
    - `port`: port number on the server to which the commonent will
      connect.
    - `keepalive`: keepalive interval for the stream.
    - `stream`: the XMPP stream object for the active connection
      or `None` if no connection is active.
    - `disco_items`: disco items announced by the component. Created
      when a stream is connected.
    - `disco_info`: disco info announced by the component. Created
      when a stream is connected.
    - `disco_identity`: disco identity (part of disco info) announced by
      the component. Created when a stream is connected.
    - `disco_category`: disco category to be used to create
      `disco_identity`.
    - `disco_type`: disco type to be used to create `disco_identity`.

:Types:
    - `jid`:  `pyxmpp.JID`
    - `secret`: `unicode`
    - `server`: `unicode`
    - `port`: `int`
    - `keepalive`: `int`
    - `stream`: `pyxmpp.jabberd.ComponentStream`
    - `disco_items`: `pyxmpp.jabber.DiscoItems`
    - `disco_info`: `pyxmpp.jabber.DiscoInfo`
    - `disco_identity`: `pyxmpp.jabber.DiscoIdentity`
    - `disco_category`: `str`
    - `disco_type`: `str`

Method Summary
  __init__(self, jid, secret, server, port, disco_name, disco_category, disco_type, keepalive)
Initialize a `Component` object.
  authenticated(self)
Handle successful authentication event.
  authorized(self)
Handle successful authorization event.
  connect(self)
Establish a connection with the server.
  connected(self)
Handle stream connection event.
  disco_get_info(self, node, iq)
Get disco#info data for a node.
  disco_get_items(self, node, iq)
Get disco#items data for a node.
  disconnect(self)
Disconnect from the server.
  disconnected(self)
Handle stream disconnection (connection closed by peer) event.
  get_stream(self)
Get the stream of the component in a safe way.
  idle(self)
Do some "housekeeping" work like <iq/> result expiration.
  loop(self, timeout)
Simple 'main loop' for a component.
  register_feature(self, feature_name)
Register a feature to be announced by Service Discovery.
  socket(self)
Get the socket of the connection to the server.
  stream_closed(self, stream)
Handle stream closure event.
  stream_created(self, stream)
Handle stream creation event.
  stream_error(self, err)
Handle a stream error received.
  stream_state_changed(self, state, arg)
Handle a stream state change.
  unregister_feature(self, feature_name)
Unregister a feature to be announced by Service Discovery.
  __disco_info(self, iq)
Handle a disco-info query.
  __disco_items(self, iq)
Handle a disco-items query.
  __stream_state_change(self, state, arg)
Handle various stream state changes and call right methods of `self`.

Method Details

__init__(self, jid=None, secret=None, server=None, port=5347, disco_name=u'PyXMPP based component', disco_category=u'x-service', disco_type=u'x-unknown', keepalive=0)
(Constructor)

Initialize a `Component` object.

:Parameters:
    - `jid`: component JID (should contain only the domain part).
    - `secret`: the authentication secret.
    - `server`: server name or address the component should connect.
    - `port`: port number on the server where the component should connect.
    - `disco_name`: disco identity name to be used in the
      disco#info responses.
    - `disco_category`: disco identity category to be used in the
      disco#info responses.  Use `the categories registered by Jabber Registrar <http://www.jabber.org/registrar/disco-categories.html>`__
    - `disco_type`: disco identity type to be used in the component's
      disco#info responses.  Use `the types registered by Jabber Registrar <http://www.jabber.org/registrar/disco-categories.html>`__
    - `keepalive`: keepalive interval for the stream.

:Types:
    - `jid`:  `pyxmpp.JID`
    - `secret`: `unicode`
    - `server`: `str` or `unicode`
    - `port`: `int`
    - `disco_name`: `unicode`
    - `disco_category`: `unicode`
    - `disco_type`: `unicode`
    - `keepalive`: `int`

authenticated(self)

Handle successful authentication event.

A good place to register stanza handlers and disco features.

[should be overriden in derived classes]

By default: set disco#info and disco#items handlers.

authorized(self)

Handle successful authorization event.

connect(self)

Establish a connection with the server.

Set `self.stream` to the `pyxmpp.jabberd.ComponentStream` when
initial connection succeeds.

:raise ComponentError: when some of the component properties
  (`self.jid`, `self.secret`,`self.server` or `self.port`) are wrong.

connected(self)

Handle stream connection event.

[may be overriden in derived classes]

By default: do nothing.

disco_get_info(self, node, iq)

Get disco#info data for a node.

[may be overriden in derived classes]

By default: return `self.disco_info` if no specific node name
is provided.

:Parameters:
    - `node`: name of the node queried.
    - `iq`: the stanza received.
:Types:
    - `node`: `unicode`
    - `iq`: `pyxmpp.Iq`

disco_get_items(self, node, iq)

Get disco#items data for a node.

[may be overriden in derived classes]

By default: return `self.disco_items` if no specific node name
is provided.

:Parameters:
    - `node`: name of the node queried.
    - `iq`: the stanza received.
:Types:
    - `node`: `unicode`
    - `iq`: `pyxmpp.Iq`

disconnect(self)

Disconnect from the server.

disconnected(self)

Handle stream disconnection (connection closed by peer) event.

[may be overriden in derived classes]

By default: do nothing.

get_stream(self)

Get the stream of the component in a safe way.

:return: Stream object for the component or `None` if no connection is
    active.
:returntype: `pyxmpp.jabberd.ComponentStream`

idle(self)

Do some "housekeeping" work like <iq/> result expiration. Should be
called on a regular basis, usually when the component is idle.

loop(self, timeout=1)

Simple 'main loop' for a component.

This usually will be replaced by something more sophisticated. E.g.
handling of other input sources.

register_feature(self, feature_name)

Register a feature to be announced by Service Discovery.

:Parameters:
    - `feature_name`: feature namespace or name.
:Types:
    - `feature_name`: `unicode`

socket(self)

Get the socket of the connection to the server.

:return: the socket.
:returntype: `socket.socket`

stream_closed(self, stream)

Handle stream closure event.

[may be overriden in derived classes]

By default: do nothing.

:Parameters:
    - `stream`: the stream just created.
:Types:
    - `stream`: `pyxmpp.jabberd.ComponentStream`

stream_created(self, stream)

Handle stream creation event.

[may be overriden in derived classes]

By default: do nothing.

:Parameters:
    - `stream`: the stream just created.
:Types:
    - `stream`: `pyxmpp.jabberd.ComponentStream`

stream_error(self, err)

Handle a stream error received.

[may be overriden in derived classes]

By default: just log it. The stream will be closed anyway.

:Parameters:
    - `err`: the error element received.
:Types:
    - `err`: `pyxmpp.error.StreamErrorNode`

stream_state_changed(self, state, arg)

Handle a stream state change.

[may be overriden in derived classes]

By default: do nothing.

:Parameters:
    - `state`: state name.
    - `arg`: state parameter.
:Types:
    - `state`: `string`
    - `arg`: any object

unregister_feature(self, feature_name)

Unregister a feature to be announced by Service Discovery.

:Parameters:
    - `feature_name`: feature namespace or name.
:Types:
    - `feature_name`: `unicode`

__disco_info(self, iq)

Handle a disco-info query.

:Parameters:
    - `iq`: the stanza received.

Types:
    - `iq`: `pyxmpp.Iq`

__disco_items(self, iq)

Handle a disco-items query.

:Parameters:
    - `iq`: the stanza received.

Types:
    - `iq`: `pyxmpp.Iq`

__stream_state_change(self, state, arg)

Handle various stream state changes and call right
methods of `self`.

:Parameters:
    - `state`: state name.
    - `arg`: state parameter.
:Types:
    - `state`: `string`
    - `arg`: any object

Generated by Epydoc 2.1 on Wed May 31 22:36:59 2006 http://epydoc.sf.net