Blob Blame History Raw

  Meanwhile - Unofficial Lotus Sametime Community Client Library
  Copyright (C) 2004  Christopher (siege) O'Brien
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Library General Public
  License as published by the Free Software Foundation; either
  version 2 of the License, or (at your option) any later version.
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  Library General Public License for more details.
  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the Free
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#ifndef _MW_SRVC_PLACE_H
#define _MW_SRVC_PLACE_H

#include <glib/glist.h>
#include "mw_common.h"

#ifdef __cplusplus
extern "C" {

/** Type identifier for the place service */
#define mwService_PLACE  0x80000022

/** @struct mwServicePlace */
struct mwServicePlace;

/** @struct mwPlace */
struct mwPlace;

struct mwPlaceHandler {
  void (*opened)(struct mwPlace *place);
  void (*closed)(struct mwPlace *place, guint32 code);

  void (*peerJoined)(struct mwPlace *place,
		     const struct mwIdBlock *peer);

  void (*peerParted)(struct mwPlace *place,
		     const struct mwIdBlock *peer);

  void (*peerSetAttribute)(struct mwPlace *place,
			   const struct mwIdBlock *peer,
			   guint32 attr, struct mwOpaque *o);

  void (*peerUnsetAttribute)(struct mwPlace *place,
			     const struct mwIdBlock *peer,
			     guint32 attr);

  void (*message)(struct mwPlace *place,
		  const struct mwIdBlock *who,
		  const char *msg);

  void (*clear)(struct mwServicePlace *srvc);

enum mwPlacePeerAttribute {
  mwPlacePeer_TYPING = 0x00000008,

struct mwServicePlace *
mwServicePlace_new(struct mwSession *session,
		   struct mwPlaceHandler *handler);

struct mwPlaceHandler *
mwServicePlace_getHandler(struct mwServicePlace *srvc);

const GList *mwServicePlace_getPlaces(struct mwServicePlace *srvc);

struct mwPlace *mwPlace_new(struct mwServicePlace *srvc,
			    const char *name, const char *title);

struct mwServicePlace *mwPlace_getService(struct mwPlace *place);

const char *mwPlace_getName(struct mwPlace *place);

const char *mwPlace_getTitle(struct mwPlace *place);

int mwPlace_open(struct mwPlace *place);

int mwPlace_destroy(struct mwPlace *place, guint32 code);

/** returns a GList* of struct mwIdBlock*. The GList will need to be
    freed after use, the mwIdBlock structures should not be modified
    or freed */
GList *mwPlace_getMembers(struct mwPlace *place);

int mwPlace_sendText(struct mwPlace *place, const char *msg);

/** send a legacy invitation for this place to a user. The user will
    receive an apparent invitation from a Conference (rather than a
    Place) */
int mwPlace_legacyInvite(struct mwPlace *place,
			 struct mwIdBlock *idb,
			 const char *message);

int mwPlace_setAttribute(struct mwPlace *place, guint32 attrib,
			 struct mwOpaque *data);

int mwPlace_unsetAttribute(struct mwPlace *place, guint32 attrib);

void mwPlace_setClientData(struct mwPlace *place,
			   gpointer data, GDestroyNotify clean);

gpointer mwPlace_getClientData(struct mwPlace *place);

void mwPlace_removeClientData(struct mwPlace *place);

#ifdef __cplusplus

#endif /* _MW_SRVC_PLACE_H */