1*549b59edSchristos /* $NetBSD: LDAPControl.h,v 1.3 2021/08/14 16:14:49 christos Exp $ */ 24e6df137Slukem 3d11b170bStron // $OpenLDAP$ 42de962bdSlukem /* 5*549b59edSchristos * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved. 62de962bdSlukem * COPYING RESTRICTIONS APPLY, see COPYRIGHT file 72de962bdSlukem */ 82de962bdSlukem 92de962bdSlukem 102de962bdSlukem #ifndef LDAP_CONTROL_H 112de962bdSlukem #define LDAP_CONTROL_H 122de962bdSlukem #include <string> 132de962bdSlukem #include <ldap.h> 142de962bdSlukem 152de962bdSlukem /** 162de962bdSlukem * This class is used to store Controls. Controls are a mechanism to extend 172de962bdSlukem * and modify LDAP-Operations. 182de962bdSlukem */ 192de962bdSlukem class LDAPCtrl{ 202de962bdSlukem public : 212de962bdSlukem /** 222de962bdSlukem * Constructor. 232de962bdSlukem * @param oid: The Object Identifier of the Control 242de962bdSlukem * @param critical: "true" if the Control should be handled 252de962bdSlukem * critical by the server. 262de962bdSlukem * @param data: If there is data for the control, put it here. 272de962bdSlukem * @param length: The length of the data field 282de962bdSlukem */ 294e6df137Slukem LDAPCtrl(const char *oid, bool critical=false, const char *data=0, 302de962bdSlukem int length=0); 312de962bdSlukem 322de962bdSlukem /** 332de962bdSlukem * Constructor. 342de962bdSlukem * @param oid: The Object Identifier of the Control 352de962bdSlukem * @param critical: "true" if the Control should be handled 362de962bdSlukem * critical by the server. 372de962bdSlukem * @param data: If there is data for the control, put it here. 382de962bdSlukem */ 394e6df137Slukem LDAPCtrl(const std::string& oid, bool critical, 404e6df137Slukem const std::string& data); 412de962bdSlukem 422de962bdSlukem /** 432de962bdSlukem * Creates a copy of the Control that "ctrl is pointing to 442de962bdSlukem */ 452de962bdSlukem LDAPCtrl(const LDAPControl* ctrl); 462de962bdSlukem 472de962bdSlukem /** 482de962bdSlukem * Destructor 492de962bdSlukem */ 502de962bdSlukem ~LDAPCtrl(); 512de962bdSlukem 522de962bdSlukem /** 532de962bdSlukem * @return The OID of the control 542de962bdSlukem */ 552de962bdSlukem std::string getOID() const; 562de962bdSlukem 572de962bdSlukem /** 584e6df137Slukem * @return true if there is no "Control Value" (there is a 594e6df137Slukem * difference between no and an empty control value) 604e6df137Slukem */ 614e6df137Slukem bool hasData() const; 624e6df137Slukem 634e6df137Slukem /** 644e6df137Slukem * @return The Data of the control as a std::string-Object 652de962bdSlukem */ 662de962bdSlukem std::string getData() const; 672de962bdSlukem 682de962bdSlukem /** 692de962bdSlukem * @return "true" if the control is critical 702de962bdSlukem */ 712de962bdSlukem bool isCritical() const; 722de962bdSlukem 732de962bdSlukem /** 742de962bdSlukem * For internal use only. 752de962bdSlukem * 762de962bdSlukem * Translates the control to a LDAPControl-structure as needed by 772de962bdSlukem * the C-API 782de962bdSlukem */ 792de962bdSlukem LDAPControl* getControlStruct() const; 802de962bdSlukem static void freeLDAPControlStruct(LDAPControl *ctrl); 812de962bdSlukem 822de962bdSlukem private : 832de962bdSlukem std::string m_oid; 842de962bdSlukem std::string m_data; 852de962bdSlukem bool m_isCritical; 864e6df137Slukem bool m_noData; 872de962bdSlukem }; 882de962bdSlukem 892de962bdSlukem #endif //LDAP_CONTROL_H 90