You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kopete/protocols/jabber/jabberresourcepool.h

131 lines
3.4 KiB

/*
* jabberresourcepool.h
*
* Copyright (c) 2004 by Till Gerken <till@tantalo.net>
* Copyright (c) 2006 by Michaël Larouche <michael.larouche@kdemail.net>
*
* Kopete (c) by the Kopete developers <kopete-devel@kde.org>
*
* *************************************************************************
* * *
* * This program is free software; you can redistribute it and/or modify *
* * it under the terms of the GNU General Public License as published by *
* * the Free Software Foundation; either version 2 of the License, or *
* * (at your option) any later version. *
* * *
* *************************************************************************
*/
#ifndef JABBERRESOURCEPOOL_H
#define JABBERRESOURCEPOOL_H
#include <tqobject.h>
#include <im.h>
class JabberResource;
class JabberAccount;
/**
* @author Till Gerken <till@tantalo.net>
* @author Michaël Larouche <michael.larouche@kdemail.net>
*/
class JabberResourcePool : public TQObject
{
Q_OBJECT
public:
static XMPP::Resource EmptyResource;
typedef TQPtrList<JabberResource> ResourceList;
/**
* Default constructor
*/
JabberResourcePool ( JabberAccount *account );
/**
* Default destructor
*/
~JabberResourcePool();
/**
* Notify all relevant contacts in case
* a resource has been added, updated or removed.
*/
void notifyRelevantContacts ( const XMPP::Jid &jid );
/**
* Add a resource to the pool
*/
void addResource ( const XMPP::Jid &jid, const XMPP::Resource &resource );
/**
* Remove a resource from the pool
*/
void removeResource ( const XMPP::Jid &jid, const XMPP::Resource &resource );
/**
* Remove all resources for a given address from the pool
* NOTE: Since this method is mainly used for housekeeping,
* it does NOT notify any contacts.
*/
void removeAllResources ( const XMPP::Jid &jid );
/**
* Remove all resources from the pool
*/
void clear ();
/**
* Lock to a certain resource
*/
void lockToResource ( const XMPP::Jid &jid, const XMPP::Resource &resource );
/**
* Remove a resource lock
*/
void removeLock ( const XMPP::Jid &jid );
/**
* Return the JabberResource instance for the locked resource, if any.
*/
JabberResource *lockedJabberResource( const XMPP::Jid &jid );
/**
* Return currently locked resource, if any
*/
const XMPP::Resource &lockedResource ( const XMPP::Jid &jid );
/**
* Return a usable JabberResource for a given JID.
*
* @param jid Jid to look for the best resource.
* @param honourLock Honour the resource locked by the user.
*
* @return a JabberResource instance.
*/
JabberResource *bestJabberResource( const XMPP::Jid &jid, bool honourLock = true );
/**
* Return usable resource for a given JID
* Matches by userHost(), honours locks for a JID by default
*/
const XMPP::Resource &bestResource ( const XMPP::Jid &jid, bool honourLock = true );
/**
* Find all resources that exist for a given JID
*/
void findResources ( const XMPP::Jid &jid, JabberResourcePool::ResourceList &resourceList );
void findResources ( const XMPP::Jid &jid, XMPP::ResourceList &resourceList );
private slots:
void slotResourceDestroyed ( TQObject *sender );
void slotResourceUpdated ( JabberResource *resource );
private:
class Private;
Private *d;
};
#endif