sshdirecttcpiptunnel.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**************************************************************************
  2. **
  3. ** This file is part of Qt Creator
  4. **
  5. ** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
  6. **
  7. ** Contact: Nokia Corporation (qt-info@nokia.com)
  8. **
  9. **
  10. ** GNU Lesser General Public License Usage
  11. **
  12. ** This file may be used under the terms of the GNU Lesser General Public
  13. ** License version 2.1 as published by the Free Software Foundation and
  14. ** appearing in the file LICENSE.LGPL included in the packaging of this file.
  15. ** Please review the following information to ensure the GNU Lesser General
  16. ** Public License version 2.1 requirements will be met:
  17. ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
  18. **
  19. ** In addition, as a special exception, Nokia gives you certain additional
  20. ** rights. These rights are described in the Nokia Qt LGPL Exception
  21. ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
  22. **
  23. ** Other Usage
  24. **
  25. ** Alternatively, this file may be used in accordance with the terms and
  26. ** conditions contained in a signed written agreement between you and Nokia.
  27. **
  28. ** If you have questions regarding the use of this file, please contact
  29. ** Nokia at qt-info@nokia.com.
  30. **
  31. **************************************************************************/
  32. #ifndef SSHDIRECTTCPIPTUNNEL_H
  33. #define SSHDIRECTTCPIPTUNNEL_H
  34. #include "ssh_global.h"
  35. #include <QIODevice>
  36. #include <QSharedPointer>
  37. namespace QSsh {
  38. namespace Internal {
  39. class SshChannelManager;
  40. class SshDirectTcpIpTunnelPrivate;
  41. class SshSendFacility;
  42. class SshTcpIpTunnelPrivate;
  43. } // namespace Internal
  44. class QSSH_EXPORT SshDirectTcpIpTunnel : public QIODevice
  45. {
  46. Q_OBJECT
  47. friend class Internal::SshChannelManager;
  48. friend class Internal::SshTcpIpTunnelPrivate;
  49. public:
  50. typedef QSharedPointer<SshDirectTcpIpTunnel> Ptr;
  51. ~SshDirectTcpIpTunnel();
  52. // QIODevice stuff
  53. bool atEnd() const;
  54. qint64 bytesAvailable() const;
  55. bool canReadLine() const;
  56. void close();
  57. bool isSequential() const { return true; }
  58. void initialize();
  59. signals:
  60. void initialized();
  61. void error(const QString &reason);
  62. private:
  63. SshDirectTcpIpTunnel(quint32 channelId, const QString &originatingHost,
  64. quint16 originatingPort, const QString &remoteHost, quint16 remotePort,
  65. Internal::SshSendFacility &sendFacility);
  66. // QIODevice stuff
  67. qint64 readData(char *data, qint64 maxlen);
  68. qint64 writeData(const char *data, qint64 len);
  69. Internal::SshDirectTcpIpTunnelPrivate * const d;
  70. };
  71. } // namespace QSsh
  72. #endif // SSHDIRECTTCPIPTUNNEL_H