Package pyxmpp :: Package jabberd :: Module component :: Class Component

[hide private]

# Class Component

source code

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

Override this class to build your components.

Instance Methods | [hide private]

__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) Initialize a Component object. | source code

connect(self) Establish a connection with the server. | source code

pyxmpp.jabberd.ComponentStream

get_stream(self) Get the stream of the component in a safe way. | source code

disconnect(self) Disconnect from the server. | source code

`socket.socket`

socket(self) Get the socket of the connection to the server. | source code

loop(self, timeout=1) Simple 'main loop' for a component. | source code

register_feature(self, feature_name) Register a feature to be announced by Service Discovery. | source code

unregister_feature(self, feature_name) Unregister a feature to be announced by Service Discovery. | source code

__stream_state_change(self, state, arg) Handle various stream state changes and call right methods of `self`. | source code

__disco_info(self, iq) Handle a disco-info query. | source code

__disco_items(self, iq) Handle a disco-items query. | source code

idle(self) Do some "housekeeping" work like <iq/> result expiration. | source code

stream_created(self, stream) Handle stream creation event. | source code

stream_closed(self, stream) Handle stream closure event. | source code

stream_error(self, err) Handle a stream error received. | source code

stream_state_changed(self, state, arg) Handle a stream state change. | source code

connected(self) Handle stream connection event. | source code

authenticated(self) Handle successful authentication event. | source code

authorized(self) Handle successful authorization event. | source code

disco_get_info(self, node, iq) Get disco#info data for a node. | source code

disco_get_items(self, node, iq) Get disco#items data for a node. | source code

disconnected(self) Handle stream disconnection (connection closed by peer) event. | source code

Instance Variables | [hide private]

: `str` | disco_category : disco category to be used to create disco_identity.
: pyxmpp.jabber.DiscoIdentity | disco_identity : disco identity (part of disco info) announced by the component.
: pyxmpp.jabber.DiscoInfo | disco_info : disco info announced by the component.
: pyxmpp.jabber.DiscoItems | disco_items : disco items announced by the component.
: `str` | disco_type : disco type to be used to create disco_identity.
: pyxmpp.JID | jid : component JID (should contain only the domain part).
: `int` | keepalive : keepalive interval for the stream.
: `int` | port : port number on the server to which the commonent will connect.
: `unicode` | secret : the authentication secret.
: `unicode` | server : server to which the commonent will connect.
: pyxmpp.jabberd.ComponentStream | stream : the XMPP stream object for the active connection or `None` if no connection is active.

Method Details | [hide private]

### __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)

source code

Initialize a Component object.

Parameters:
  - `jid` (: pyxmpp.JID) - : component JID (should contain only the domain part).
  - `secret` (: `unicode`) - : the authentication secret.
  - `server` (: `str` or `unicode`) - : server name or address the component should connect.
  - `port` (: `int`) - : port number on the server where the component should connect.
  - `disco_name` (: `unicode`) - : disco identity name to be used in the disco#info responses.
  - `disco_category` (: `unicode`) - : disco identity category to be used in the disco#info responses. Use the categories registered by Jabber Registrar
  - `disco_type` (: `unicode`) - : disco identity type to be used in the component's disco#info responses. Use the types registered by Jabber Registrar
  - `keepalive` (: `int`) - : keepalive interval for the stream.

### connect(self)

source code

Establish a connection with the server.

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

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

### get_stream(self)

source code

Get the stream of the component in a safe way.

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

### socket(self)

source code

Get the socket of the connection to the server.

Returns: `socket.socket`
  the socket.

### loop(self, timeout=1)

source code

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)

source code

Register a feature to be announced by Service Discovery.

Parameters:
  - `feature_name` (: `unicode`) - : feature namespace or name.

### unregister_feature(self, feature_name)

source code

Unregister a feature to be announced by Service Discovery.

Parameters:
  - `feature_name` (: `unicode`) - : feature namespace or name.

### __stream_state_change(self, state, arg)

source code

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

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

### __disco_info(self, iq)

source code

Handle a disco-info query.

Types:
  - iq: pyxmpp.Iq

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

### __disco_items(self, iq)

source code

Handle a disco-items query.

Types:
  - iq: pyxmpp.Iq

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

### idle(self)

source code

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

### stream_created(self, stream)

source code

Handle stream creation event.

[may be overriden in derived classes]

By default: do nothing.

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

### stream_closed(self, stream)

source code

Handle stream closure event.

[may be overriden in derived classes]

By default: do nothing.

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

### stream_error(self, err)

source code

Handle a stream error received.

[may be overriden in derived classes]

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

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

### stream_state_changed(self, state, arg)

source code

Handle a stream state change.

[may be overriden in derived classes]

By default: do nothing.

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

### connected(self)

source code

Handle stream connection event.

[may be overriden in derived classes]

By default: do nothing.

### authenticated(self)

source code

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.

### disco_get_info(self, node, iq)

source code

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` (: `unicode`) - : name of the node queried.
  - `iq` (: pyxmpp.Iq) - : the stanza received.

### disco_get_items(self, node, iq)

source code

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` (: `unicode`) - : name of the node queried.
  - `iq` (: pyxmpp.Iq) - : the stanza received.

### disconnected(self)

source code

Handle stream disconnection (connection closed by peer) event.

[may be overriden in derived classes]

By default: do nothing.

Instance Variable Details | [hide private]

### disco_identity

: disco identity (part of disco info) announced by the component. Created when a stream is connected.

Type:
  : pyxmpp.jabber.DiscoIdentity

### disco_info

: disco info announced by the component. Created when a stream is connected.

Type:
  : pyxmpp.jabber.DiscoInfo

### disco_items

: disco items announced by the component. Created when a stream is connected.

Type:
  : pyxmpp.jabber.DiscoItems