00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _MW_SRVC_PLACE_H
00022 #define _MW_SRVC_PLACE_H
00023
00024
00025 #include <glib/glist.h>
00026 #include "mw_common.h"
00027
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033
00035 #define mwService_PLACE 0x80000022
00036
00037
00039 struct mwServicePlace;
00040
00041
00043 struct mwPlace;
00044
00045
00046 struct mwPlaceHandler {
00047 void (*opened)(struct mwPlace *place);
00048 void (*closed)(struct mwPlace *place, guint32 code);
00049
00050 void (*peerJoined)(struct mwPlace *place,
00051 const struct mwIdBlock *peer);
00052
00053 void (*peerParted)(struct mwPlace *place,
00054 const struct mwIdBlock *peer);
00055
00056 void (*peerSetAttribute)(struct mwPlace *place,
00057 const struct mwIdBlock *peer,
00058 guint32 attr, struct mwOpaque *o);
00059
00060 void (*peerUnsetAttribute)(struct mwPlace *place,
00061 const struct mwIdBlock *peer,
00062 guint32 attr);
00063
00064 void (*message)(struct mwPlace *place,
00065 const struct mwIdBlock *who,
00066 const char *msg);
00067
00068 void (*clear)(struct mwServicePlace *srvc);
00069 };
00070
00071
00072 enum mwPlacePeerAttribute {
00073 mwPlacePeer_TYPING = 0x00000008,
00074 };
00075
00076
00077 struct mwServicePlace *
00078 mwServicePlace_new(struct mwSession *session,
00079 struct mwPlaceHandler *handler);
00080
00081
00082 struct mwPlaceHandler *
00083 mwServicePlace_getHandler(struct mwServicePlace *srvc);
00084
00085
00086 const GList *mwServicePlace_getPlaces(struct mwServicePlace *srvc);
00087
00088
00089 struct mwPlace *mwPlace_new(struct mwServicePlace *srvc,
00090 const char *name, const char *title);
00091
00092
00093 struct mwServicePlace *mwPlace_getService(struct mwPlace *place);
00094
00095
00096 const char *mwPlace_getName(struct mwPlace *place);
00097
00098
00099 const char *mwPlace_getTitle(struct mwPlace *place);
00100
00101
00102 int mwPlace_open(struct mwPlace *place);
00103
00104
00105 int mwPlace_destroy(struct mwPlace *place, guint32 code);
00106
00107
00111 GList *mwPlace_getMembers(struct mwPlace *place);
00112
00113
00114 int mwPlace_sendText(struct mwPlace *place, const char *msg);
00115
00116
00120 int mwPlace_legacyInvite(struct mwPlace *place,
00121 struct mwIdBlock *idb,
00122 const char *message);
00123
00124
00125 int mwPlace_setAttribute(struct mwPlace *place, guint32 attrib,
00126 struct mwOpaque *data);
00127
00128
00129 int mwPlace_unsetAttribute(struct mwPlace *place, guint32 attrib);
00130
00131
00132 void mwPlace_setClientData(struct mwPlace *place,
00133 gpointer data, GDestroyNotify clean);
00134
00135
00136 gpointer mwPlace_getClientData(struct mwPlace *place);
00137
00138
00139 void mwPlace_removeClientData(struct mwPlace *place);
00140
00141
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145
00146
00147 #endif
00148