24#include "dataprotocol.h"
33#define TDEIO_DATA_POLL_INTERVAL 0
36#define DISPATCH_IMPL(type) \
37 void DataSlave::dispatch_##type() { \
39 QueueStruct q(Queue_##type); \
40 dispatchQueue.push_back(q); \
41 if (!timer->isActive()) timer->start(TDEIO_DATA_POLL_INTERVAL); \
47#define DISPATCH_IMPL1(type, paramtype, paramname) \
48 void DataSlave::dispatch_##type(paramtype paramname) { \
50 QueueStruct q(Queue_##type); \
51 q.paramname = paramname; \
52 dispatchQueue.push_back(q); \
53 if (!timer->isActive()) timer->start(TDEIO_DATA_POLL_INTERVAL); \
59DataSlave::DataSlave() :
60 Slave(true, 0,
"data", TQString::null)
64 timer =
new TQTimer(
this);
65 connect(timer, TQ_SIGNAL(timeout()), TQ_SLOT(dispatchNext()));
68DataSlave::~DataSlave() {
72void DataSlave::hold(
const KURL &) {
88 timer->start(TDEIO_DATA_POLL_INTERVAL);
93void DataSlave::dispatch_finished() {
95 dispatchQueue.push_back(q);
96 if (!timer->isActive()) timer->start(TDEIO_DATA_POLL_INTERVAL);
100 if (dispatchQueue.empty()) {
108 case Queue_mimeType: mimeType(q.s);
break;
109 case Queue_totalSize: totalSize(q.size);
break;
111 case Queue_data: data(q.ba);
break;
112 case Queue_finished: finished();
break;
115 dispatchQueue.pop_front();
118void DataSlave::send(
int cmd,
const TQByteArray &arr) {
119 TQDataStream stream(arr, IO_ReadOnly);
139 error(ERR_UNSUPPORTED_ACTION,
148void DataSlave::setHost(
const TQString &,
int ,
149 const TQString &,
const TQString &) {
153void DataSlave::setConfig(
const MetaData &) {
157 TQDataStream stream( data, IO_WriteOnly );
159 slaveconn.send( CMD_CONFIG, data );
168 emit metaData(meta_data);
171void DataSlave::virtual_hook(
int id,
void* data ) {
173 case VIRTUAL_SUSPEND:
suspend();
return;
174 case VIRTUAL_RESUME:
resume();
return;
176 SendParams *params =
reinterpret_cast<SendParams *
>(data);
177 send(params->cmd, *params->arr);
181 HoldParams *params =
reinterpret_cast<HoldParams *
>(data);
185 case VIRTUAL_SUSPENDED: {
186 SuspendedParams *params =
reinterpret_cast<SuspendedParams *
>(data);
190 case VIRTUAL_SET_HOST: {
191 SetHostParams *params =
reinterpret_cast<SetHostParams *
>(data);
192 setHost(*params->host,params->port,*params->user,*params->passwd);
195 case VIRTUAL_SET_CONFIG: {
196 SetConfigParams *params =
reinterpret_cast<SetConfigParams *
>(data);
197 setConfig(*params->config);
201 TDEIO::Slave::virtual_hook(
id, data );
205DISPATCH_IMPL1(mimeType,
const TQString &, s)
207DISPATCH_IMPL(sendMetaData)
208DISPATCH_IMPL1(data,
const TQByteArray &, ba)
213#include "dataslave.moc"
void dispatchNext()
dispatches next queued method.
void setAllMetaData(const MetaData &)
Sets metadata.
void sendMetaData()
Sends metadata set with setAllMetaData.
Attention developers: If you change the implementation of TDEIO::Slave, do not use connection() or sl...
bool suspended()
Tells wether the tdeioslave is suspended.
void suspend()
Suspends the operation of the attached tdeioslave.
void resume()
Resumes the operation of the attached tdeioslave.
A namespace for TDEIO globals.
TDEIO_EXPORT MimetypeJob * mimetype(const KURL &url, bool showProgressInfo=true)
Find mimetype for one file or directory.
TDEIO_EXPORT TransferJob * get(const KURL &url, bool reload=false, bool showProgressInfo=true)
Get (a.k.a.
TDEIO_EXPORT TQString unsupportedActionErrorString(const TQString &protocol, int cmd)
Returns an appropriate error message if the given command cmd is an unsupported action (ERR_UNSUPPORT...
TQ_ULLONG filesize_t
64-bit file size