xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPConstraints.h (revision 6dffe8d42bd46273f674d7ab834e7be9b1af990e)
1 // $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPConstraints.h,v 1.4.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_CONSTRAINTS_H
9 #define LDAP_CONSTRAINTS_H
10 #include <list>
11 
12 #include <LDAPControl.h>
13 #include <LDAPControlSet.h>
14 #include <LDAPRebind.h>
15 
16 //TODO!!
17 // * implement the Alias-Handling Option (OPT_DEREF)
18 // * the Restart-Option ???
19 // * default Server(s)
20 
21 //* Class for representating the various protocol options
22 /** This class represents some options that can be set for a LDAPConnection
23  *  operation. Namely these are time and size limits. Options for referral
24  *  chasing and a default set of client of server controls to be used with
25  *  every request
26  */
27 class LDAPConstraints{
28 
29 	public :
30         static const int DEREF_NEVER = 0x00;
31         static const int DEREF_SEARCHING = 0x01;
32         static const int DEREF_FINDING = 0x02;
33         static const int DEREF_ALWAYS = 0x04;
34 
35 		//* Constructs a LDAPConstraints object with default values
36 		LDAPConstraints();
37 
38 		//* Copy constructor
39 		LDAPConstraints(const LDAPConstraints& c);
40 
41         ~LDAPConstraints();
42 
43 		void setAliasDeref(int deref);
44         void setMaxTime(int t);
45 		void setSizeLimit(int s);
46 		void setReferralChase(bool rc);
47         void setHopLimit(int hop);
48         void setReferralRebind(const LDAPRebind* rebind);
49         void setServerControls(const LDAPControlSet* ctrls);
50         void setClientControls(const LDAPControlSet* ctrls);
51 
52 		int getAliasDeref() const;
53         int getMaxTime() const ;
54 		int getSizeLimit() const;
55         const LDAPRebind* getReferralRebind() const;
56         const LDAPControlSet* getServerControls() const;
57         const LDAPControlSet* getClientControls() const;
58 
59         //*for internal use only
60         LDAPControl** getSrvCtrlsArray() const;
61 
62         //*for internal use only
63         LDAPControl** getClCtrlsArray() const;
64 
65         //*for internal use only
66         timeval* getTimeoutStruct() const;
67 		bool getReferralChase() const ;
68         int getHopLimit() const;
69 
70 	private :
71         int m_aliasDeref;
72 
73         //* max. time the server may spend for a search request
74 		int m_maxTime;
75 
76 		//* max number of entries to return from a search request
77 		int m_maxSize;
78 
79 		//* Flag for enabling automatic referral/reference chasing
80 		bool m_referralChase;
81 
82         //* HopLimit for referral chasing
83         int m_HopLimit;
84 
85         //* Alias dereferencing option
86         int m_deref;
87 
88         //* Object used to do bind for Referral chasing
89         const LDAPRebind* m_refRebind;
90 
91 		//* List of Client Controls that should be used for each request
92 		LDAPControlSet* m_clientControls;
93 
94 		//* List of Server Controls that should be used for each request
95 		LDAPControlSet* m_serverControls;
96 
97 };
98 #endif //LDAP_CONSTRAINTS_H
99