21 #include <tdeio/job.h>
22 #include <kmimetype.h>
23 #include <kprotocolinfo.h>
25 #include <tqapplication.h>
26 #include <tqeventloop.h>
28 #include "forwardingslavebase.h"
33 class ForwardingSlaveBasePrivate
37 ForwardingSlaveBase::ForwardingSlaveBase(
const TQCString &protocol,
38 const TQCString &poolSocket,
39 const TQCString &appSocket)
40 : TQObject(), SlaveBase(protocol, poolSocket, appSocket)
44 ForwardingSlaveBase::~ForwardingSlaveBase()
48 bool ForwardingSlaveBase::internalRewriteURL(
const KURL &url, KURL &newURL)
61 m_processedURL = newURL;
69 kdDebug() <<
"ForwardingSlaveBase::prepareUDSEntry: listing=="
75 TDEIO::UDSEntry::iterator it = entry.begin();
76 TDEIO::UDSEntry::iterator end = entry.end();
80 KURL new_url = m_requestedURL;
86 kdDebug() <<
"Name = " << name << endl;
92 new_url.addPath(url.fileName());
94 (*it).m_str = new_url.url();
95 kdDebug() <<
"URL = " << url << endl;
96 kdDebug() <<
"New URL = " << (*it).m_str << endl;
101 if ( m_processedURL.isLocalFile() )
103 KURL new_url = m_processedURL;
106 new_url.addPath( name );
112 atom.m_str = new_url.path();
119 kdDebug() <<
"ForwardingSlaveBase::get: " << url << endl;
122 if ( internalRewriteURL(url, new_url) )
125 connectTransferJob(job);
127 tqApp->eventLoop()->enterLoop();
132 bool overwrite,
bool resume )
134 kdDebug() <<
"ForwardingSlaveBase::put: " << url << endl;
137 if ( internalRewriteURL(url, new_url) )
141 connectTransferJob(job);
143 tqApp->eventLoop()->enterLoop();
149 kdDebug() <<
"ForwardingSlaveBase::stat: " << url << endl;
152 if ( internalRewriteURL(url, new_url) )
155 connectSimpleJob(job);
157 tqApp->eventLoop()->enterLoop();
163 kdDebug() <<
"ForwardingSlaveBase::mimetype: " << url << endl;
166 if ( internalRewriteURL(url, new_url) )
169 connectTransferJob(job);
171 tqApp->eventLoop()->enterLoop();
177 kdDebug() <<
"ForwardingSlaveBase::listDir: " << url << endl;
180 if ( internalRewriteURL(url, new_url) )
185 tqApp->eventLoop()->enterLoop();
191 kdDebug() <<
"ForwardingSlaveBase::mkdir: " << url << endl;
194 if ( internalRewriteURL(url, new_url) )
197 connectSimpleJob(job);
199 tqApp->eventLoop()->enterLoop();
206 kdDebug() <<
"ForwardingSlaveBase::rename: " << src <<
", " << dest << endl;
208 KURL new_src, new_dest;
209 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
214 tqApp->eventLoop()->enterLoop();
221 kdDebug() <<
"ForwardingSlaveBase::symlink: " << target <<
", " << dest << endl;
224 if ( internalRewriteURL(dest, new_dest) )
227 connectSimpleJob(job);
229 tqApp->eventLoop()->enterLoop();
235 kdDebug() <<
"ForwardingSlaveBase::chmod: " << url << endl;
238 if ( internalRewriteURL(url, new_url) )
241 connectSimpleJob(job);
243 tqApp->eventLoop()->enterLoop();
248 int permissions,
bool overwrite)
250 kdDebug() <<
"ForwardingSlaveBase::copy: " << src <<
", " << dest << endl;
252 KURL new_src, new_dest;
253 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
259 tqApp->eventLoop()->enterLoop();
265 kdDebug() <<
"ForwardingSlaveBase::del: " << url << endl;
268 if ( internalRewriteURL(url, new_url) )
278 connectSimpleJob(job);
281 tqApp->eventLoop()->enterLoop();
287 kdDebug() <<
"ForwardingSlaveBase::localURL: " << remoteURL << endl;
290 if ( internalRewriteURL(remoteURL, new_url) )
293 connectLocalURLJob(job);
295 tqApp->eventLoop()->enterLoop();
306 void ForwardingSlaveBase::connectJob(
TDEIO::Job *job)
315 kdDebug() << k_funcinfo <<
"transferring metadata:" << endl;
317 for ( MetaData::const_iterator it = md.begin(); it != md.end(); ++it )
318 kdDebug() << it.key() <<
" = " << it.data() << endl;
321 connect( job, TQT_SIGNAL( result(
TDEIO::Job *) ),
324 this, TQT_SLOT( slotWarning(
TDEIO::Job *,
const TQString &) ) );
326 this, TQT_SLOT( slotInfoMessage(
TDEIO::Job *,
const TQString &) ) );
332 this, TQT_SLOT( slotSpeed(
TDEIO::Job *,
unsigned long) ) );
339 this, TQT_SLOT( slotRedirection(
TDEIO::Job *,
const KURL &) ) );
344 connectSimpleJob(job);
345 connect( job, TQT_SIGNAL( entries(
TDEIO::Job *,
const TDEIO::UDSEntryList &) ),
346 this, TQT_SLOT( slotEntries(
TDEIO::Job *,
const TDEIO::UDSEntryList &) ) );
351 connectSimpleJob(job);
352 connect( job, TQT_SIGNAL(
data(
TDEIO::Job *,
const TQByteArray &) ),
353 this, TQT_SLOT( slotData(
TDEIO::Job *,
const TQByteArray &) ) );
355 this, TQT_SLOT( slotDataReq(
TDEIO::Job *, TQByteArray &) ) );
357 this, TQT_SLOT( slotMimetype(
TDEIO::Job *,
const TQString &) ) );
371 void ForwardingSlaveBase::slotResult(
TDEIO::Job *job)
373 if ( job->
error() != 0)
389 tqApp->eventLoop()->exitLoop();
392 void ForwardingSlaveBase::slotWarning(
TDEIO::Job* ,
const TQString &msg)
397 void ForwardingSlaveBase::slotInfoMessage(
TDEIO::Job* ,
const TQString &msg)
412 void ForwardingSlaveBase::slotSpeed(
TDEIO::Job* ,
unsigned long bytesPerSecond)
414 speed(bytesPerSecond);
417 void ForwardingSlaveBase::slotRedirection(
TDEIO::Job *job,
const KURL &url)
425 tqApp->eventLoop()->exitLoop();
428 void ForwardingSlaveBase::slotEntries(
TDEIO::Job* ,
429 const TDEIO::UDSEntryList &entries)
431 TDEIO::UDSEntryList final_entries = entries;
433 TDEIO::UDSEntryList::iterator it = final_entries.begin();
434 TDEIO::UDSEntryList::iterator end = final_entries.end();
444 void ForwardingSlaveBase::slotData(
TDEIO::Job* ,
const TQByteArray &d)
449 void ForwardingSlaveBase::slotDataReq(
TDEIO::Job* , TQByteArray &data)
455 void ForwardingSlaveBase::slotMimetype (
TDEIO::Job* ,
const TQString &type)
472 #include "forwardingslavebase.moc"