xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPControl.h (revision 4e1f96faf8dda38f639610fb3e7474dee1c26ab2)
1 // $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPControl.h,v 1.5.10.1 2008/04/14 23:09:26 quanah Exp $
2 /*
3  * Copyright 2000, 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          * Copy-constructor
21          */
22         LDAPCtrl(const LDAPCtrl& c);
23 
24         /**
25          * Constructor.
26          * @param oid:  The Object Identifier of the Control
27          * @param critical: "true" if the Control should be handled
28          *                  critical by the server.
29          * @param data: If there is data for the control, put it here.
30          * @param length: The length of the data field
31          */
32         LDAPCtrl(const char *oid, bool critical, const char *data=0,
33                 int length=0);
34 
35         /**
36          * Constructor.
37          * @param oid:  The Object Identifier of the Control
38          * @param critical: "true" if the Control should be handled
39          *                  critical by the server.
40          * @param data: If there is data for the control, put it here.
41          */
42         LDAPCtrl(const std::string& oid, bool critical=false,
43                 const std::string& data=std::string());
44 
45         /**
46          * Creates a copy of the Control that "ctrl is pointing to
47          */
48         LDAPCtrl(const LDAPControl* ctrl);
49 
50         /**
51          * Destructor
52          */
53         ~LDAPCtrl();
54 
55         /**
56          * @return The OID of the control
57          */
58         std::string getOID() const;
59 
60         /**
61          * @return The Data of the control as a std::string-Objekt
62          */
63         std::string getData() const;
64 
65         /**
66          * @return "true" if the control is critical
67          */
68         bool isCritical() const;
69 
70         /**
71          * For internal use only.
72          *
73          * Translates the control to a LDAPControl-structure as needed by
74          * the C-API
75          */
76         LDAPControl* getControlStruct() const;
77 	static void freeLDAPControlStruct(LDAPControl *ctrl);
78 
79     private :
80         std::string m_oid;
81         std::string m_data;
82         bool m_isCritical;
83 };
84 
85 #endif //LDAP_CONTROL_H
86