Code

moving trunk for module inkscape
[inkscape.git] / src / jabber_whiteboard / message-contexts.cpp
1 /**
2  * Whiteboard session manager
3  * Inkboard message context definitions
4  *
5  * Authors:
6  * David Yip <yipdw@rose-hulman.edu>
7  *
8  * Copyright (c) 2005 Authors
9  *
10  * Released under GNU GPL, read the file 'COPYING' for more information
11  */
13 #include "jabber_whiteboard/defines.h"
14 #include "jabber_whiteboard/message-contexts.h"
16 #include <bitset>
18 namespace Inkscape {
20 namespace Whiteboard {
22 void
23 initialize_received_message_contexts(MessageContextMap& mcm)
24 {
26         // Each Inkboard message has a context of validity according to an Inkboard 
27         // client's state.  That is, certain messages should be acknowledged and processed
28         // in some states, whereas other messages should not.
29         // For instance, a whiteboard invitation should be acknowledged if an Inkboard
30         // client is not in a whiteboard session, but should be refused if said client
31         // _is_ in a whiteboard session.
33         // Only the flags that are required to be set must be set; all flags, by default,
34         // are zero.  Explicit definition doesn't hurt, though.
36         // The general format of message context creation and registration is
37         // std::bitset< NUM_FLAGS > m_
38         // m_.set( );
39         // m_.set( );
40         // mcm[ ] = m_;
43         // Begin
45         // Special bitsets
46         std::bitset< NUM_FLAGS > all_contexts;
47         all_contexts.flip();
49         // Messages: CHANGE_NOT_REPEATABLE, CHANGE_REPEATABLE, DUMMY_CHANGE, CHANGE_COMMIT
50         std::bitset< NUM_FLAGS > m1;
51         m1.set(LOGGED_IN);
52         m1.set(IN_WHITEBOARD);
53         m1.set(IN_CHATROOM);
54         m1.set(SYNCHRONIZING_WITH_CHAT);
55         mcm[CHANGE_NOT_REPEATABLE] = m1;
56         mcm[CHANGE_REPEATABLE] = m1;
57         mcm[DUMMY_CHANGE] = m1;
58         mcm[CHANGE_COMMIT] = m1;
60         // Messages: DOCUMENT_BEGIN, DOCUMENT_END
61         std::bitset< NUM_FLAGS > m4;
62         m4.set(LOGGED_IN);
63         m4.set(IN_WHITEBOARD);
64         m4.set(SYNCHRONIZING_WITH_CHAT);
65         mcm[DOCUMENT_BEGIN] = m4;
66         mcm[DOCUMENT_END] = m4;
68         // Message: CONNECT_REQUEST_USER
69         std::bitset< NUM_FLAGS > m5;
70         m5.set(LOGGED_IN);
71         mcm[CONNECT_REQUEST_USER] = m5;
73         // Message: CONNECT_REQUEST_RESPONSE_USER
74         std::bitset< NUM_FLAGS > m6;
75         m6.set(LOGGED_IN);
76         m6.set(WAITING_FOR_INVITE_RESPONSE);
77         mcm[CONNECT_REQUEST_RESPONSE_USER] = m6;
79         // Message: CHATROOM_SYNCHRONIZE_REQUEST
80         std::bitset< NUM_FLAGS > m7;
81         m7.set(LOGGED_IN);
82         m7.set(IN_CHATROOM);
83         m7.set(IN_WHITEBOARD);
84         mcm[CHATROOM_SYNCHRONIZE_REQUEST] = m7;
86         // Message: CHATROOM_SYNCHRONIZE_RESPONSE
87         std::bitset< NUM_FLAGS > m8;
88         m8.set(LOGGED_IN);
89         m8.set(WAITING_TO_SYNC_TO_CHAT);
90         mcm[CHATROOM_SYNCHRONIZE_RESPONSE] = m8;
91         
92         // Message: CONNECT_REQUEST_RESPONSE_CHAT
93         std::bitset< NUM_FLAGS > m9;
94         m9.set(LOGGED_IN);
95         m9.set(IN_CHATROOM);
96         m9.set(IN_WHITEBOARD);
97         mcm[CONNECT_REQUEST_RESPONSE_CHAT] = m9;
99         // Message: CONNECTED_SIGNAL
100         mcm[CONNECTED_SIGNAL] = all_contexts;
102         // Message: DISCONNECTED_FROM_USER_SIGNAL
103         std::bitset< NUM_FLAGS > m11;
104         m11.set(LOGGED_IN);
105         m11.set(IN_WHITEBOARD);
106         mcm[DISCONNECTED_FROM_USER_SIGNAL] = m11;
108         // Messages: CONNECT_REQUEST_REFUSED_BY_PEER, ALREADY_IN_SESSION
109         std::bitset< NUM_FLAGS > m12;
110         m12.set(LOGGED_IN);
111         m12.set(WAITING_FOR_INVITE_RESPONSE);
112         mcm[CONNECT_REQUEST_REFUSED_BY_PEER] = m12;
113         mcm[ALREADY_IN_SESSION] = m12;
115         // Message: UNSUPPORTED_PROTOCOL_VERSION
116         std::bitset< NUM_FLAGS > m14;
117         m14.set(LOGGED_IN);
118         mcm[UNSUPPORTED_PROTOCOL_VERSION] = m14;
125 /*
126   Local Variables:
127   mode:c++
128   c-file-style:"stroustrup"
129   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
130   indent-tabs-mode:nil
131   fill-column:99
132   End:
133 */
134 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :