Code

700665f7455a8d4221bf1424252e1fb50c01cc34
[inkscape.git] / src / jabber_whiteboard / message-handler.h
1 /**
2  * Whiteboard session manager
3  * Jabber message handling
4  *
5  * Authors:
6  * David Yip <yipdw@rose-hulman.edu>
7  * Steven Montgomery, Jonas Collaros (original C version)
8  *
9  * Copyright (c) 2004-2005 Authors
10  *
11  * Released under GNU GPL, read the file 'COPYING' for more information
12  */
14 #ifndef __WHITEBOARD_MESSAGE_HANDLER_H__
15 #define __WHITEBOARD_MESSAGE_HANDLER_H__
17 extern "C" {
18 #include <loudmouth/loudmouth.h>
19 }
21 #include "jabber_whiteboard/defines.h"
22 #include "jabber_whiteboard/typedefs.h"
23 #include "jabber_whiteboard/message-contexts.h"
25 namespace Inkscape {
27 namespace Whiteboard {
29 struct JabberMessage;
30 class SessionManager;
32 /**
33  * Handles received Jabber messages.
34  */
35 class MessageHandler {
36 public:
37         MessageHandler(SessionManager* sm);
38         ~MessageHandler();
39         LmHandlerResult handle(LmMessage* message, HandlerMode mode);   
40         
41         bool _hasValidReceiveContext(LmMessage* message);
43         static char const* ink_type_to_string(gint ink_type);
45 private:
46         static void _initializeContexts();
48         void _initializeProcessors();
49         void _destructProcessors();
51         // Utilities
52         bool _isValidMessage(LmMessage* message);
53         MessageType _getType(LmMessage* message);
54         struct JabberMessage _extractData(LmMessage* message);
57         // Individual message handlers
58         LmHandlerResult _default(LmMessage* message);
59         LmHandlerResult _error(LmMessage* message);
60         LmHandlerResult _presence(LmMessage* message);
61         
62         // Message processors map
63 //      MessageContextMap _received_message_contexts;
64         MessageProcessorMap _received_message_processors;
66         SessionManager* _sm;
68         // noncopyable, nonassignable
69         MessageHandler(MessageHandler const&);
70         MessageHandler& operator=(MessageHandler const&);
71 };
73 }
75 }
77 #endif
79 /*
80   Local Variables:
81   mode:c++
82   c-file-style:"stroustrup"
83   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
84   indent-tabs-mode:nil
85   fill-column:99
86   End:
87 */
88 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :