diff options
Diffstat (limited to 'kopete/protocols/msn/messageformatter.cpp')
-rw-r--r-- | kopete/protocols/msn/messageformatter.cpp | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/kopete/protocols/msn/messageformatter.cpp b/kopete/protocols/msn/messageformatter.cpp deleted file mode 100644 index 0ca71789..00000000 --- a/kopete/protocols/msn/messageformatter.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* - messageformatter.cpp - msn p2p protocol - - Copyright (c) 2005 by Gregg Edghill <[email protected]> - - ************************************************************************* - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ************************************************************************* -*/ - -#include "messageformatter.h" -#include "p2p.h" - -// TQt includes -#include <tqdatastream.h> -#include <tqregexp.h> - -// Kde includes -#include <kdebug.h> - -using P2P::MessageFormatter; -using P2P::Message; - -MessageFormatter::MessageFormatter(TQObject *parent, const char *name) : TQObject(parent, name) -{} - -MessageFormatter::~MessageFormatter() -{} - -Message MessageFormatter::readMessage(const TQByteArray& stream, bool compact) -{ - Message inbound; - - TQ_UINT32 index = 0; - if(compact == false) - { - // Determine the end position of the message header. - while(index < stream.size()) - { - if(stream[index++] == '\n'){ - if(stream[index - 3] == '\n') - break; - } - } - - // Retrieve the message header. - TQString messageHeader = TQCString(stream.data(), index); - - // Retrieve the message mime version, content type, - // and p2p destination. - TQRegExp regex("Content-Type: ([A-Za-z0-9$!*/\\-]*)"); - regex.search(messageHeader); - TQString contentType = regex.cap(1); - - if(contentType != "application/x-msnmsgrp2p") - return inbound; - -// kdDebug(14140) << k_funcinfo << endl; - - regex = TQRegExp("MIME-Version: (\\d.\\d)"); - regex.search(messageHeader); - inbound.mimeVersion = regex.cap(1); - inbound.contentType = contentType; - regex = TQRegExp("P2P-Dest: ([^\r\n]*)"); - regex.search(messageHeader); - TQString destination = regex.cap(1); - } - - TQDataStream reader(stream, IO_ReadOnly); - reader.setByteOrder(TQDataStream::LittleEndian); - // Seek to the start position of the message - // transport header. - reader.device()->at(index); - - // Read the message transport headers from the stream. - reader >> inbound.header.sessionId; - reader >> inbound.header.identifier; - reader >> inbound.header.dataOffset; - reader >> inbound.header.totalDataSize; - reader >> inbound.header.dataSize; - reader >> inbound.header.flag; - reader >> inbound.header.ackSessionIdentifier; - reader >> inbound.header.ackUniqueIdentifier; - reader >> inbound.header.ackDataSize; - - /*kdDebug(14140) - << "session id, " << inbound.header.sessionId << endl - << "identifier, " << inbound.header.identifier << endl - << "data offset, " << inbound.header.dataOffset << endl - << "total size, " << inbound.header.totalDataSize << endl - << "data size, " << inbound.header.dataSize << endl - << "flag, " << inbound.header.flag << endl - << "ack session identifier, " << inbound.header.ackSessionIdentifier << endl - << "ack unique identifier, " << inbound.header.ackUniqueIdentifier << endl - << "ack data size, " << inbound.header.ackDataSize - << endl;*/ - - // Read the message body from the stream. - if(inbound.header.dataSize > 0){ - inbound.body.resize(inbound.header.dataSize); - reader.readRawBytes(inbound.body.data(), inbound.header.dataSize); - } - - if(compact == false) - { - reader.setByteOrder(TQDataStream::BigEndian); - // Read the message application identifier from the stream. - reader >> inbound.applicationIdentifier; - -/* kdDebug(14140) - << "application identifier, " << inbound.applicationIdentifier - << endl;*/ - } - - return inbound; -} - -void MessageFormatter::writeMessage(const Message& message, TQByteArray& stream, bool compact) -{ -// kdDebug(14140) << k_funcinfo << endl; - - TQDataStream writer(stream, IO_WriteOnly); - writer.setByteOrder(TQDataStream::LittleEndian); - - if(compact == false) - { - const TQCString messageHeader = TQString("MIME-Version: 1.0\r\n" - "Content-Type: application/x-msnmsgrp2p\r\n" - "P2P-Dest: " + message.destination + "\r\n" - "\r\n").utf8(); - // Set the capacity of the message buffer. - stream.resize(messageHeader.length() + 48 + message.body.size() + 4); - // Write the message header to the stream - writer.writeRawBytes(messageHeader.data(), messageHeader.length()); - } - else - { - // Set the capacity of the message buffer. - stream.resize(4 + 48 + message.body.size()); - // Write the message size to the stream. - writer << (TQ_INT32)(48+message.body.size()); - } - - - // Write the transport headers to the stream. - writer << message.header.sessionId; - writer << message.header.identifier; - writer << message.header.dataOffset; - writer << message.header.totalDataSize; - writer << message.header.dataSize; - writer << message.header.flag; - writer << message.header.ackSessionIdentifier; - writer << message.header.ackUniqueIdentifier; - writer << message.header.ackDataSize; - -/* kdDebug(14140) - << "session id, " << message.header.sessionId << endl - << "identifier, " << message.header.identifier << endl - << "data offset, " << message.header.dataOffset << endl - << "total size, " << message.header.totalDataSize << endl - << "data size, " << message.header.dataSize << endl - << "flag, " << message.header.flag << endl - << "ack session identifier, " << message.header.ackSessionIdentifier << endl - << "ack unique identifier, " << message.header.ackUniqueIdentifier << endl - << "ack data size, " << message.header.ackDataSize - << endl; -*/ - if(message.body.size() > 0){ - // Write the messge body to the stream. - writer.writeRawBytes(message.body.data(), message.body.size()); - } - - if(compact == false) - { - // Seek to the message application identifier section. - writer.setByteOrder(TQDataStream::BigEndian); - // Write the message application identifier to the stream. - writer << message.applicationIdentifier; - -/* kdDebug(14140) - << "application identifier, " << message.applicationIdentifier - << endl; - */ - } -} - -#include "messageformatter.moc" |