1 | /* |
2 | Copyright (C) 2006-2007 KovoKs <info@kovoks.nl> |
3 | |
4 | This library is free software; you can redistribute it and/or modify it |
5 | under the terms of the GNU Library General Public License as published by |
6 | the Free Software Foundation; either version 2 of the License, or (at your |
7 | option) any later version. |
8 | |
9 | This library is distributed in the hope that it will be useful, but WITHOUT |
10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
11 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public |
12 | License for more details. |
13 | |
14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to the |
16 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
17 | 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef MAILTRANSPORT_SOCKET_H |
21 | #define MAILTRANSPORT_SOCKET_H |
22 | |
23 | #include <mailtransport/mailtransport_export.h> |
24 | |
25 | #include <QtNetwork/QSslSocket> |
26 | |
27 | namespace MailTransport { |
28 | |
29 | class SocketPrivate; |
30 | |
31 | /** |
32 | * @class Socket |
33 | * Responsible for communicating with the server, it's designed to work |
34 | * with the ServerTest class. |
35 | * @author Tom Albers <tomalbers@kde.nl> |
36 | */ |
37 | class MAILTRANSPORT_EXPORT Socket : public QObject |
38 | { |
39 | Q_OBJECT |
40 | |
41 | public: |
42 | |
43 | /** |
44 | * Contructor, it will not auto connect. Call reconnect() to connect to |
45 | * the parameters given. |
46 | * @param parent the parent |
47 | */ |
48 | explicit Socket( QObject *parent ); |
49 | |
50 | /** |
51 | * Destructor |
52 | */ |
53 | ~Socket(); |
54 | |
55 | /** |
56 | * Existing connection will be closed and a new connection will be |
57 | * made |
58 | */ |
59 | virtual void reconnect(); |
60 | |
61 | /** |
62 | * Write @p text to the socket |
63 | */ |
64 | virtual void write( const QString &text ); |
65 | |
66 | /** |
67 | * @return true when the connection is live and kicking |
68 | */ |
69 | virtual bool available(); |
70 | |
71 | /** |
72 | * set the protocol to use |
73 | */ |
74 | void setProtocol( const QString &proto ); |
75 | |
76 | /** |
77 | * set the server to use |
78 | */ |
79 | void setServer( const QString &server ); |
80 | |
81 | /** |
82 | * set the port to use. If not specified, it will use the default |
83 | * belonging to the protocol. |
84 | */ |
85 | void setPort( int port ); |
86 | |
87 | /** |
88 | * this will be a secure connection |
89 | */ |
90 | void setSecure( bool what ); |
91 | |
92 | /** |
93 | * If you want to start TLS encryption, call this. For example after the starttls command. |
94 | */ |
95 | void startTLS(); |
96 | |
97 | private: |
98 | Q_DECLARE_PRIVATE( Socket ) |
99 | SocketPrivate *const d; |
100 | |
101 | Q_PRIVATE_SLOT( d, void slotConnected() ) |
102 | Q_PRIVATE_SLOT( d, void slotStateChanged( QAbstractSocket::SocketState state ) ) |
103 | Q_PRIVATE_SLOT( d, void slotModeChanged( QSslSocket::SslMode state ) ) |
104 | Q_PRIVATE_SLOT( d, void slotSocketRead() ) |
105 | Q_PRIVATE_SLOT( d, void slotSslErrors( const QList<QSslError> &errors ) ) |
106 | |
107 | Q_SIGNALS: |
108 | /** |
109 | * emits the incoming data |
110 | */ |
111 | void data( const QString & ); |
112 | |
113 | /** |
114 | * emitted when there is a connection (ready to send something). |
115 | */ |
116 | void connected(); |
117 | |
118 | /** |
119 | * emitted when not connected. |
120 | */ |
121 | void failed(); |
122 | |
123 | /** |
124 | * emitted when startShake() is completed. |
125 | */ |
126 | void tlsDone(); |
127 | }; |
128 | |
129 | } // namespace MailTransport |
130 | |
131 | #endif // MAILTRANSPORT_SOCKET_H |
132 | |
133 | |