Blame src/mw_srvc_conf.h

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_CONF_H
Packit Service 37472d
#define _MW_SRVC_CONF_H
Packit Service 37472d
Packit Service 37472d
Packit Service 1bfe49
#include <glib.h>
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 conference service */
Packit Service 37472d
#define mwService_CONFERENCE  0x80000010
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
enum mwConferenceState {
Packit Service 37472d
  mwConference_NEW,      /**< new outgoing conference */
Packit Service 37472d
  mwConference_PENDING,  /**< outgoing conference pending creation */
Packit Service 37472d
  mwConference_INVITED,  /**< invited to incoming conference */
Packit Service 37472d
  mwConference_OPEN,     /**< conference open and active */
Packit Service 37472d
  mwConference_CLOSING,  /**< conference is closing */
Packit Service 37472d
  mwConference_ERROR,    /**< conference is closing due to error */
Packit Service 37472d
  mwConference_UNKNOWN,  /**< unable to determine conference state */
Packit Service 37472d
};
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @struct mwServiceConference
Packit Service 37472d
    Instance of the multi-user conference service */
Packit Service 37472d
struct mwServiceConference;
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @struct mwConference
Packit Service 37472d
    A multi-user chat */
Packit Service 37472d
struct mwConference;
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** Handler structure used to provide callbacks for an instance of the
Packit Service 37472d
    conferencing service */
Packit Service 37472d
struct mwConferenceHandler {
Packit Service 37472d
Packit Service 37472d
  /** triggered when we receive a conference invitation. Call
Packit Service 37472d
      mwConference_accept to accept the invitation and join the
Packit Service 37472d
      conference, or mwConference_close to reject the invitation.
Packit Service 37472d
Packit Service 37472d
      @param conf     the newly created conference
Packit Service 37472d
      @param inviter  the indentity of the user who sent the invitation
Packit Service 37472d
      @param invite   the invitation text
Packit Service 37472d
   */
Packit Service 37472d
  void (*on_invited)(struct mwConference *conf,
Packit Service 37472d
		     struct mwLoginInfo *inviter, const char *invite);
Packit Service 37472d
Packit Service 37472d
  /** triggered when we enter the conference. Provides the initial
Packit Service 37472d
      conference membership list as a GList of mwLoginInfo structures
Packit Service 37472d
Packit Service 37472d
      @param conf     the conference just joined
Packit Service 37472d
      @param members  mwLoginInfo list of existing conference members
Packit Service 37472d
  */
Packit Service 37472d
  void (*conf_opened)(struct mwConference *conf, GList *members);
Packit Service 37472d
Packit Service 37472d
  /** triggered when a conference is closed. This is typically when
Packit Service 37472d
      we've left it */
Packit Service 37472d
  void (*conf_closed)(struct mwConference *, guint32 reason);
Packit Service 37472d
Packit Service 37472d
  /** triggered when someone joins the conference */
Packit Service 37472d
  void (*on_peer_joined)(struct mwConference *, struct mwLoginInfo *);
Packit Service 37472d
Packit Service 37472d
  /** triggered when someone leaves the conference */
Packit Service 37472d
  void (*on_peer_parted)(struct mwConference *, struct mwLoginInfo *);
Packit Service 37472d
Packit Service 37472d
  /** triggered when someone says something */
Packit Service 37472d
  void (*on_text)(struct mwConference *conf,
Packit Service 37472d
		  struct mwLoginInfo *who, const char *what);
Packit Service 37472d
Packit Service 37472d
  /** typing notification */
Packit Service 37472d
  void (*on_typing)(struct mwConference *conf,
Packit Service 37472d
		    struct mwLoginInfo *who, gboolean typing);
Packit Service 37472d
Packit Service 37472d
  /** optional. called from mwService_free */
Packit Service 37472d
  void (*clear)(struct mwServiceConference *srvc);
Packit Service 37472d
};
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** Allocate a new conferencing service, attaching the given handler
Packit Service 37472d
    @param sess     owning session
Packit Service 37472d
    @param handler  handler providing call-back functions for the service
Packit Service 37472d
 */
Packit Service 37472d
struct mwServiceConference *
Packit Service 37472d
mwServiceConference_new(struct mwSession *sess,
Packit Service 37472d
			struct mwConferenceHandler *handler);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @returns the conference handler for the service */
Packit Service 37472d
struct mwConferenceHandler *
Packit Service 37472d
mwServiceConference_getHandler(struct mwServiceConference *srvc);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** a mwConference list of the conferences in this service. The GList
Packit Service 37472d
    will need to be destroyed with g_list_free after use */
Packit Service 37472d
GList *mwServiceConference_getConferences(struct mwServiceConference *srvc);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** Allocate a new conference, in state NEW with the given title.
Packit Service 37472d
    @see mwConference_create */
Packit Service 37472d
struct mwConference *mwConference_new(struct mwServiceConference *srvc,
Packit Service 37472d
				      const char *title);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @returns the owning service of a conference */
Packit Service 37472d
struct mwServiceConference *mwConference_getService(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @returns unique conference name */
Packit Service 37472d
const char *mwConference_getName(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** @returns conference title */
Packit Service 37472d
const char *mwConference_getTitle(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** a mwIdBlock list of the members of the conference. The GList will
Packit Service 37472d
    need to be free'd after use */
Packit Service 37472d
GList *mwConference_getMembers(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** Initiate a conference. Conference must be in state NEW. If no name
Packit Service 37472d
    or title for the conference has been set, they will be
Packit Service 37472d
    generated. Conference will be placed into state PENDING. */
Packit Service 37472d
int mwConference_open(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** Leave and close an existing conference, or reject an invitation.
Packit Service 37472d
    Triggers mwServiceConfHandler::conf_closed and free's the
Packit Service 37472d
    conference.
Packit Service 37472d
 */
Packit Service 37472d
int mwConference_destroy(struct mwConference *conf,
Packit Service 37472d
			 guint32 reason, const char *text);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
#define mwConference_reject(c,r,t) \
Packit Service 37472d
  mwConference_destroy((c),(r),(t))
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** accept a conference invitation. Conference must be in the state
Packit Service 37472d
    INVITED. */
Packit Service 37472d
int mwConference_accept(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** invite another user to an ACTIVE conference
Packit Service 37472d
    @param conf  conference
Packit Service 37472d
    @param who   user to invite
Packit Service 37472d
    @param text  invitation message
Packit Service 37472d
 */
Packit Service 37472d
int mwConference_invite(struct mwConference *conf,
Packit Service 37472d
			struct mwIdBlock *who, const char *text);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** send a text message over an open conference */
Packit Service 37472d
int mwConference_sendText(struct mwConference *conf, const char *text);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** send typing notification over an open conference */
Packit Service 37472d
int mwConference_sendTyping(struct mwConference *conf, gboolean typing);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** associate arbitrary client data and an optional cleanup function
Packit Service 37472d
    with a conference. If there is already client data with a clear
Packit Service 37472d
    function, it will not be called. */
Packit Service 37472d
void mwConference_setClientData(struct mwConference *conf,
Packit Service 37472d
				gpointer data, GDestroyNotify clear);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** reference associated client data */
Packit Service 37472d
gpointer mwConference_getClientData(struct mwConference *conf);
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
/** remove associated client data if any, and call the cleanup
Packit Service 37472d
    function on the data as necessary */
Packit Service 37472d
void mwConference_removeClientData(struct mwConference *conf);
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_CONF_H */
Packit Service 37472d