PdCom  5.3
Process data communication client
Sasl.h
1 /*****************************************************************************
2  *
3  * Copyright (C) 2021 Bjarne von Horn (vh at igh dot de).
4  *
5  * This file is part of the PdCom library.
6  *
7  * The PdCom 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 PdCom 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 PdCom library. If not, see <http://www.gnu.org/licenses/>.
19  *
20  *****************************************************************************/
21 
22 #ifndef PDCOM5_SASL_H
23 #define PDCOM5_SASL_H
24 
25 #include <pdcom5_export.h>
26 
27 namespace PdCom {
28 namespace impl {
29 class Process;
30 }
31 
41 class PDCOM5_PUBLIC Sasl
42 {
43  public:
44  Sasl();
45  Sasl(Sasl const &) = delete;
46  Sasl(Sasl &&) noexcept;
47  Sasl &operator=(Sasl &&) noexcept;
48  Sasl &operator=(Sasl const &) = delete;
49 
50  protected:
65  bool loginStep(const char *mech, const char *clientData);
68  void logout();
69  ~Sasl();
70 
71 
72  private:
73  friend impl::Process;
74  std::weak_ptr<impl::Process> process_;
75 
91  virtual void
92  loginReply(const char *mechlist, const char *serverData, int finished) = 0;
93 };
94 } // namespace PdCom
95 
96 #endif // PDCOM5_SASL_H
SASL Interface for PdCom.
Definition: Sasl.h:41
Definition: ClientStatistics.h:31