001/*
002 * The contents of this file are subject to the terms of the Common Development and
003 * Distribution License (the License). You may not use this file except in compliance with the
004 * License.
005 *
006 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
007 * specific language governing permission and limitations under the License.
008 *
009 * When distributing Covered Software, include this CDDL Header Notice in each file and include
010 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
011 * Header, with the fields enclosed by brackets [] replaced by your own identifying
012 * information: "Portions Copyright [year] [name of copyright owner]".
013 *
014 * Copyright 2008 Sun Microsystems, Inc.
015 */
016package org.forgerock.opendj.server.config.client;
017
018
019
020import java.net.InetAddress;
021import java.util.Collection;
022import java.util.SortedSet;
023import org.forgerock.opendj.config.ManagedObjectDefinition;
024import org.forgerock.opendj.config.PropertyException;
025import org.forgerock.opendj.server.config.meta.LDAPConnectionHandlerCfgDefn.SSLClientAuthPolicy;
026import org.forgerock.opendj.server.config.server.LDAPConnectionHandlerCfg;
027
028
029
030/**
031 * A client-side interface for reading and modifying LDAP Connection
032 * Handler settings.
033 * <p>
034 * The LDAP Connection Handler is used to interact with clients using
035 * LDAP.
036 */
037public interface LDAPConnectionHandlerCfgClient extends ConnectionHandlerCfgClient {
038
039  /**
040   * Get the configuration definition associated with this LDAP Connection Handler.
041   *
042   * @return Returns the configuration definition associated with this LDAP Connection Handler.
043   */
044  ManagedObjectDefinition<? extends LDAPConnectionHandlerCfgClient, ? extends LDAPConnectionHandlerCfg> definition();
045
046
047
048  /**
049   * Gets the "accept-backlog" property.
050   * <p>
051   * Specifies the maximum number of pending connection attempts that
052   * are allowed to queue up in the accept backlog before the server
053   * starts rejecting new connection attempts.
054   * <p>
055   * This is primarily an issue for cases in which a large number of
056   * connections are established to the server in a very short period
057   * of time (for example, a benchmark utility that creates a large
058   * number of client threads that each have their own connection to
059   * the server) and the connection handler is unable to keep up with
060   * the rate at which the new connections are established.
061   *
062   * @return Returns the value of the "accept-backlog" property.
063   */
064  int getAcceptBacklog();
065
066
067
068  /**
069   * Sets the "accept-backlog" property.
070   * <p>
071   * Specifies the maximum number of pending connection attempts that
072   * are allowed to queue up in the accept backlog before the server
073   * starts rejecting new connection attempts.
074   * <p>
075   * This is primarily an issue for cases in which a large number of
076   * connections are established to the server in a very short period
077   * of time (for example, a benchmark utility that creates a large
078   * number of client threads that each have their own connection to
079   * the server) and the connection handler is unable to keep up with
080   * the rate at which the new connections are established.
081   *
082   * @param value The value of the "accept-backlog" property.
083   * @throws PropertyException
084   *           If the new value is invalid.
085   */
086  void setAcceptBacklog(Integer value) throws PropertyException;
087
088
089
090  /**
091   * Gets the "allow-ldap-v2" property.
092   * <p>
093   * Indicates whether connections from LDAPv2 clients are allowed.
094   * <p>
095   * If LDAPv2 clients are allowed, then only a minimal degree of
096   * special support are provided for them to ensure that
097   * LDAPv3-specific protocol elements (for example, Configuration
098   * Guide 25 controls, extended response messages, intermediate
099   * response messages, referrals) are not sent to an LDAPv2 client.
100   *
101   * @return Returns the value of the "allow-ldap-v2" property.
102   */
103  boolean isAllowLDAPV2();
104
105
106
107  /**
108   * Sets the "allow-ldap-v2" property.
109   * <p>
110   * Indicates whether connections from LDAPv2 clients are allowed.
111   * <p>
112   * If LDAPv2 clients are allowed, then only a minimal degree of
113   * special support are provided for them to ensure that
114   * LDAPv3-specific protocol elements (for example, Configuration
115   * Guide 25 controls, extended response messages, intermediate
116   * response messages, referrals) are not sent to an LDAPv2 client.
117   *
118   * @param value The value of the "allow-ldap-v2" property.
119   * @throws PropertyException
120   *           If the new value is invalid.
121   */
122  void setAllowLDAPV2(Boolean value) throws PropertyException;
123
124
125
126  /**
127   * Gets the "allow-start-tls" property.
128   * <p>
129   * Indicates whether clients are allowed to use StartTLS.
130   * <p>
131   * If enabled, the LDAP Connection Handler allows clients to use the
132   * StartTLS extended operation to initiate secure communication over
133   * an otherwise insecure channel. Note that this is only allowed if
134   * the LDAP Connection Handler is not configured to use SSL, and if
135   * the server is configured with a valid key manager provider and a
136   * valid trust manager provider.
137   *
138   * @return Returns the value of the "allow-start-tls" property.
139   */
140  boolean isAllowStartTLS();
141
142
143
144  /**
145   * Sets the "allow-start-tls" property.
146   * <p>
147   * Indicates whether clients are allowed to use StartTLS.
148   * <p>
149   * If enabled, the LDAP Connection Handler allows clients to use the
150   * StartTLS extended operation to initiate secure communication over
151   * an otherwise insecure channel. Note that this is only allowed if
152   * the LDAP Connection Handler is not configured to use SSL, and if
153   * the server is configured with a valid key manager provider and a
154   * valid trust manager provider.
155   *
156   * @param value The value of the "allow-start-tls" property.
157   * @throws PropertyException
158   *           If the new value is invalid.
159   */
160  void setAllowStartTLS(Boolean value) throws PropertyException;
161
162
163
164  /**
165   * Gets the "allow-tcp-reuse-address" property.
166   * <p>
167   * Indicates whether the LDAP Connection Handler should reuse socket
168   * descriptors.
169   * <p>
170   * If enabled, the SO_REUSEADDR socket option is used on the server
171   * listen socket to potentially allow the reuse of socket descriptors
172   * for clients in a TIME_WAIT state. This may help the server avoid
173   * temporarily running out of socket descriptors in cases in which a
174   * very large number of short-lived connections have been established
175   * from the same client system.
176   *
177   * @return Returns the value of the "allow-tcp-reuse-address" property.
178   */
179  boolean isAllowTCPReuseAddress();
180
181
182
183  /**
184   * Sets the "allow-tcp-reuse-address" property.
185   * <p>
186   * Indicates whether the LDAP Connection Handler should reuse socket
187   * descriptors.
188   * <p>
189   * If enabled, the SO_REUSEADDR socket option is used on the server
190   * listen socket to potentially allow the reuse of socket descriptors
191   * for clients in a TIME_WAIT state. This may help the server avoid
192   * temporarily running out of socket descriptors in cases in which a
193   * very large number of short-lived connections have been established
194   * from the same client system.
195   *
196   * @param value The value of the "allow-tcp-reuse-address" property.
197   * @throws PropertyException
198   *           If the new value is invalid.
199   */
200  void setAllowTCPReuseAddress(Boolean value) throws PropertyException;
201
202
203
204  /**
205   * Gets the "buffer-size" property.
206   * <p>
207   * Specifies the size in bytes of the LDAP response message write
208   * buffer.
209   * <p>
210   * This property specifies write buffer size allocated by the server
211   * for each client connection and used to buffer LDAP response
212   * messages data when writing.
213   *
214   * @return Returns the value of the "buffer-size" property.
215   */
216  long getBufferSize();
217
218
219
220  /**
221   * Sets the "buffer-size" property.
222   * <p>
223   * Specifies the size in bytes of the LDAP response message write
224   * buffer.
225   * <p>
226   * This property specifies write buffer size allocated by the server
227   * for each client connection and used to buffer LDAP response
228   * messages data when writing.
229   *
230   * @param value The value of the "buffer-size" property.
231   * @throws PropertyException
232   *           If the new value is invalid.
233   */
234  void setBufferSize(Long value) throws PropertyException;
235
236
237
238  /**
239   * Gets the "java-class" property.
240   * <p>
241   * Specifies the fully-qualified name of the Java class that
242   * provides the LDAP Connection Handler implementation.
243   *
244   * @return Returns the value of the "java-class" property.
245   */
246  String getJavaClass();
247
248
249
250  /**
251   * Sets the "java-class" property.
252   * <p>
253   * Specifies the fully-qualified name of the Java class that
254   * provides the LDAP Connection Handler implementation.
255   *
256   * @param value The value of the "java-class" property.
257   * @throws PropertyException
258   *           If the new value is invalid.
259   */
260  void setJavaClass(String value) throws PropertyException;
261
262
263
264  /**
265   * Gets the "keep-stats" property.
266   * <p>
267   * Indicates whether the LDAP Connection Handler should keep
268   * statistics.
269   * <p>
270   * If enabled, the LDAP Connection Handler maintains statistics
271   * about the number and types of operations requested over LDAP and
272   * the amount of data sent and received.
273   *
274   * @return Returns the value of the "keep-stats" property.
275   */
276  boolean isKeepStats();
277
278
279
280  /**
281   * Sets the "keep-stats" property.
282   * <p>
283   * Indicates whether the LDAP Connection Handler should keep
284   * statistics.
285   * <p>
286   * If enabled, the LDAP Connection Handler maintains statistics
287   * about the number and types of operations requested over LDAP and
288   * the amount of data sent and received.
289   *
290   * @param value The value of the "keep-stats" property.
291   * @throws PropertyException
292   *           If the new value is invalid.
293   */
294  void setKeepStats(Boolean value) throws PropertyException;
295
296
297
298  /**
299   * Gets the "key-manager-provider" property.
300   * <p>
301   * Specifies the name of the key manager that should be used with
302   * this LDAP Connection Handler .
303   *
304   * @return Returns the value of the "key-manager-provider" property.
305   */
306  String getKeyManagerProvider();
307
308
309
310  /**
311   * Sets the "key-manager-provider" property.
312   * <p>
313   * Specifies the name of the key manager that should be used with
314   * this LDAP Connection Handler .
315   *
316   * @param value The value of the "key-manager-provider" property.
317   * @throws PropertyException
318   *           If the new value is invalid.
319   */
320  void setKeyManagerProvider(String value) throws PropertyException;
321
322
323
324  /**
325   * Gets the "listen-address" property.
326   * <p>
327   * Specifies the address or set of addresses on which this LDAP
328   * Connection Handler should listen for connections from LDAP
329   * clients.
330   * <p>
331   * Multiple addresses may be provided as separate values for this
332   * attribute. If no values are provided, then the LDAP Connection
333   * Handler listens on all interfaces.
334   *
335   * @return Returns the values of the "listen-address" property.
336   */
337  SortedSet<InetAddress> getListenAddress();
338
339
340
341  /**
342   * Sets the "listen-address" property.
343   * <p>
344   * Specifies the address or set of addresses on which this LDAP
345   * Connection Handler should listen for connections from LDAP
346   * clients.
347   * <p>
348   * Multiple addresses may be provided as separate values for this
349   * attribute. If no values are provided, then the LDAP Connection
350   * Handler listens on all interfaces.
351   *
352   * @param values The values of the "listen-address" property.
353   * @throws PropertyException
354   *           If one or more of the new values are invalid.
355   */
356  void setListenAddress(Collection<InetAddress> values) throws PropertyException;
357
358
359
360  /**
361   * Gets the "listen-port" property.
362   * <p>
363   * Specifies the port number on which the LDAP Connection Handler
364   * will listen for connections from clients.
365   * <p>
366   * Only a single port number may be provided.
367   *
368   * @return Returns the value of the "listen-port" property.
369   */
370  Integer getListenPort();
371
372
373
374  /**
375   * Sets the "listen-port" property.
376   * <p>
377   * Specifies the port number on which the LDAP Connection Handler
378   * will listen for connections from clients.
379   * <p>
380   * Only a single port number may be provided.
381   *
382   * @param value The value of the "listen-port" property.
383   * @throws PropertyException
384   *           If the new value is invalid.
385   */
386  void setListenPort(int value) throws PropertyException;
387
388
389
390  /**
391   * Gets the "max-blocked-write-time-limit" property.
392   * <p>
393   * Specifies the maximum length of time that attempts to write data
394   * to LDAP clients should be allowed to block.
395   * <p>
396   * If an attempt to write data to a client takes longer than this
397   * length of time, then the client connection is terminated.
398   *
399   * @return Returns the value of the "max-blocked-write-time-limit" property.
400   */
401  long getMaxBlockedWriteTimeLimit();
402
403
404
405  /**
406   * Sets the "max-blocked-write-time-limit" property.
407   * <p>
408   * Specifies the maximum length of time that attempts to write data
409   * to LDAP clients should be allowed to block.
410   * <p>
411   * If an attempt to write data to a client takes longer than this
412   * length of time, then the client connection is terminated.
413   *
414   * @param value The value of the "max-blocked-write-time-limit" property.
415   * @throws PropertyException
416   *           If the new value is invalid.
417   */
418  void setMaxBlockedWriteTimeLimit(Long value) throws PropertyException;
419
420
421
422  /**
423   * Gets the "max-request-size" property.
424   * <p>
425   * Specifies the size in bytes of the largest LDAP request message
426   * that will be allowed by this LDAP Connection handler.
427   * <p>
428   * This property is analogous to the maxBERSize configuration
429   * attribute of the Sun Java System Directory Server. This can help
430   * prevent denial-of-service attacks by clients that indicate they
431   * send extremely large requests to the server causing it to attempt
432   * to allocate large amounts of memory.
433   *
434   * @return Returns the value of the "max-request-size" property.
435   */
436  long getMaxRequestSize();
437
438
439
440  /**
441   * Sets the "max-request-size" property.
442   * <p>
443   * Specifies the size in bytes of the largest LDAP request message
444   * that will be allowed by this LDAP Connection handler.
445   * <p>
446   * This property is analogous to the maxBERSize configuration
447   * attribute of the Sun Java System Directory Server. This can help
448   * prevent denial-of-service attacks by clients that indicate they
449   * send extremely large requests to the server causing it to attempt
450   * to allocate large amounts of memory.
451   *
452   * @param value The value of the "max-request-size" property.
453   * @throws PropertyException
454   *           If the new value is invalid.
455   */
456  void setMaxRequestSize(Long value) throws PropertyException;
457
458
459
460  /**
461   * Gets the "num-request-handlers" property.
462   * <p>
463   * Specifies the number of request handlers that are used to read
464   * requests from clients.
465   * <p>
466   * The LDAP Connection Handler uses one thread to accept new
467   * connections from clients, but uses one or more additional threads
468   * to read requests from existing client connections. This ensures
469   * that new requests are read efficiently and that the connection
470   * handler itself does not become a bottleneck when the server is
471   * under heavy load from many clients at the same time.
472   *
473   * @return Returns the value of the "num-request-handlers" property.
474   */
475  Integer getNumRequestHandlers();
476
477
478
479  /**
480   * Sets the "num-request-handlers" property.
481   * <p>
482   * Specifies the number of request handlers that are used to read
483   * requests from clients.
484   * <p>
485   * The LDAP Connection Handler uses one thread to accept new
486   * connections from clients, but uses one or more additional threads
487   * to read requests from existing client connections. This ensures
488   * that new requests are read efficiently and that the connection
489   * handler itself does not become a bottleneck when the server is
490   * under heavy load from many clients at the same time.
491   *
492   * @param value The value of the "num-request-handlers" property.
493   * @throws PropertyException
494   *           If the new value is invalid.
495   */
496  void setNumRequestHandlers(Integer value) throws PropertyException;
497
498
499
500  /**
501   * Gets the "send-rejection-notice" property.
502   * <p>
503   * Indicates whether the LDAP Connection Handler should send a
504   * notice of disconnection extended response message to the client if
505   * a new connection is rejected for some reason.
506   * <p>
507   * The extended response message may provide an explanation
508   * indicating the reason that the connection was rejected.
509   *
510   * @return Returns the value of the "send-rejection-notice" property.
511   */
512  boolean isSendRejectionNotice();
513
514
515
516  /**
517   * Sets the "send-rejection-notice" property.
518   * <p>
519   * Indicates whether the LDAP Connection Handler should send a
520   * notice of disconnection extended response message to the client if
521   * a new connection is rejected for some reason.
522   * <p>
523   * The extended response message may provide an explanation
524   * indicating the reason that the connection was rejected.
525   *
526   * @param value The value of the "send-rejection-notice" property.
527   * @throws PropertyException
528   *           If the new value is invalid.
529   */
530  void setSendRejectionNotice(Boolean value) throws PropertyException;
531
532
533
534  /**
535   * Gets the "ssl-cert-nickname" property.
536   * <p>
537   * Specifies the nicknames (also called the aliases) of the keys or
538   * key pairs that the LDAP Connection Handler should use when
539   * performing SSL communication. The property can be used multiple
540   * times (referencing different nicknames) when server certificates
541   * with different public key algorithms are used in parallel (for
542   * example, RSA, DSA, and ECC-based algorithms). When a nickname
543   * refers to an asymmetric (public/private) key pair, the nickname
544   * for the public key certificate and associated private key entry
545   * must match exactly. A single nickname is used to retrieve both the
546   * public key and the private key.
547   * <p>
548   * This is only applicable when the LDAP Connection Handler is
549   * configured to use SSL.
550   *
551   * @return Returns the values of the "ssl-cert-nickname" property.
552   */
553  SortedSet<String> getSSLCertNickname();
554
555
556
557  /**
558   * Sets the "ssl-cert-nickname" property.
559   * <p>
560   * Specifies the nicknames (also called the aliases) of the keys or
561   * key pairs that the LDAP Connection Handler should use when
562   * performing SSL communication. The property can be used multiple
563   * times (referencing different nicknames) when server certificates
564   * with different public key algorithms are used in parallel (for
565   * example, RSA, DSA, and ECC-based algorithms). When a nickname
566   * refers to an asymmetric (public/private) key pair, the nickname
567   * for the public key certificate and associated private key entry
568   * must match exactly. A single nickname is used to retrieve both the
569   * public key and the private key.
570   * <p>
571   * This is only applicable when the LDAP Connection Handler is
572   * configured to use SSL.
573   *
574   * @param values The values of the "ssl-cert-nickname" property.
575   * @throws PropertyException
576   *           If one or more of the new values are invalid.
577   */
578  void setSSLCertNickname(Collection<String> values) throws PropertyException;
579
580
581
582  /**
583   * Gets the "ssl-cipher-suite" property.
584   * <p>
585   * Specifies the names of the SSL cipher suites that are allowed for
586   * use in SSL or StartTLS communication.
587   *
588   * @return Returns the values of the "ssl-cipher-suite" property.
589   */
590  SortedSet<String> getSSLCipherSuite();
591
592
593
594  /**
595   * Sets the "ssl-cipher-suite" property.
596   * <p>
597   * Specifies the names of the SSL cipher suites that are allowed for
598   * use in SSL or StartTLS communication.
599   *
600   * @param values The values of the "ssl-cipher-suite" property.
601   * @throws PropertyException
602   *           If one or more of the new values are invalid.
603   */
604  void setSSLCipherSuite(Collection<String> values) throws PropertyException;
605
606
607
608  /**
609   * Gets the "ssl-client-auth-policy" property.
610   * <p>
611   * Specifies the policy that the LDAP Connection Handler should use
612   * regarding client SSL certificates. Clients can use the SASL
613   * EXTERNAL mechanism only if the policy is set to "optional" or
614   * "required".
615   * <p>
616   * This is only applicable if clients are allowed to use SSL.
617   *
618   * @return Returns the value of the "ssl-client-auth-policy" property.
619   */
620  SSLClientAuthPolicy getSSLClientAuthPolicy();
621
622
623
624  /**
625   * Sets the "ssl-client-auth-policy" property.
626   * <p>
627   * Specifies the policy that the LDAP Connection Handler should use
628   * regarding client SSL certificates. Clients can use the SASL
629   * EXTERNAL mechanism only if the policy is set to "optional" or
630   * "required".
631   * <p>
632   * This is only applicable if clients are allowed to use SSL.
633   *
634   * @param value The value of the "ssl-client-auth-policy" property.
635   * @throws PropertyException
636   *           If the new value is invalid.
637   */
638  void setSSLClientAuthPolicy(SSLClientAuthPolicy value) throws PropertyException;
639
640
641
642  /**
643   * Gets the "ssl-protocol" property.
644   * <p>
645   * Specifies the names of the SSL protocols that are allowed for use
646   * in SSL or StartTLS communication.
647   *
648   * @return Returns the values of the "ssl-protocol" property.
649   */
650  SortedSet<String> getSSLProtocol();
651
652
653
654  /**
655   * Sets the "ssl-protocol" property.
656   * <p>
657   * Specifies the names of the SSL protocols that are allowed for use
658   * in SSL or StartTLS communication.
659   *
660   * @param values The values of the "ssl-protocol" property.
661   * @throws PropertyException
662   *           If one or more of the new values are invalid.
663   */
664  void setSSLProtocol(Collection<String> values) throws PropertyException;
665
666
667
668  /**
669   * Gets the "trust-manager-provider" property.
670   * <p>
671   * Specifies the name of the trust manager that should be used with
672   * the LDAP Connection Handler .
673   *
674   * @return Returns the value of the "trust-manager-provider" property.
675   */
676  String getTrustManagerProvider();
677
678
679
680  /**
681   * Sets the "trust-manager-provider" property.
682   * <p>
683   * Specifies the name of the trust manager that should be used with
684   * the LDAP Connection Handler .
685   *
686   * @param value The value of the "trust-manager-provider" property.
687   * @throws PropertyException
688   *           If the new value is invalid.
689   */
690  void setTrustManagerProvider(String value) throws PropertyException;
691
692
693
694  /**
695   * Gets the "use-ssl" property.
696   * <p>
697   * Indicates whether the LDAP Connection Handler should use SSL.
698   * <p>
699   * If enabled, the LDAP Connection Handler will use SSL to encrypt
700   * communication with the clients.
701   *
702   * @return Returns the value of the "use-ssl" property.
703   */
704  boolean isUseSSL();
705
706
707
708  /**
709   * Sets the "use-ssl" property.
710   * <p>
711   * Indicates whether the LDAP Connection Handler should use SSL.
712   * <p>
713   * If enabled, the LDAP Connection Handler will use SSL to encrypt
714   * communication with the clients.
715   *
716   * @param value The value of the "use-ssl" property.
717   * @throws PropertyException
718   *           If the new value is invalid.
719   */
720  void setUseSSL(Boolean value) throws PropertyException;
721
722
723
724  /**
725   * Gets the "use-tcp-keep-alive" property.
726   * <p>
727   * Indicates whether the LDAP Connection Handler should use TCP
728   * keep-alive.
729   * <p>
730   * If enabled, the SO_KEEPALIVE socket option is used to indicate
731   * that TCP keepalive messages should periodically be sent to the
732   * client to verify that the associated connection is still valid.
733   * This may also help prevent cases in which intermediate network
734   * hardware could silently drop an otherwise idle client connection,
735   * provided that the keepalive interval configured in the underlying
736   * operating system is smaller than the timeout enforced by the
737   * network hardware.
738   *
739   * @return Returns the value of the "use-tcp-keep-alive" property.
740   */
741  boolean isUseTCPKeepAlive();
742
743
744
745  /**
746   * Sets the "use-tcp-keep-alive" property.
747   * <p>
748   * Indicates whether the LDAP Connection Handler should use TCP
749   * keep-alive.
750   * <p>
751   * If enabled, the SO_KEEPALIVE socket option is used to indicate
752   * that TCP keepalive messages should periodically be sent to the
753   * client to verify that the associated connection is still valid.
754   * This may also help prevent cases in which intermediate network
755   * hardware could silently drop an otherwise idle client connection,
756   * provided that the keepalive interval configured in the underlying
757   * operating system is smaller than the timeout enforced by the
758   * network hardware.
759   *
760   * @param value The value of the "use-tcp-keep-alive" property.
761   * @throws PropertyException
762   *           If the new value is invalid.
763   */
764  void setUseTCPKeepAlive(Boolean value) throws PropertyException;
765
766
767
768  /**
769   * Gets the "use-tcp-no-delay" property.
770   * <p>
771   * Indicates whether the LDAP Connection Handler should use TCP
772   * no-delay.
773   * <p>
774   * If enabled, the TCP_NODELAY socket option is used to ensure that
775   * response messages to the client are sent immediately rather than
776   * potentially waiting to determine whether additional response
777   * messages can be sent in the same packet. In most cases, using the
778   * TCP_NODELAY socket option provides better performance and lower
779   * response times, but disabling it may help for some cases in which
780   * the server sends a large number of entries to a client in response
781   * to a search request.
782   *
783   * @return Returns the value of the "use-tcp-no-delay" property.
784   */
785  boolean isUseTCPNoDelay();
786
787
788
789  /**
790   * Sets the "use-tcp-no-delay" property.
791   * <p>
792   * Indicates whether the LDAP Connection Handler should use TCP
793   * no-delay.
794   * <p>
795   * If enabled, the TCP_NODELAY socket option is used to ensure that
796   * response messages to the client are sent immediately rather than
797   * potentially waiting to determine whether additional response
798   * messages can be sent in the same packet. In most cases, using the
799   * TCP_NODELAY socket option provides better performance and lower
800   * response times, but disabling it may help for some cases in which
801   * the server sends a large number of entries to a client in response
802   * to a search request.
803   *
804   * @param value The value of the "use-tcp-no-delay" property.
805   * @throws PropertyException
806   *           If the new value is invalid.
807   */
808  void setUseTCPNoDelay(Boolean value) throws PropertyException;
809
810}