org.jivesoftware.openfire.handler
Class PresenceSubscribeHandler
java.lang.Object
org.jivesoftware.openfire.container.BasicModule
org.jivesoftware.openfire.handler.PresenceSubscribeHandler
- All Implemented Interfaces:
- ChannelHandler, Module
public class PresenceSubscribeHandler
- extends BasicModule
- implements ChannelHandler
Implements the presence protocol. Clients use this protocol to
update presence and roster information.
The handler must properly detect the presence type, update the user's roster,
and inform presence subscribers of the session's updated presence
status. Presence serves many purposes in Jabber so this handler will
likely be the most complex of all handlers in the server.
There are four basic types of presence updates:
- Simple presence updates - addressed to the server (or to address), these updates
are properly addressed by the server, and multicast to
interested subscribers on the user's roster. An empty, missing,
or "unavailable" type attribute indicates a simple update (there
is no "available" type although it should be accepted by the server.
- Directed presence updates - addressed to particular jabber entities,
these presence updates are properly addressed and directly delivered
to the entity without broadcast to roster subscribers. Any update type
is possible except those reserved for subscription requests.
- Subscription requests - these updates request presence subscription
status changes. Such requests always affect the roster. The server must:
- update the roster with the proper subscriber info
- push the roster changes to the user
- forward the update to the correct parties.
The valid types include "subscribe", "subscribed", "unsubscribed",
and "unsubscribe".
- XMPPServer probes - Provides a mechanism for servers to query the presence
status of users on another server. This allows users to immediately
know the presence status of users when they come online rather than way
for a presence update broadcast from the other server or tracking them
as they are received. Requires S2S capabilities.
Warning
There should be a way of determining whether a session has
authorization to access this feature. I'm not sure it is a good
idea to do authorization in each handler. It would be nice if
the framework could assert authorization policies across channels.
- Author:
- Iain Shigeoka
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
PresenceSubscribeHandler
public PresenceSubscribeHandler()
process
public void process(Packet xmppPacket)
throws PacketException
- Description copied from interface:
ChannelHandler
- Process an XMPP packet.
- Specified by:
process
in interface ChannelHandler
- Parameters:
xmppPacket
- a packet to process.
- Throws:
PacketException
- thrown if the packet is malformed (results in the sender's
session being shutdown).
initialize
public void initialize(XMPPServer server)
- Description copied from class:
BasicModule
Initializes the basic module.
Inheriting classes that choose to override this method MUST
call this initialize() method before accessing BasicModule resources.
- Specified by:
initialize
in interface Module
- Overrides:
initialize
in class BasicModule
- Parameters:
server
- the server hosting this module.
Copyright © 2003-2007 Jive Software.