author | zecke <zecke> | 2002-10-12 01:04:40 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-12 01:04:40 (UTC) |
commit | 78eddaa8057462b0b8e94f10f8673bb9f555061b (patch) (unidiff) | |
tree | ec73d894164866c349fd0bc28e441f6006269069 | |
parent | 39b88e5809e50a4951869434b8015c55265fc495 (diff) | |
download | opie-78eddaa8057462b0b8e94f10f8673bb9f555061b.zip opie-78eddaa8057462b0b8e94f10f8673bb9f555061b.tar.gz opie-78eddaa8057462b0b8e94f10f8673bb9f555061b.tar.bz2 |
SWITCH to the ProcCtl interface
-rw-r--r-- | noncore/apps/opie-console/filetransfer.cpp | 55 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/console.pro | 4 |
2 files changed, 27 insertions, 32 deletions
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp index 7fd9f37..97552fe 100644 --- a/noncore/apps/opie-console/filetransfer.cpp +++ b/noncore/apps/opie-console/filetransfer.cpp | |||
@@ -9,28 +9,16 @@ | |||
9 | 9 | ||
10 | #include <opie/oprocess.h> | 10 | #include <opie/oprocess.h> |
11 | 11 | ||
12 | #include "procctl.h" | ||
12 | #include "filetransfer.h" | 13 | #include "filetransfer.h" |
13 | 14 | ||
14 | /** | ||
15 | * | ||
16 | * | ||
17 | class FileTransferControl { | ||
18 | public: | ||
19 | FileTransferControl(); | ||
20 | ~FileTransferControl(); | ||
21 | |||
22 | |||
23 | }; | ||
24 | */ | ||
25 | |||
26 | bool FileTransfer::terminate = false; | ||
27 | pid_t FileTransfer::m_pid; | ||
28 | 15 | ||
29 | FileTransfer::FileTransfer( Type t, IOLayer* lay ) | 16 | FileTransfer::FileTransfer( Type t, IOLayer* lay ) |
30 | : FileTransferLayer( lay ), m_type( t ) { | 17 | : FileTransferLayer( lay ), m_type( t ) { |
31 | signal(SIGPIPE, SIG_IGN ); | 18 | signal(SIGPIPE, SIG_IGN ); |
32 | signal( SIGCHLD, signal_handler ); | 19 | |
33 | m_not = 0l; | 20 | m_not = 0l; |
21 | m_proc = 0l; | ||
34 | } | 22 | } |
35 | FileTransfer::~FileTransfer() { | 23 | FileTransfer::~FileTransfer() { |
36 | } | 24 | } |
@@ -100,15 +88,20 @@ void FileTransfer::sendFile( const QString& file ) { | |||
100 | if ( m_info[0] ) | 88 | if ( m_info[0] ) |
101 | close( m_info[0] ); | 89 | close( m_info[0] ); |
102 | 90 | ||
103 | terminate = false; | 91 | |
104 | fd_set fds; | ||
105 | struct timeval timeout; | ||
106 | int sel; | ||
107 | 92 | ||
108 | /* replace by QSocketNotifier!!! */ | 93 | /* replace by QSocketNotifier!!! */ |
109 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); | 94 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); |
110 | connect(m_not, SIGNAL(activated(int) ), | 95 | connect(m_not, SIGNAL(activated(int) ), |
111 | this, SLOT(slotRead() ) ); | 96 | this, SLOT(slotRead() ) ); |
97 | if ( pipe(m_term) < 0 ) | ||
98 | m_term[0] = m_term[1] = 0; | ||
99 | |||
100 | ProcCtl::self()->add(m_pid, m_term[1] ); | ||
101 | m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); | ||
102 | connect(m_proc, SIGNAL(activated(int) ), | ||
103 | this, SLOT(slotExec() ) ); | ||
104 | |||
112 | } | 105 | } |
113 | break; | 106 | break; |
114 | } | 107 | } |
@@ -119,17 +112,6 @@ void FileTransfer::sendFile( const QString& file ) { | |||
119 | void FileTransfer::sendFile( const QFile& file ) { | 112 | void FileTransfer::sendFile( const QFile& file ) { |
120 | sendFile( file.name() ); | 113 | sendFile( file.name() ); |
121 | } | 114 | } |
122 | /* | ||
123 | * our signal handler to be replaced by | ||
124 | * a procctl thingie | ||
125 | */ | ||
126 | void FileTransfer::signal_handler(int ) { | ||
127 | qWarning("Terminated"); | ||
128 | int status; | ||
129 | signal( SIGCHLD, signal_handler ); | ||
130 | waitpid( m_pid, &status, WNOHANG ); | ||
131 | terminate = true; | ||
132 | } | ||
133 | 115 | ||
134 | /* | 116 | /* |
135 | * setting up communication | 117 | * setting up communication |
@@ -175,6 +157,7 @@ void FileTransfer::slotRead() { | |||
175 | } | 157 | } |
176 | ar.resize( len ); | 158 | ar.resize( len ); |
177 | QString str( ar ); | 159 | QString str( ar ); |
160 | qWarning(str.simplifyWhiteSpace() ); | ||
178 | QStringList lis = QStringList::split(' ', str ); | 161 | QStringList lis = QStringList::split(' ', str ); |
179 | /* | 162 | /* |
180 | * Transfer finished.. either complete or incomplete | 163 | * Transfer finished.. either complete or incomplete |
@@ -240,3 +223,15 @@ void FileTransfer::cancel() { | |||
240 | ::kill(m_pid,9 ); | 223 | ::kill(m_pid,9 ); |
241 | delete m_not; | 224 | delete m_not; |
242 | } | 225 | } |
226 | void FileTransfer::slotExec() { | ||
227 | qWarning("exited!"); | ||
228 | char buf[2]; | ||
229 | ::read(m_term[0], buf, 1 ); | ||
230 | delete m_proc; | ||
231 | delete m_not; | ||
232 | close( m_term[0] ); | ||
233 | close( m_term[1] ); | ||
234 | close( m_comm[0] ); | ||
235 | close( m_comm[1] ); | ||
236 | emit sent(); | ||
237 | } | ||
diff --git a/noncore/apps/opie-console/test/console.pro b/noncore/apps/opie-console/test/console.pro index 9fe8e13..af0e9f7 100644 --- a/noncore/apps/opie-console/test/console.pro +++ b/noncore/apps/opie-console/test/console.pro | |||
@@ -3,10 +3,10 @@ TEMPLATE = app | |||
3 | CONFIG = qt debug | 3 | CONFIG = qt debug |
4 | #DESTDIR = $(OPIEDIR)/bin | 4 | #DESTDIR = $(OPIEDIR)/bin |
5 | HEADERS = ../io_layer.h ../io_serial.h ../sz_transfer.h ../file_layer.h\ | 5 | HEADERS = ../io_layer.h ../io_serial.h ../sz_transfer.h ../file_layer.h\ |
6 | senderui.h ../profile.h ../filetransfer.h | 6 | senderui.h ../profile.h ../filetransfer.h ../procctl.h |
7 | SOURCES = ../io_layer.cpp ../io_serial.cpp \ | 7 | SOURCES = ../io_layer.cpp ../io_serial.cpp \ |
8 | ../profile.cpp ../sz_transfer.cpp ../file_layer.cpp\ | 8 | ../profile.cpp ../sz_transfer.cpp ../file_layer.cpp\ |
9 | main.cpp senderui.cpp ../filetransfer.cpp | 9 | main.cpp senderui.cpp ../filetransfer.cpp ../procctl.cpp |
10 | INTERFACES = sender.ui | 10 | INTERFACES = sender.ui |
11 | INCLUDEPATH += $(OPIEDIR)/include | 11 | INCLUDEPATH += $(OPIEDIR)/include |
12 | DEPENDPATH += $(OPIEDIR)/include | 12 | DEPENDPATH += $(OPIEDIR)/include |