Code

fix include
[inkscape.git] / src / pedro / pedroxmpp.h
index 502dd1f082cd085b4307f9bd7546a29e586beb92..ee3234fd4a69e8778c3ab9bd3c6333637102ec74 100644 (file)
@@ -6,7 +6,7 @@
  * Authors:
  *   Bob Jamison
  *
- * Copyright (C) 2005 Bob Jamison
+ * Copyright (C) 2005-2007 Bob Jamison
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -24,7 +24,9 @@
  */
 
 #include <stdio.h>
+#include <glib.h>
 #include <vector>
+#include <map>
 
 #include <string>
 
@@ -132,6 +134,13 @@ public:
      */
     static const int EVENT_DISCONNECTED         = 11;
 
+    /**
+     *  Client has begun speaking to the server in SSL.  This is usually
+     *  emitted just before EVENT_CONNECTED,  since authorization has not
+     *  yet taken place.
+     */
+    static const int EVENT_SSL_STARTED          = 12;
+
     /**
      *  Client has successfully registered a new account on a server.
      *  The server is in getFrom(), the user in getTo()
@@ -139,10 +148,10 @@ public:
     static const int EVENT_REGISTRATION_NEW     = 20;
 
     /**
-     *  Client has successfully modified an existing account on a server.
+     *  Client has successfully changed the password of an existing account on a server.
      *  The server is in getFrom(), the user in getTo()
      */
-    static const int EVENT_REGISTRATION_MODIFY  = 21;
+    static const int EVENT_REGISTRATION_CHANGE_PASS  = 21;
 
     /**
      *  Client has successfully cancelled an existing account on a server.
@@ -496,7 +505,7 @@ public:
     /**
      *  Assignment
      */
-    XmppEventListener(const XmppEventListener &other)
+    XmppEventListener(const XmppEventListener &/*other*/)
         {}
 
 
@@ -511,7 +520,7 @@ public:
      *  event handling.  Use event.getType() to decide what to do
      *  with the event.
      */
-    virtual void processXmppEvent(const XmppEvent &event)
+    virtual void processXmppEvent(const XmppEvent &/*event*/)
         {}
 
 };
@@ -558,13 +567,13 @@ public:
     /**
      * Send an error message to all subscribers
      */
-    void error(char *fmt, ...);
+    void error(const char *fmt, ...) G_GNUC_PRINTF(2,3);
 
 
     /**
      * Send a status message to all subscribers
      */
-    void status(char *fmt, ...);
+    void status(const char *fmt, ...) G_GNUC_PRINTF(2,3);
 
     //###########################
     //# LISTENERS
@@ -621,10 +630,6 @@ private:
 
     std::vector<XmppEvent> eventQueue;
     bool eventQueueEnabled;
-
-    static const int targetWriteBufLen = 2048;
-
-    char targetWriteBuf[targetWriteBufLen];
 };
 
 
@@ -717,7 +722,7 @@ public:
     /**
      *
      */
-    virtual bool write(char *fmt, ...);
+    virtual bool write(const char *fmt, ...) G_GNUC_PRINTF(2,3);
 
     //#######################
     //# V A R I A B L E S
@@ -802,27 +807,22 @@ public:
     /**
      *
      */
-    virtual DOMString getJid()
-        { return jid; }
+    virtual void setJid(const DOMString &val)
+        { jid = val; }
 
     /**
      *
      */
-    virtual int getMsgId()
-        { return msgId++; }
+    virtual DOMString getJid()
+        { return jid; }
 
-    /**
-     *
-     */
-    virtual void setDoRegister(bool val)
-        { doRegister = val; }
 
 
     /**
      *
      */
-    virtual bool getDoRegister()
-        { return doRegister; }
+    virtual int getMsgId()
+        { return msgId++; }
 
 
 
@@ -882,6 +882,29 @@ public:
      */
     virtual void rosterShow(const DOMString &jid, const DOMString &show);
 
+    //#######################
+    //# REGISTRATION
+    //#######################
+
+    /**
+     *  Set whether the client should to in-band registration
+     *  before authentication.  Causes inBandRegistrationNew() to be called
+     *  synchronously, before async is started.
+     */
+    virtual void setDoRegister(bool val)
+        { doRegister = val; }
+
+    /**
+     * Change the password of an existing account with a server
+     */
+    bool inBandRegistrationChangePassword(const DOMString &newPassword);
+
+    /**
+     * Cancel an existing account with a server
+     */
+    bool inBandRegistrationCancel();
+
+
     //#######################
     //# CHAT (individual)
     //#######################
@@ -949,7 +972,7 @@ public:
      *
      */
     virtual std::vector<XmppUser>
-          XmppClient::groupChatGetUserList(const DOMString &groupJid);
+             groupChatGetUserList(const DOMString &groupJid);
 
     /**
      *
@@ -1002,46 +1025,31 @@ public:
     /**
      *
      */
-    virtual int outputStreamOpen(const DOMString &jid,
+    virtual bool outputStreamOpen(const DOMString &jid,
                                  const DOMString &streamId);
 
     /**
      *
      */
-    virtual int outputStreamWrite(int streamId,
-                          const unsigned char *buf, unsigned long len);
+    virtual bool outputStreamWrite(const DOMString &streamId,
+               const std::vector<unsigned char> &buf);
 
     /**
      *
      */
-    virtual int outputStreamClose(int streamId);
+    virtual bool outputStreamClose(const DOMString &streamId);
 
     /**
      *
      */
-    virtual int inputStreamOpen(const DOMString &jid,
+    virtual bool inputStreamOpen(const DOMString &jid,
                                 const DOMString &streamId,
                                 const DOMString &iqId);
 
     /**
      *
      */
-    virtual int inputStreamAvailable(int streamId);
-
-    /**
-     *
-     */
-    virtual std::vector<unsigned char> inputStreamRead(int streamId);
-
-    /**
-     *
-     */
-    virtual bool inputStreamClosing(int streamId);
-
-    /**
-     *
-     */
-    virtual int inputStreamClose(int streamId);
+    virtual bool inputStreamClose(const DOMString &streamId);
 
 
     //#######################
@@ -1122,48 +1130,42 @@ private:
 
     bool saslPlainAuthenticate();
 
-    bool saslAuthenticate();
+    bool saslAuthenticate(const DOMString &streamId);
 
     bool iqAuthenticate(const DOMString &streamId);
 
     /**
-     * Register a new account with a server
+     * Register a new account with a server.  Not done by user
      */
     bool inBandRegistrationNew();
 
-    /**
-     * Modify an existing account with a server
-     */
-    bool inBandRegistrationModify();
-
-    /**
-     * Cancel an existing account with a server
-     */
-    bool inBandRegistrationCancel();
-
     bool keepGoing;
 
     bool doRegister;
 
-    static const int writeBufLen = 2048;
+    std::vector<XmppGroupChat *>groupChats;
 
-    unsigned char writeBuf[writeBufLen];
+    //#### Roster
+    std::vector<XmppUser>roster;
 
-    std::vector<XmppGroupChat *>groupChats;
 
-    static const int outputStreamCount = 16;
+    //#### Streams
+    
+    bool processInBandByteStreamMessage(Element *root);
+    
+    DOMString streamPacket;
 
-    XmppStream *outputStreams[outputStreamCount];
+    std::map<DOMString, XmppStream *> outputStreams;
 
-    static const int inputStreamCount = 16;
+    std::map<DOMString, XmppStream *> inputStreams;
 
-    XmppStream *inputStreams[inputStreamCount];
 
-    static const int fileSendCount = 16;
+    //#### File send
+    
+    bool processFileMessage(Element *root);
 
-    XmppStream *fileSends[fileSendCount];
+    std::map<DOMString, XmppStream *> fileSends;
 
-    std::vector<XmppUser>roster;
 };