|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/*
|
|
Packit Service |
37472d |
Meanwhile - Unofficial Lotus Sametime Community Client Library
|
|
Packit Service |
37472d |
Copyright (C) 2004 Christopher (siege) O'Brien
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
This library is free software; you can redistribute it and/or
|
|
Packit Service |
37472d |
modify it under the terms of the GNU Library General Public
|
|
Packit Service |
37472d |
License as published by the Free Software Foundation; either
|
|
Packit Service |
37472d |
version 2 of the License, or (at your option) any later version.
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
This library is distributed in the hope that it will be useful,
|
|
Packit Service |
37472d |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
37472d |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
37472d |
Library General Public License for more details.
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
You should have received a copy of the GNU Library General Public
|
|
Packit Service |
37472d |
License along with this library; if not, write to the Free
|
|
Packit Service |
37472d |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
#ifndef _MW_SRVC_AWARE_H
|
|
Packit Service |
37472d |
#define _MW_SRVC_AWARE_H
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** @file mw_srvc_aware.h
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
The aware service...
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
@todo remove the whole idea of an instantiated mwAwareList and
|
|
Packit Service |
37472d |
instead use arbitrary pointers (including NULL) as keys to
|
|
Packit Service |
37472d |
internally stored lists. This removes the problem of the service
|
|
Packit Service |
37472d |
free'ing its lists and invalidating mwAwareList references from
|
|
Packit Service |
37472d |
client code.
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
#include "mw_common.h"
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
#ifdef __cplusplus
|
|
Packit Service |
37472d |
extern "C" {
|
|
Packit Service |
37472d |
#endif
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Type identifier for the aware service */
|
|
Packit Service |
37472d |
#define mwService_AWARE 0x00000011
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** @struct mwServiceAware
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
Instance of an Aware Service. The members of this structure are
|
|
Packit Service |
37472d |
not made available. Accessing the parts of an aware service should
|
|
Packit Service |
37472d |
be performed through the appropriate functions. Note that
|
|
Packit Service |
37472d |
instances of this structure can be safely cast to a mwService.
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
struct mwServiceAware;
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** @struct mwAwareList
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
Instance of an Aware List. The members of this structure are not
|
|
Packit Service |
37472d |
made available. Access to the parts of an aware list should be
|
|
Packit Service |
37472d |
handled through the appropriate functions.
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
Any references to an aware list are rendered invalid when the
|
|
Packit Service |
37472d |
parent service is free'd
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
struct mwAwareList;
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** @struct mwAwareAttribute
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
Key/Opaque pair indicating an identity's attribute.
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
struct mwAwareAttribute;
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Predefined keys appropriate for a mwAwareAttribute
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
enum mwAwareAttributeKeys {
|
|
Packit Service |
37472d |
mwAttribute_AV_PREFS_SET = 0x01, /**< A/V prefs specified, gboolean */
|
|
Packit Service |
37472d |
mwAttribute_MICROPHONE = 0x02, /**< has a microphone, gboolean */
|
|
Packit Service |
37472d |
mwAttribute_SPEAKERS = 0x03, /**< has speakers, gboolean */
|
|
Packit Service |
37472d |
mwAttribute_VIDEO_CAMERA = 0x04, /**< has a video camera, gboolean */
|
|
Packit Service |
37472d |
mwAttribute_FILE_TRANSFER = 0x06, /**< supports file transfers, gboolean */
|
|
Packit Service |
37472d |
};
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
typedef void (*mwAwareAttributeHandler)
|
|
Packit Service |
37472d |
(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
struct mwAwareHandler {
|
|
Packit Service |
37472d |
mwAwareAttributeHandler on_attrib;
|
|
Packit Service |
37472d |
void (*clear)(struct mwServiceAware *srvc);
|
|
Packit Service |
37472d |
};
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Appropriate function type for the on-aware signal
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
@param list mwAwareList emiting the signal
|
|
Packit Service |
37472d |
@param id awareness status information
|
|
Packit Service |
37472d |
@param data user-specified data
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
typedef void (*mwAwareSnapshotHandler)
|
|
Packit Service |
37472d |
(struct mwAwareList *list,
|
|
Packit Service |
37472d |
struct mwAwareSnapshot *id);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Appropriate function type for the on-option signal. The option's
|
|
Packit Service |
37472d |
value may need to be explicitly loaded in some instances,
|
|
Packit Service |
37472d |
resulting in this handler being triggered again.
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
@param list mwAwareList emiting the signal
|
|
Packit Service |
37472d |
@param id awareness the attribute belongs to
|
|
Packit Service |
37472d |
@param attrib attribute
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
typedef void (*mwAwareIdAttributeHandler)
|
|
Packit Service |
37472d |
(struct mwAwareList *list,
|
|
Packit Service |
37472d |
struct mwAwareIdBlock *id,
|
|
Packit Service |
37472d |
struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
struct mwAwareListHandler {
|
|
Packit Service |
37472d |
/** handle aware updates */
|
|
Packit Service |
37472d |
mwAwareSnapshotHandler on_aware;
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** handle attribute updates */
|
|
Packit Service |
37472d |
mwAwareIdAttributeHandler on_attrib;
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** optional. Called from mwAwareList_free */
|
|
Packit Service |
37472d |
void (*clear)(struct mwAwareList *list);
|
|
Packit Service |
37472d |
};
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
struct mwServiceAware *
|
|
Packit Service |
37472d |
mwServiceAware_new(struct mwSession *session,
|
|
Packit Service |
37472d |
struct mwAwareHandler *handler);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Set an attribute value for this session */
|
|
Packit Service |
37472d |
int mwServiceAware_setAttribute(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
guint32 key, struct mwOpaque *opaque);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
int mwServiceAware_setAttributeBoolean(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
guint32 key, gboolean val);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
int mwServiceAware_setAttributeInteger(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
guint32 key, guint32 val);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
int mwServiceAware_setAttributeString(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
guint32 key, const char *str);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Unset an attribute for this session */
|
|
Packit Service |
37472d |
int mwServiceAware_unsetAttribute(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
guint32 key);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
guint32 mwAwareAttribute_getKey(const struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
gboolean mwAwareAttribute_asBoolean(const struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
guint32 mwAwareAttribute_asInteger(const struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Copy of attribute string, must be g_free'd. If the attribute's
|
|
Packit Service |
37472d |
content cannot be loaded as a string, returns NULL */
|
|
Packit Service |
37472d |
char *mwAwareAttribute_asString(const struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Direct access to an attribute's underlying opaque */
|
|
Packit Service |
37472d |
const struct mwOpaque *
|
|
Packit Service |
37472d |
mwAwareAttribute_asOpaque(const struct mwAwareAttribute *attrib);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Allocate and initialize an aware list */
|
|
Packit Service |
37472d |
struct mwAwareList *
|
|
Packit Service |
37472d |
mwAwareList_new(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
struct mwAwareListHandler *handler);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Clean and free an aware list */
|
|
Packit Service |
37472d |
void mwAwareList_free(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
struct mwAwareListHandler *mwAwareList_getHandler(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Add a collection of user IDs to an aware list.
|
|
Packit Service |
37472d |
@param list mwAwareList to add user ID to
|
|
Packit Service |
37472d |
@param id_list mwAwareIdBlock list of user IDs to add
|
|
Packit Service |
37472d |
@return 0 for success, non-zero to indicate an error.
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
int mwAwareList_addAware(struct mwAwareList *list, GList *id_list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** Remove a collection of user IDs from an aware list.
|
|
Packit Service |
37472d |
@param list mwAwareList to remove user ID from
|
|
Packit Service |
37472d |
@param id_list mwAwareIdBlock list of user IDs to remove
|
|
Packit Service |
37472d |
@return 0 for success, non-zero to indicate an error.
|
|
Packit Service |
37472d |
*/
|
|
Packit Service |
37472d |
int mwAwareList_removeAware(struct mwAwareList *list, GList *id_list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
int mwAwareList_removeAllAware(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** watch an NULL terminated array of keys */
|
|
Packit Service |
37472d |
int mwAwareList_watchAttributeArray(struct mwAwareList *list,
|
|
Packit Service |
37472d |
guint32 *keys);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** watch a NULL terminated list of keys */
|
|
Packit Service |
37472d |
int mwAwareList_watchAttributes(struct mwAwareList *list,
|
|
Packit Service |
37472d |
guint32 key, ...);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** stop watching a NULL terminated array of keys */
|
|
Packit Service |
37472d |
int mwAwareList_unwatchAttributeArray(struct mwAwareList *list,
|
|
Packit Service |
37472d |
guint32 *keys);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** stop watching a NULL terminated list of keys */
|
|
Packit Service |
37472d |
int mwAwareList_unwatchAttributes(struct mwAwareList *list,
|
|
Packit Service |
37472d |
guint32 key, ...);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** remove all watched attributes */
|
|
Packit Service |
37472d |
int mwAwareList_unwatchAllAttributes(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
guint32 *mwAwareList_getWatchedAttributes(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
void mwAwareList_setClientData(struct mwAwareList *list,
|
|
Packit Service |
37472d |
gpointer data, GDestroyNotify cleanup);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
void mwAwareList_removeClientData(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
gpointer mwAwareList_getClientData(struct mwAwareList *list);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** trigger a got_aware event constructed from the passed user and
|
|
Packit Service |
37472d |
status information. Useful for adding false users and having the
|
|
Packit Service |
37472d |
getText function work for them */
|
|
Packit Service |
37472d |
void mwServiceAware_setStatus(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
struct mwAwareIdBlock *user,
|
|
Packit Service |
37472d |
struct mwUserStatus *stat);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** look up the status description for a user */
|
|
Packit Service |
37472d |
const char *mwServiceAware_getText(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
struct mwAwareIdBlock *user);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
/** look up the last known copy of an attribute for a user by the
|
|
Packit Service |
37472d |
attribute's key */
|
|
Packit Service |
37472d |
const struct mwAwareAttribute *
|
|
Packit Service |
37472d |
mwServiceAware_getAttribute(struct mwServiceAware *srvc,
|
|
Packit Service |
37472d |
struct mwAwareIdBlock *user,
|
|
Packit Service |
37472d |
guint32 key);
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
#ifdef __cplusplus
|
|
Packit Service |
37472d |
}
|
|
Packit Service |
37472d |
#endif
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
|
|
Packit Service |
37472d |
#endif /* _MW_SRVC_AWARE_H */
|
|
Packit Service |
37472d |
|