/* msnp2p.h - msn p2p protocol Copyright (c) 2003 by Olivier Goffart <[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. * * * ************************************************************************* */ #ifndef MSNP2P_H #define MSNP2P_H #include <qobject.h> #include <qstrlist.h> class KopeteTransfer; struct KopeteFileTransferInfo;
class KTempFile; class QFile; /** * @author Olivier Goffart * * This class help the MSNSwithboardSocket to handle the MSN-P2P messages */ class MSNP2P : public QObject { Q_OBJECT public: MSNP2P( QObject *parent=0L , const char *name=0L); ~MSNP2P(); public slots: /** * parse an incoming message */ void slotReadMessage( const QByteArray &msg ); signals: /** * should be connected to the MSNSwitchBoardSocket's sendCommand function */ void sendCommand( const QString &cmd, const QString &args = QString::null, bool addId = true, const QByteArray &body = QByteArray() , bool binary=false ); void fileReceived( KTempFile * , const QString &msnObject ); private: enum MessageType { BYE, OK, DECLINE, ERROR, INVITE }; /** * send the MSNSLP command in a msn p2p message * dataMessage cen be a QCString in case of text message */ void sendP2PMessage( const QByteArray& dataMessage ); /** * make and send a P2P message. * @ref sendP2PMessage is used to send the message. * * @param content is the content of the message. it must be terminated by two \r\n\r\n */ void makeMSNSLPMessage( MessageType type, QString content ); /** * send the ACK */ void sendP2PAck( const char * originalHeader) ;
private slots: void slotSendData(); void slotTransferAccepted(KopeteTransfer*, const QString& ); void slotFileTransferRefused( const KopeteFileTransferInfo & ); void slotKopeteTransferDestroyed(); public slots: /** * Load the dysplayImage. */ void requestDisplayPicture( const QString &myHandle, const QString &msgHandle, QString msnObject); /** * Abort the current transfer. */ void abortCurrentTransfer(); private: //for the display image KTempFile *m_file; QFile *m_Sfile; QFile *m_Rfile; QString m_obj; unsigned long int m_msgIdentifier; unsigned long int m_sessionId; unsigned long int m_totalDataSize; unsigned long int m_offset; QString m_CallID; QString m_branch; QString m_myHandle; QString m_msgHandle; KopeteTransfer *m_kopeteTransfer;
}; #endif 
|