Logo Search packages:      
Sourcecode: inkscape version File versions


 * Whiteboard session manager
 * Authors: 
 * David Yip <yipdw@rose-hulman.edu>
 * Bob Jamison (Pedro port)
 * Copyright (c) 2005 Authors
 * Released under GNU GPL, read the file 'COPYING' for more information


#include <glibmm.h>

#include <list>
#include <bitset>

#include "desktop.h"

#include "jabber_whiteboard/pedrogui.h"
#include "jabber_whiteboard/message-queue.h"
#include "jabber_whiteboard/defines.h"

#include "gc-alloc.h"

class SPDocument;
class SPDesktop;

namespace Inkscape {

namespace Whiteboard {

class InkboardDocument;

typedef Glib::ustring from,sessionId;
typedef std::pair< Glib::ustring, InkboardDocument* > WhiteboardRecord;
typedef std::vector< WhiteboardRecord, GC::Alloc< WhiteboardRecord, GC::MANUAL > > WhiteboardList;

typedef std::pair< from, sessionId > Invitation;
typedef std::list< Invitation > InvitationList;

class SessionManager : public Pedro::XmppEventListener 



    virtual ~SessionManager();

    static void             showClient();
    static SessionManager&  instance();

    virtual Pedro::XmppClient &getClient()
        { return gui.client; }

     * Handles all incoming XMPP events associated with this document
     * apart from CONNECT_REQUEST, which is handled in SessionManager
    virtual void processXmppEvent(const Pedro::XmppEvent &event);

     * Initiates a shared session with a user or conference room.
     * \param to The recipient to which this desktop will be linked, specified as a JID.
     * \param type Type of the session; i.e. private message or group chat.
    virtual void initialiseSession(Glib::ustring const& to, State::SessionType type);

     * Terminates an Inkboard session to a given recipient.  If the session to be
     * terminated does not exist, does nothing.
     * \param sessionId The session identifier to be terminated.
    virtual void terminateSession(Glib::ustring const& sessionId);

     * Adds a session to whiteboard
     * \param sessionId The session identifier to be terminated.
    virtual void addSession(WhiteboardRecord whiteboard);

     * Locates an Inkboard session by recipient JID.  
     * \param to The recipient JID identifying the session to be located.
     * \return A pointer to the InkboardDocument associated with the Inkboard session,
     * or NULL if no such session exists.
    InkboardDocument* getInkboardSession(Glib::ustring const& to);

    void operator=(XmppEventListener const& other) {}


    Pedro::PedroGui     gui;
    WhiteboardList      whiteboards;
    InvitationList      invitations;
    sigc::connection    CheckPendingInvitations;

    void    processWhiteboardEvent(Pedro::XmppEvent const& event);

    void    handleIncomingInvitation(Invitation invitation);

    bool    checkInvitationQueue();

    char*   createSessionId(int size);


SPDocument* makeInkboardDocument(int code, gchar const* rootname, 
    State::SessionType type, Glib::ustring const& to);

SPDesktop*  makeInkboardDesktop(SPDocument* doc);

}  // namespace Whiteboard

}  // namespace Inkscape

#endif  /* __SESSION_MANAGER_H__ */

  Local Variables:
  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :

Generated by  Doxygen 1.6.0   Back to index