/* Copyright (c) 2005 by Olivier Goffart ************************************************************************* * * * 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 P2PWEBCAM_H #define P2PWEBCAM_H #include "p2p.h" #if MSN_WEBCAM namespace KNetwork{ class TDEServerSocket; class TDEBufferedSocket; } class MimicWrapper; class TQLabel; class MSNWebcamDialog; class TQTimerEvent; namespace P2P { class Webcam : public TransferContext { Q_OBJECT public: enum Who { wProducer , wViewer }; Webcam( Who who , const TQString& to, Dispatcher *parent, TQ_UINT32 sessionID); ~Webcam( ); virtual void processMessage(const Message& message); public slots: void askIncommingInvitation(); virtual void acknowledged(); void sendBYEMessage(); private: void makeSIPMessage(const TQString &message, TQ_UINT8 XX=0, TQ_UINT8 YY=9 , TQ_UINT8 ZZ=0); void sendBigP2PMessage( const TQByteArray& dataMessage ); void closeAllOtherSockets(); TQString m_content; TQString xml(uint session , uint rid); int getAvailablePort(); KNetwork::TDEServerSocket *m_listener; KNetwork::TDEBufferedSocket *m_webcamSocket; enum WebcamStatus { wsNegotiating , wsConnecting, wsConnected, wsTransfer } ; Who m_who; TQString m_myAuth; TQString m_peerAuth; MimicWrapper *m_mimic; MSNWebcamDialog *m_widget; TQValueList m_allSockets; TQMap m_webcamStates; int m_timerId; int m_timerFps; private slots: void slotListenError(int errorCode); void slotAccept(); void slotSocketRead(); void slotSocketClosed(); void slotSocketError(int errorCode); void slotSocketConnected(); // void slotReadyWrite(); protected: virtual void timerEvent( TQTimerEvent * ); }; } #endif #endif