]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPControl.h
Happy New Year!
[openldap] / contrib / ldapc++ / src / LDAPControl.h
1 // $OpenLDAP$
2 /*
3  * Copyright 2000-2017 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6
7
8 #ifndef LDAP_CONTROL_H
9 #define LDAP_CONTROL_H
10 #include <string>
11 #include <ldap.h>
12
13 /**
14  * This class is used to store Controls. Controls are a mechanism to extend
15  * and modify LDAP-Operations.
16  */
17 class LDAPCtrl{
18     public :
19         /**
20          * Constructor.
21          * @param oid:  The Object Identifier of the Control
22          * @param critical: "true" if the Control should be handled
23          *                  critical by the server.
24          * @param data: If there is data for the control, put it here.
25          * @param length: The length of the data field
26          */
27         LDAPCtrl(const char *oid, bool critical=false, const char *data=0, 
28                 int length=0);
29
30         /**
31          * Constructor.
32          * @param oid:  The Object Identifier of the Control
33          * @param critical: "true" if the Control should be handled
34          *                  critical by the server.
35          * @param data: If there is data for the control, put it here.
36          */
37         LDAPCtrl(const std::string& oid, bool critical,
38                  const std::string& data);
39
40         /**
41          * Creates a copy of the Control that "ctrl is pointing to
42          */
43         LDAPCtrl(const LDAPControl* ctrl);
44
45         /**
46          * Destructor
47          */
48         ~LDAPCtrl();
49        
50         /**
51          * @return The OID of the control
52          */
53         std::string getOID() const;
54
55         /**
56          * @return true if there is no "Control Value" (there is a
57          * difference between no and an empty control value)
58          */
59         bool hasData() const;
60
61         /**
62          * @return The Data of the control as a std::string-Object
63          */
64         std::string getData() const;
65
66         /**
67          * @return "true" if the control is critical
68          */
69         bool isCritical() const;
70
71         /**
72          * For internal use only.
73          *
74          * Translates the control to a LDAPControl-structure as needed by
75          * the C-API
76          */
77         LDAPControl* getControlStruct() const;
78         static void freeLDAPControlStruct(LDAPControl *ctrl);
79
80     private :
81         std::string m_oid;
82         std::string m_data;
83         bool m_isCritical;
84         bool m_noData;
85 };
86
87 #endif //LDAP_CONTROL_H