00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
#ifndef _XMPP_MUC
00035
#define _XMPP_MUC
00036
00037
#ifdef P_USE_PRAGMA
00038
#pragma interface
00039
#endif
00040
00041
#include <ptclib/xmpp_c2s.h>
00042
00043
#if P_EXPAT
00044
00046
00047
namespace XMPP
00048 {
00049
namespace MUC
00050 {
00051
extern PString Namespace;
00052
00053
class User :
public PObject
00054 {
00055
PCLASSINFO(User,
PObject);
00056
public:
00057
static PString Namespace;
00058
00059
enum Role {
00060 None,
00061 Moderator,
00062 Participant,
00063 Visitor,
00064 Unknown = 999
00065 };
00066
00067
enum Affiliation {
00068 None_a,
00069 Owner,
00070 Admin,
00071 Member,
00072 Outcast,
00073 Unknown_a = 999
00074 };
00075
00076
PString m_Nick;
00077 Role m_Role;
00078 Affiliation m_Affiliation;
00079
00080 Comparison Compare(
const PObject & obj)
const;
00081 };
00082
PSORTED_LIST(Users, User);
00083
00084
class Room :
public PObject
00085 {
00086
PCLASSINFO(Room,
PObject);
00087
PDECLARE_SMART_NOTIFIEE;
00088
public:
00089 Room(C2S::StreamHandler * handler,
00090
const JID& jid,
00091
const PString& nick);
00092
00093
const User& GetUser()
const {
return m_User; }
00094
const Users& GetOtherUsers()
const {
return m_OtherUsers; }
00095
00096
virtual BOOL Enter();
00097
virtual BOOL Leave();
00098
virtual BOOL SendMessage(
const PString& msg);
00099
virtual BOOL SendMessage(Message& msg);
00100
00101
00102
virtual void OnMessage(Message& msg);
00103
virtual void OnRoomJoined();
00104
virtual void OnRoomLeft();
00105
virtual void OnUserAdded(User& user);
00106
virtual void OnUserRemoved(User& user);
00107
virtual void OnUserChanged(User& user);
00108
00109
protected:
00110
PDECLARE_SMART_NOTIFIER(C2S::StreamHandler, Room, OnSessionReleased);
00111
PDECLARE_SMART_NOTIFIER(Message, Room, OnMessage);
00112
PDECLARE_SMART_NOTIFIER(Presence, Room, OnPresence);
00113
00114 C2S::StreamHandler * m_Handler;
00115 BareJID m_RoomJID;
00116 User m_User;
00117 Users m_OtherUsers;
00118
00119
PNotifierList m_MessageHandlers;
00120
PNotifierList m_RoomJoinedHandlers;
00121
PNotifierList m_RoomLeftHandlers;
00122
PNotifierList m_UserAddedHandlers;
00123
PNotifierList m_UserRemovedHandlers;
00124
PNotifierList m_UserChangedHandlers;
00125 };
00126
00127 }
00128 }
00129
00130
00131
#endif // P_EXPAT
00132
00133
#endif // _XMPP_MUC
00134
00135
00136
00137
00138