|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/*
|
|
Packit |
ee6627 |
Meanwhile - Unofficial Lotus Sametime Community Client Library
|
|
Packit |
ee6627 |
Copyright (C) 2004 Christopher (siege) O'Brien
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
This library is free software; you can redistribute it and/or
|
|
Packit |
ee6627 |
modify it under the terms of the GNU Library General Public
|
|
Packit |
ee6627 |
License as published by the Free Software Foundation; either
|
|
Packit |
ee6627 |
version 2 of the License, or (at your option) any later version.
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
This library is distributed in the hope that it will be useful,
|
|
Packit |
ee6627 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
ee6627 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
ee6627 |
Library General Public License for more details.
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
You should have received a copy of the GNU Library General Public
|
|
Packit |
ee6627 |
License along with this library; if not, write to the Free
|
|
Packit |
ee6627 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#ifndef _MW_SRVC_CONF_H
|
|
Packit |
ee6627 |
#define _MW_SRVC_CONF_H
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#include <glib/glist.h>
|
|
Packit |
ee6627 |
#include "mw_common.h"
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#ifdef __cplusplus
|
|
Packit |
ee6627 |
extern "C" {
|
|
Packit |
ee6627 |
#endif
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Type identifier for the conference service */
|
|
Packit |
ee6627 |
#define mwService_CONFERENCE 0x80000010
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
enum mwConferenceState {
|
|
Packit |
ee6627 |
mwConference_NEW, /**< new outgoing conference */
|
|
Packit |
ee6627 |
mwConference_PENDING, /**< outgoing conference pending creation */
|
|
Packit |
ee6627 |
mwConference_INVITED, /**< invited to incoming conference */
|
|
Packit |
ee6627 |
mwConference_OPEN, /**< conference open and active */
|
|
Packit |
ee6627 |
mwConference_CLOSING, /**< conference is closing */
|
|
Packit |
ee6627 |
mwConference_ERROR, /**< conference is closing due to error */
|
|
Packit |
ee6627 |
mwConference_UNKNOWN, /**< unable to determine conference state */
|
|
Packit |
ee6627 |
};
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @struct mwServiceConference
|
|
Packit |
ee6627 |
Instance of the multi-user conference service */
|
|
Packit |
ee6627 |
struct mwServiceConference;
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @struct mwConference
|
|
Packit |
ee6627 |
A multi-user chat */
|
|
Packit |
ee6627 |
struct mwConference;
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Handler structure used to provide callbacks for an instance of the
|
|
Packit |
ee6627 |
conferencing service */
|
|
Packit |
ee6627 |
struct mwConferenceHandler {
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when we receive a conference invitation. Call
|
|
Packit |
ee6627 |
mwConference_accept to accept the invitation and join the
|
|
Packit |
ee6627 |
conference, or mwConference_close to reject the invitation.
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
@param conf the newly created conference
|
|
Packit |
ee6627 |
@param inviter the indentity of the user who sent the invitation
|
|
Packit |
ee6627 |
@param invite the invitation text
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
void (*on_invited)(struct mwConference *conf,
|
|
Packit |
ee6627 |
struct mwLoginInfo *inviter, const char *invite);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when we enter the conference. Provides the initial
|
|
Packit |
ee6627 |
conference membership list as a GList of mwLoginInfo structures
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
@param conf the conference just joined
|
|
Packit |
ee6627 |
@param members mwLoginInfo list of existing conference members
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
void (*conf_opened)(struct mwConference *conf, GList *members);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when a conference is closed. This is typically when
|
|
Packit |
ee6627 |
we've left it */
|
|
Packit |
ee6627 |
void (*conf_closed)(struct mwConference *, guint32 reason);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when someone joins the conference */
|
|
Packit |
ee6627 |
void (*on_peer_joined)(struct mwConference *, struct mwLoginInfo *);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when someone leaves the conference */
|
|
Packit |
ee6627 |
void (*on_peer_parted)(struct mwConference *, struct mwLoginInfo *);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** triggered when someone says something */
|
|
Packit |
ee6627 |
void (*on_text)(struct mwConference *conf,
|
|
Packit |
ee6627 |
struct mwLoginInfo *who, const char *what);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** typing notification */
|
|
Packit |
ee6627 |
void (*on_typing)(struct mwConference *conf,
|
|
Packit |
ee6627 |
struct mwLoginInfo *who, gboolean typing);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** optional. called from mwService_free */
|
|
Packit |
ee6627 |
void (*clear)(struct mwServiceConference *srvc);
|
|
Packit |
ee6627 |
};
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Allocate a new conferencing service, attaching the given handler
|
|
Packit |
ee6627 |
@param sess owning session
|
|
Packit |
ee6627 |
@param handler handler providing call-back functions for the service
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
struct mwServiceConference *
|
|
Packit |
ee6627 |
mwServiceConference_new(struct mwSession *sess,
|
|
Packit |
ee6627 |
struct mwConferenceHandler *handler);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @returns the conference handler for the service */
|
|
Packit |
ee6627 |
struct mwConferenceHandler *
|
|
Packit |
ee6627 |
mwServiceConference_getHandler(struct mwServiceConference *srvc);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** a mwConference list of the conferences in this service. The GList
|
|
Packit |
ee6627 |
will need to be destroyed with g_list_free after use */
|
|
Packit |
ee6627 |
GList *mwServiceConference_getConferences(struct mwServiceConference *srvc);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Allocate a new conference, in state NEW with the given title.
|
|
Packit |
ee6627 |
@see mwConference_create */
|
|
Packit |
ee6627 |
struct mwConference *mwConference_new(struct mwServiceConference *srvc,
|
|
Packit |
ee6627 |
const char *title);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @returns the owning service of a conference */
|
|
Packit |
ee6627 |
struct mwServiceConference *mwConference_getService(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @returns unique conference name */
|
|
Packit |
ee6627 |
const char *mwConference_getName(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** @returns conference title */
|
|
Packit |
ee6627 |
const char *mwConference_getTitle(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** a mwIdBlock list of the members of the conference. The GList will
|
|
Packit |
ee6627 |
need to be free'd after use */
|
|
Packit |
ee6627 |
GList *mwConference_getMembers(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Initiate a conference. Conference must be in state NEW. If no name
|
|
Packit |
ee6627 |
or title for the conference has been set, they will be
|
|
Packit |
ee6627 |
generated. Conference will be placed into state PENDING. */
|
|
Packit |
ee6627 |
int mwConference_open(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** Leave and close an existing conference, or reject an invitation.
|
|
Packit |
ee6627 |
Triggers mwServiceConfHandler::conf_closed and free's the
|
|
Packit |
ee6627 |
conference.
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
int mwConference_destroy(struct mwConference *conf,
|
|
Packit |
ee6627 |
guint32 reason, const char *text);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#define mwConference_reject(c,r,t) \
|
|
Packit |
ee6627 |
mwConference_destroy((c),(r),(t))
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** accept a conference invitation. Conference must be in the state
|
|
Packit |
ee6627 |
INVITED. */
|
|
Packit |
ee6627 |
int mwConference_accept(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** invite another user to an ACTIVE conference
|
|
Packit |
ee6627 |
@param conf conference
|
|
Packit |
ee6627 |
@param who user to invite
|
|
Packit |
ee6627 |
@param text invitation message
|
|
Packit |
ee6627 |
*/
|
|
Packit |
ee6627 |
int mwConference_invite(struct mwConference *conf,
|
|
Packit |
ee6627 |
struct mwIdBlock *who, const char *text);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** send a text message over an open conference */
|
|
Packit |
ee6627 |
int mwConference_sendText(struct mwConference *conf, const char *text);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** send typing notification over an open conference */
|
|
Packit |
ee6627 |
int mwConference_sendTyping(struct mwConference *conf, gboolean typing);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** associate arbitrary client data and an optional cleanup function
|
|
Packit |
ee6627 |
with a conference. If there is already client data with a clear
|
|
Packit |
ee6627 |
function, it will not be called. */
|
|
Packit |
ee6627 |
void mwConference_setClientData(struct mwConference *conf,
|
|
Packit |
ee6627 |
gpointer data, GDestroyNotify clear);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** reference associated client data */
|
|
Packit |
ee6627 |
gpointer mwConference_getClientData(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
/** remove associated client data if any, and call the cleanup
|
|
Packit |
ee6627 |
function on the data as necessary */
|
|
Packit |
ee6627 |
void mwConference_removeClientData(struct mwConference *conf);
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#ifdef __cplusplus
|
|
Packit |
ee6627 |
}
|
|
Packit |
ee6627 |
#endif
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
|
|
Packit |
ee6627 |
#endif /* _MW_SRVC_CONF_H */
|
|
Packit |
ee6627 |
|