Yate
Public Member Functions | Protected Member Functions | Friends

XMPPUser Class Reference

An XMPP remote user. More...

#include <yatejabber.h>

Inheritance diagram for XMPPUser:
RefObject Mutex GenObject Lockable

List of all members.

Public Member Functions

 XMPPUser (XMPPUserRoster *local, const char *node, const char *domain, XMPPDirVal sub, bool subTo=true, bool sendProbe=true)
virtual ~XMPPUser ()
const JabberIDjid () const
XMPPUserRosterlocal () const
XMPPDirValsubscription ()
JIDResourceListlocalRes ()
JIDResourceListremoteRes ()
bool addLocalRes (JIDResource *resource, bool send=true)
void removeLocalRes (JIDResource *resource)
void clearLocalRes ()
bool addRemoteRes (JIDResource *resource)
void removeRemoteRes (JIDResource *resource)
JIDResourcegetAudio (bool local, bool availableOnly=true)
void processError (JBEvent *event)
void processProbe (JBEvent *event, const String *resName=0)
bool processPresence (JBEvent *event, bool available)
void processSubscribe (JBEvent *event, JBPresence::Presence type)
bool probe (JBStream *stream, u_int64_t time=Time::msecNow())
bool sendSubscribe (JBPresence::Presence type, JBStream *stream)
bool sendUnavailable (JBStream *stream)
bool sendPresence (JIDResource *resource, JBStream *stream=0, bool force=false)
bool timeout (u_int64_t time)
void notifyResource (bool remote, const String &name, JBStream *stream=0, bool force=false)
void notifyResources (bool remote, JBStream *stream=0, bool force=false)

Protected Member Functions

void updateSubscription (bool from, bool value, JBStream *stream)
void updateTimeout (bool from, u_int64_t time=Time::msecNow())

Friends

class XMPPUserRoster
class JBPresence

Detailed Description

An XMPP remote user.

This class holds a remote XMPP user along with his resources and subscribe state.


Constructor & Destructor Documentation

XMPPUser ( XMPPUserRoster local,
const char *  node,
const char *  domain,
XMPPDirVal  sub,
bool  subTo = true,
bool  sendProbe = true 
)

Create a remote user.

Parameters:
localThe local (owner) user peer.
nodeThe node (username) of the remote peer.
domainThe domain of the remote peer.
subThe subscription state.
subToTrue to force a subscribe request to remote peer if not subscribed.
sendProbeTrue to probe the new user.
virtual ~XMPPUser ( ) [virtual]

Destructor. Send unavailable if not already done.


Member Function Documentation

bool addLocalRes ( JIDResource resource,
bool  send = true 
)

Add a local resource to the list. Send presence if the remote peer is subscribed to the local one. This method is thread safe.

Parameters:
resourceThe resource to add.
sendTrue to send presence from the resource if it is a new one
Returns:
False if the the resource already exists in the list.
bool addRemoteRes ( JIDResource resource)

Add a remote resource to the list. This method is thread safe.

Parameters:
resourceThe resource to add
Returns:
False if the the resource already exists in the list
void clearLocalRes ( )

Remove all local resources. Send unavailable if the remote peer is subscribed to the local one. This method is thread safe.

JIDResource* getAudio ( bool  local,
bool  availableOnly = true 
) [inline]

Get the first remote resource with audio capability.

Parameters:
localTrue to request a local resource, false for a remote one.
availableOnlyTrue to get only if available.
Returns:
A pointer to the resource or 0.
const JabberID& jid ( ) const [inline]

Get the jid of this user.

Returns:
The jid of this user.
XMPPUserRoster* local ( ) const [inline]

Get the roster this user belongs to.

Returns:
Pointer to the roster this user belongs to.
JIDResourceList& localRes ( ) [inline]

Get the local resource list

Returns:
The local resource list
void notifyResource ( bool  remote,
const String name,
JBStream stream = 0,
bool  force = false 
)

Notify the state of a resource. This method is thread safe.

Parameters:
remoteTrue for a remote resource: notify the presence engine. False for a local resource: send presence to remote user.
nameResource name.
streamOptional stream to use to send the data if remote is false.
forceTrue to send even if we've already sent presence from this resource.
void notifyResources ( bool  remote,
JBStream stream = 0,
bool  force = false 
)

Notify the state of all resources. This method is thread safe.

Parameters:
remoteTrue for remote resources: notify the presence engine. False for local resources: send presence to remote user.
streamOptional stream to use to send the data if remote is false.
forceTrue to send even if we've already sent presence from a resource.
bool probe ( JBStream stream,
u_int64_t  time = Time::msecNow() 
)

Probe the remote user. This method is thread safe.

Parameters:
streamOptional stream to use to send the request.
timeProbe time.
Returns:
True if send succeedded.
void processError ( JBEvent event)

Process received error elements. This method is thread safe.

Parameters:
eventThe event with the element.
bool processPresence ( JBEvent event,
bool  available 
)

Process received presence from remote peer. This method is thread safe.

Parameters:
eventThe event with the element.
availableThe availability of the user.
Returns:
False if remote user has no more resources available.
void processProbe ( JBEvent event,
const String resName = 0 
)

Process received probe from remote peer. This method is thread safe.

Parameters:
eventThe event with the element.
resNameThe probed resource if any.
void processSubscribe ( JBEvent event,
JBPresence::Presence  type 
)

Process received subscription from remote peer. This method is thread safe.

Parameters:
eventThe event with the element.
typeThe subscription type: subscribe/unsubscribe/subscribed/unsubscribed.
JIDResourceList& remoteRes ( ) [inline]

Get the remote resource list

Returns:
The remote resource list
void removeLocalRes ( JIDResource resource)

Remove a local resource from the list. Send unavailable if the remote peer is subscribed to the local one. This method is thread safe.

Parameters:
resourceThe resource to remove.
void removeRemoteRes ( JIDResource resource)

Remove a remote resource from the list. This method is thread safe.

Parameters:
resourceThe resource to remove
bool sendPresence ( JIDResource resource,
JBStream stream = 0,
bool  force = false 
)

Send presence to remote peer. This method is thread safe.

Parameters:
resourceThe resource to send from.
streamOptional stream to use to send the data.
forceTrue to send even if we've already sent presence from this resource.
Returns:
True if send succeedded.
bool sendSubscribe ( JBPresence::Presence  type,
JBStream stream 
)

Send subscription to remote peer. This method is thread safe.

Parameters:
typeThe subscription type: subscribe/unsubscribe/subscribed/unsubscribed.
streamOptional stream to use to send the data.
Returns:
True if send succeedded.
bool sendUnavailable ( JBStream stream)

Send unavailable to remote peer. This method is thread safe.

Parameters:
streamOptional stream to use to send the data.
Returns:
True if send succeedded.
XMPPDirVal& subscription ( ) [inline]

Get the subscription state of this user

Returns:
The subscription state of this user
bool timeout ( u_int64_t  time)

Check if this user sent us any presence data for a given interval. This method is thread safe.

Parameters:
timeCurrent time.
Returns:
True if the user timed out.
void updateSubscription ( bool  from,
bool  value,
JBStream stream 
) [protected]

Update subscription state.

Parameters:
fromTrue for subscription from remote user. False for subscription to the remote user.
valueTrue if subscribed. False is unsubscribed.
streamOptional stream to use to send presence if subscription from remote user changed to true.
void updateTimeout ( bool  from,
u_int64_t  time = Time::msecNow() 
) [protected]

Update user timeout data.

Parameters:
fromTrue if the update is made on incoming data. False if timeout is made on outgoing probe.
timeCurrent time.

The documentation for this class was generated from the following file: