Code

improve streaming
[inkscape.git] / src / pedro / pedroxmpp.h
index 502dd1f082cd085b4307f9bd7546a29e586beb92..34b6d039067a2faf76c8584dc4584782c55ee770 100644 (file)
@@ -6,7 +6,7 @@
  * Authors:
  *   Bob Jamison
  *
- * Copyright (C) 2005 Bob Jamison
+ * Copyright (C) 2005-2006 Bob Jamison
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -25,6 +25,7 @@
 
 #include <stdio.h>
 #include <vector>
+#include <map>
 
 #include <string>
 
@@ -132,6 +133,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 +147,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.
@@ -802,27 +810,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 +885,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 +975,7 @@ public:
      *
      */
     virtual std::vector<XmppUser>
-          XmppClient::groupChatGetUserList(const DOMString &groupJid);
+             groupChatGetUserList(const DOMString &groupJid);
 
     /**
      *
@@ -1002,46 +1028,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);
 
 
     //#######################
@@ -1127,20 +1138,10 @@ private:
     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;
@@ -1151,19 +1152,27 @@ private:
 
     std::vector<XmppGroupChat *>groupChats;
 
-    static const int outputStreamCount = 16;
+    //#### Roster
+    std::vector<XmppUser>roster;
 
-    XmppStream *outputStreams[outputStreamCount];
 
-    static const int inputStreamCount = 16;
+    //#### Streams
+    
+    bool processInBandByteStreamMessage(Element *root);
+    
+    DOMString streamPacket;
 
-    XmppStream *inputStreams[inputStreamCount];
+    std::map<DOMString, XmppStream *> outputStreams;
 
-    static const int fileSendCount = 16;
+    std::map<DOMString, XmppStream *> inputStreams;
 
-    XmppStream *fileSends[fileSendCount];
 
-    std::vector<XmppUser>roster;
+    //#### File send
+    
+    bool processFileMessage(Element *root);
+
+    std::map<DOMString, XmppStream *> fileSends;
+
 };