GCC Code Coverage Report


Directory: ./
File: qtpdcom/QtPdCom1/LoginManager.h
Date: 2023-11-12 04:06:57
Exec Total Coverage
Lines: 2 2 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 /*****************************************************************************
2 *
3 * Copyright (C) 2009-2023 Bjarne von Horn <vh@igh.de>
4 *
5 * This file is part of the QtPdCom library.
6 *
7 * The QtPdCom library is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * The QtPdCom library is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 * License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with the QtPdCom Library. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22 #ifndef QTPDCOM_LOGINMANAGER_H
23 #define QTPDCOM_LOGINMANAGER_H
24
25 #include "Export.h"
26
27 #include <QObject>
28 #include <QScopedPointer>
29 #include <QString>
30
31 namespace QtPdCom {
32
33 class LoginManagerPrivate;
34 class Process;
35
36 4 class QTPDCOM_PUBLIC LoginManager: public QObject
37 {
38 Q_OBJECT
39
40 public:
41 explicit LoginManager(QString server_name = QString(), QObject *parent = nullptr);
42 ~LoginManager();
43
44 /**
45 * Set Login Name.
46 *
47 * \param name Login name.
48 */
49 Q_INVOKABLE void setAuthName(QString name);
50 /**
51 * Set Password.
52 *
53 * \param password Password.
54 */
55 Q_INVOKABLE void setPassword(QString password);
56
57 /**
58 * Clear stored credentials.
59 *
60 */
61 Q_INVOKABLE void clearCredentials();
62
63 /**
64 * Start the login process.
65 *
66 * If possible, please call setAuthName() and
67 * setPassword() in advance.
68 * Do not call login() from whithin any Authentification-related
69 * callback (i.e. slots connected to any of our signals which are not
70 * queued connections) as use-after-free can happen as a new session is
71 * started.
72 */
73 Q_INVOKABLE void login();
74 /**
75 * logout.
76 */
77 Q_INVOKABLE void logout();
78
79 /** Sasl global initialization.
80 *
81 * Call this at startup of your application to initialize the underlying
82 * sasl library.
83 *
84 * \param plugin_path Path to SASL.
85 * \throws PdCom::Exception Initialization failed.
86 */
87 static void InitLibrary(const char *plugin_path = nullptr);
88 /** Sasl global finalization
89 */
90 static void FinalizeLibrary();
91
92 signals:
93
94 /**
95 * Username and/or password has not been set.
96 */
97 void needCredentials();
98 /**
99 * Authentification was successful.
100 */
101 void loginSuccessful();
102 /**
103 * Authentification was not successful.
104 */
105 void loginFailed();
106
107 private:
108 13 Q_DECLARE_PRIVATE(LoginManager);
109 Q_DISABLE_COPY(LoginManager);
110 LoginManager& operator=(LoginManager&&) = delete;
111 LoginManager(LoginManager&&) = delete;
112
113 QScopedPointer<LoginManagerPrivate> d_ptr;
114 friend Process;
115 };
116
117 } // namespace QtPdCom
118
119 #endif // QTPDCOM_LOGINMANAGER_H
120