OBEX patch

Dmitriy Korovkin <[email protected]>
Newsgroups gmane.comp.handhelds.opie.devel
Message-ID <[email protected]>
Good afternoon,
Guys, I've made a small patch to make OBEX library use OBEX push 
functionality from BT library. Will you review it and apply.
Thanks,
Regards,

-- 
Dmitriy

_______________________________________________

http://opie.handhelds.org/cgi-bin/moin.cgi/DeveloperWikiIndex

Opie-devel mailing list
[email protected]
https://handhelds.org/mailman/listinfo/opie-devel
obex.diff (text/plain, 5.1 KB)
? obex.diff
Index: btobex.cpp
===================================================================
RCS file: /cvs/opie/core/obex/btobex.cpp,v
retrieving revision 1.4
diff -u -r1.4 btobex.cpp
--- btobex.cpp	4 May 2006 08:54:33 -0000	1.4
+++ btobex.cpp	10 May 2006 13:34:56 -0000
@@ -1,7 +1,7 @@
 
 #include "btobex.h"
-#include <opietooth/manager.h>
-#include <opietooth/services.h>
+#include <manager.h>
+#include <services.h>
 
 /* OPIE */
 #include <opie2/oprocess.h>
@@ -65,6 +65,14 @@
     m_count = 0;
     m_file = fileName;
     m_bdaddr = bdaddr;
+    if (m_send != 0) {
+        if (m_send->isSending())
+            return;
+        else {
+            delete m_send;
+            m_send = 0;
+        }
+    }
     if (m_rec != 0 ) {
         if (m_rec->isRunning() ) {
             emit error(-1 );
@@ -125,29 +133,29 @@
 }
 
 void BtObex::sendNow(){
+    QString m_dst = "";
+    int result; //function call result
     if ( m_count >= 25 ) { // could not send
         emit error(-1 );
         emit sent(false);
         return;
     }
     // OProcess inititialisation
-    m_send = new OProcess(0, "ussp-push");
-    m_send->setWorkingDirectory( QFileInfo(m_file).dirPath(true) );
-
-    // ussp-push --timeo 30 <btaddr:port> file file
-    *m_send << "ussp-push" << "--timeo 30";
-    *m_send << m_bdaddr + "@" + QString::number(m_port);
-    *m_send << QFile::encodeName(QFileInfo(m_file).fileName());
-    *m_send << QFile::encodeName(QFileInfo(m_file).fileName());
-    m_send->setUseShell(true);
-    
+    m_send = new ObexPush();
     // connect to slots Exited and and StdOut
-    connect(m_send,  SIGNAL(processExited(Opie::Core::OProcess*) ),
-            this, SLOT(slotExited(Opie::Core::OProcess*)) );
-    connect(m_send,  SIGNAL(receivedStdout(Opie::Core::OProcess*, char*,  int)),
-            this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) );
+    connect(m_send,  SIGNAL(sendComplete(int)),
+            this, SLOT(slotPushComplete(int)) );
+    connect(m_send,  SIGNAL(sendError(int)),
+            this, SLOT(slotPushError(int)) );
+    connect(m_send,  SIGNAL(status(QCString&)),
+            this, SLOT(slotPushStatus(QCString&) ) );
+
+    ::sleep(4);
     // now start it
-    if (!m_send->start(OProcess::NotifyOnExit,  OProcess::AllOutput) ) {
+    result = m_send->send(m_bdaddr, m_port, m_file, m_dst);
+    if (result > 0) //Sending process is actually running
+        return;
+    else if (result < 0) {
         m_count = 25;
         emit error(-1 );
         delete m_send;
@@ -163,8 +171,6 @@
            << proc->exitStatus() << oendl;
     if (proc == m_rec )  // receive process
         received();
-    else if ( proc == m_send ) 
-        sendEnd();
     
 }
 void BtObex::slotStdOut(OProcess* proc, char* buf, int len){
@@ -175,6 +181,29 @@
     }
 }
 
+void BtObex::slotPushComplete(int result) {
+    if (result == 0) {
+      delete m_send;
+      m_send=0;
+      emit sent(true);
+    } else { // it failed maybe the other side wasn't ready
+      // let's try it again
+      delete m_send;
+      m_send = 0;
+      sendNow();
+   }
+}
+
+void BtObex::slotPushError(int) {
+    emit error( -1 );
+    delete m_send;
+    m_send = 0;
+}
+
+void BtObex::slotPushStatus(QCString& str) {
+    odebug << str << oendl;
+}
+
 void BtObex::received() {
   if (m_rec->normalExit() ) {
       if ( m_rec->exitStatus() == 0 ) { // we got one
@@ -189,25 +218,6 @@
   receive();
 }
 
-void BtObex::sendEnd() {
-  if (m_send->normalExit() ) {
-    if ( m_send->exitStatus() == 0 ) {
-      delete m_send;
-      m_send=0;
-      emit sent(true);
-    }else if (m_send->exitStatus() != 0 ) { // it failed maybe the other side wasn't ready
-      // let's try it again
-      delete m_send;
-      m_send = 0;
-      sendNow();
-    }
-  }else {
-    emit error( -1 );
-    delete m_send;
-    m_send = 0;
-  }
-}
-
 // This probably doesn't do anything useful for bt.
 QString BtObex::parseOut(){
   QString path;
Index: btobex.h
===================================================================
RCS file: /cvs/opie/core/obex/btobex.h,v
retrieving revision 1.3
diff -u -r1.3 btobex.h
--- btobex.h	4 May 2006 05:40:22 -0000	1.3
+++ btobex.h	10 May 2006 13:34:56 -0000
@@ -4,8 +4,9 @@
 #define OpieBtObex_H
 
 #include <qobject.h>
-#include <opietooth/services.h>
-#include <opietooth/manager.h>
+#include <services.h>
+#include <manager.h>
+#include <obexpush.h>
 
 namespace Opie {namespace Core {class OProcess;}}
 class QCopChannel;
@@ -59,7 +60,7 @@
       QString m_outp;
       QString m_bdaddr;
       int m_port;
-      Opie::Core::OProcess *m_send;
+      ObexPush* m_send;
       Opie::Core::OProcess *m_rec;
       bool m_receive : 1;
       OpieTooth::Manager* btManager;
@@ -67,6 +68,11 @@
 
 private slots:
 
+      // Push process slots
+      void slotPushStatus(QCString&);
+      void slotPushComplete(int);
+      void slotPushError(int);
+
       // the process exited
       void slotExited(Opie::Core::OProcess*) ;
       void slotStdOut(Opie::Core::OProcess*, char*, int);
@@ -77,8 +83,6 @@
       void sendNow();
       QString parseOut();
       void received();
-      void sendEnd();
-
   };
 };
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.