23 #include "dataslave.h"
24 #include "dataprotocol.h"
26 #include <tdelocale.h>
31 using namespace TDEIO;
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); \
59 DataSlave::DataSlave() :
60 Slave(true, 0,
"data", TQString::null)
64 timer =
new TQTimer(
this);
65 connect(timer, TQ_SIGNAL(timeout()), TQ_SLOT(dispatchNext()));
68 DataSlave::~DataSlave() {
72 void DataSlave::hold(
const KURL &) {
76 void DataSlave::suspend() {
82 void DataSlave::resume() {
88 timer->start(TDEIO_DATA_POLL_INTERVAL);
93 void DataSlave::dispatch_finished() {
94 QueueStruct q(Queue_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();
118 void DataSlave::send(
int cmd,
const TQByteArray &arr) {
119 TQDataStream stream(arr, IO_ReadOnly);
139 error(ERR_UNSUPPORTED_ACTION,
144 bool DataSlave::suspended() {
148 void DataSlave::setHost(
const TQString &,
int ,
149 const TQString &,
const TQString &) {
153 void DataSlave::setConfig(
const MetaData &) {
157 TQDataStream stream( data, IO_WriteOnly );
159 slaveconn.send( CMD_CONFIG, data );
168 emit metaData(meta_data);
171 void 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);
187 params->retval = suspended();
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 );
205 DISPATCH_IMPL1(mimeType,
const TQString &, s)
207 DISPATCH_IMPL(sendMetaData)
208 DISPATCH_IMPL1(data,
const TQByteArray &, ba)
211 #undef DISPATCH_IMPL1
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...
A namespace for TDEIO globals.
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