/src/libtomahawk/network/PortFwdThread.h
C Header | 75 lines | 40 code | 18 blank | 17 comment | 0 complexity | e502749483c2ee880e58abd3d4200541 MD5 | raw file
1/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === 2 * 3 * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> 4 * 5 * Tomahawk is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * Tomahawk is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with Tomahawk. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19#ifndef PORTFWDTHREAD_H 20#define PORTFWDTHREAD_H 21 22#include <QThread> 23#include <QMutex> 24#include <QHostAddress> 25#include <QPointer> 26 27class Portfwd; 28 29class PortFwdWorker : public QObject 30{ 31Q_OBJECT 32 33public: 34 explicit PortFwdWorker( unsigned int port ); 35 ~PortFwdWorker(); 36 37 unsigned int externalPort() const { return m_externalPort; } 38 39 void unregister(); 40 41signals: 42 void externalAddressDetected( QHostAddress ha, unsigned int port ); 43 44public slots: 45 void work(); 46 47private: 48 Portfwd* m_portfwd; 49 QHostAddress m_externalAddress; 50 unsigned int m_externalPort, m_port; 51}; 52 53 54class PortFwdThread : public QThread 55{ 56Q_OBJECT 57 58public: 59 explicit PortFwdThread( unsigned int port ); 60 ~PortFwdThread(); 61 62 QPointer< PortFwdWorker > worker() const; 63 64signals: 65 void externalAddressDetected( QHostAddress ha, unsigned int port ); 66 67protected: 68 void run(); 69 70private: 71 QPointer< PortFwdWorker > m_worker; 72 unsigned int m_port; 73}; 74 75#endif // PORTFWDTHREAD_H