-rw-r--r-- | core/obex/obex.cc | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/core/obex/obex.cc b/core/obex/obex.cc deleted file mode 100644 index 36634ec..0000000 --- a/core/obex/obex.cc +++ b/dev/null @@ -1,187 +0,0 @@ - -#include "obex.h" - -/* OPIE */ -#include <opie2/oprocess.h> -#include <opie2/odebug.h> - -/* QT */ -#include <qfileinfo.h> - - - -using namespace OpieObex; - -using namespace Opie::Core; -/* TRANSLATOR OpieObex::Obex */ - -Obex::Obex( QObject *parent, const char* name ) - : QObject(parent, name ) -{ - m_rec = 0; - m_send=0; - m_count = 0; - m_receive = false; - connect( this, SIGNAL(error(int) ), // for recovering to receive - SLOT(slotError() ) ); - connect( this, SIGNAL(sent(bool) ), - SLOT(slotError() ) ); -}; -Obex::~Obex() { - delete m_rec; - delete m_send; -} -void Obex::receive() { - m_receive = true; - m_outp = QString::null; - m_rec = new OProcess(); - *m_rec << "irobex_palm3"; - // connect to the necessary slots - connect(m_rec, SIGNAL(processExited(Opie::Core::OProcess*) ), - this, SLOT(slotExited(Opie::Core::OProcess*) ) ); - - connect(m_rec, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ), - this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) ); - - if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { - emit done( false ); - delete m_rec; - m_rec = 0; - } -} - -void Obex::send( const QString& fileName) { // if currently receiving stop it send receive - m_count = 0; - m_file = fileName; - if (m_rec != 0 ) { - if (m_rec->isRunning() ) { - emit error(-1 ); - delete m_rec; - m_rec = 0; - - }else{ - emit error( -1 ); // we did not delete yet but it's not running slotExited is pending - return; - } - } - sendNow(); -} -void Obex::sendNow(){ - if ( m_count >= 25 ) { // could not send - emit error(-1 ); - emit sent(false); - return; - } - // OProcess inititialisation - m_send = new OProcess(); - m_send->setWorkingDirectory( QFileInfo(m_file).dirPath(true) ); - - *m_send << "irobex_palm3"; - *m_send << QFile::encodeName(QFileInfo(m_file).fileName()); - - // 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) ) ); - - // now start it - if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) { - m_count = 25; - emit error(-1 ); - delete m_send; - m_send=0; - } - // end - m_count++; - emit currentTry( m_count ); -} - -void Obex::slotExited(OProcess* proc ){ - if (proc == m_rec ) // receive process - received(); - else if ( proc == m_send ) - sendEnd(); - -} -void Obex::slotStdOut(OProcess* proc, char* buf, int len){ - if ( proc == m_rec ) { // only receive - QByteArray ar( len ); - memcpy( ar.data(), buf, len ); - m_outp.append( ar ); - } -} - -void Obex::received() { - if (m_rec->normalExit() ) { - if ( m_rec->exitStatus() == 0 ) { // we got one - QString filename = parseOut(); - emit receivedFile( filename ); - } - }else{ - emit done(false); - }; - delete m_rec; - m_rec = 0; - receive(); -} - -void Obex::sendEnd() { - if (m_send->normalExit() ) { - if ( m_send->exitStatus() == 0 ) { - delete m_send; - m_send=0; - emit sent(true); - }else if (m_send->exitStatus() == 255 ) { // 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; - } -} -QString Obex::parseOut( ){ - QString path; - QStringList list = QStringList::split("\n", m_outp); - QStringList::Iterator it; - for (it = list.begin(); it != list.end(); ++it ) { - if ( (*it).startsWith("Wrote" ) ) { - int pos = (*it).findRev('(' ); - if ( pos > 0 ) { - - path = (*it).remove( pos, (*it).length() - pos ); - path = path.mid(6 ); - path = path.stripWhiteSpace(); - } - } - } - return path; -} -/** - * when sent is done slotError is called we will start receive again - */ -void Obex::slotError() { - if ( m_receive ) - receive(); -}; -void Obex::setReceiveEnabled( bool receive ) { - if ( !receive ) { // - m_receive = false; - shutDownReceive(); - } -} - -void Obex::shutDownReceive() { - if (m_rec != 0 ) { - if (m_rec->isRunning() ) { - emit error(-1 ); - delete m_rec; - m_rec = 0; - } - } - -} |