366
// ----------------------- KMessageFilePipe ---------------------------
367
KMessageFilePipe::KMessageFilePipe(QObject *parent,QFile *readfile,QFile *writefile) : KMessageIO(parent)
370
mWriteFile=writefile;
372
mReceiveBuffer.resize(1024);
375
KMessageFilePipe::~KMessageFilePipe()
379
bool KMessageFilePipe::isConnected () const
381
return (mReadFile!=0)&&(mWriteFile!=0);
385
void KMessageFilePipe::send(const QByteArray &msg)
387
unsigned int size=msg.size()+2*sizeof(long);
389
char *tmpbuffer=new char[size];
390
long *p1=(long *)tmpbuffer;
392
memcpy(tmpbuffer+2*sizeof(long),msg.data(),msg.size());
396
QByteArray buffer(tmpbuffer,size);
397
mWriteFile->write(buffer);
402
fprintf(stderr,"+++ KMessageFilePipe:: SEND(%d to parent) realsize=%d\n",msg.size(),buffer.size());
403
for (int i=0;i<buffer.size();i++) fprintf(stderr,"%02x ",(unsigned char)buffer.at(i));fprintf(stderr,"\n");
410
void KMessageFilePipe::exec()
413
// According to BL: Blocking read is ok
414
// while(mReadFile->atEnd()) { usleep(100); }
416
mReadFile->getChar(&ch);
418
while (mReceiveCount>=mReceiveBuffer.size()) mReceiveBuffer.resize(mReceiveBuffer.size()+1024);
419
mReceiveBuffer[mReceiveCount]=ch;
422
// Change for message
423
if (mReceiveCount>=int(2*sizeof(long)))
425
long *p1=(long *)mReceiveBuffer.data();
430
fprintf(stderr,"KMessageFilePipe::exec:: Cookie error...transmission failure...serious problem...\n");
432
// for (int i=0;i<16;i++) fprintf(stderr,"%02x ",mReceiveBuffer[i]);fprintf(stderr,"\n");
435
if (len==mReceiveCount)
437
//fprintf(stderr,"KMessageFilePipe::exec:: Got Message with len %d\n",len);
441
//msg.setRawData(mReceiveBuffer.data()+2*sizeof(long),len-2*sizeof(long));
442
qCopy(mReceiveBuffer.begin()+2*sizeof(long),mReceiveBuffer.begin()+len, msg.begin());
443
// msg.duplicate(mReceiveBuffer.data()+2*sizeof(long),len-2*sizeof(long));
445
//msg.resetRawData(mReceiveBuffer.data()+2*sizeof(long),len-2*sizeof(long));
456
365
#include "kmessageio.moc"