Class RateLimiterRequestHandler

    • Constructor Detail

      • RateLimiterRequestHandler

        public RateLimiterRequestHandler​(@NotNull
                                         LDAPListenerRequestHandler downstreamRequestHandler,
                                         int maxPerSecond)
        Creates a new rate limiter request handler that will limit the rate of operations to the specified maximum number per second. The rate limiting will be enforced for all types of operations except abandon and unbind. No rate limiting will be enforced for abandon or unbind operations.
        Parameters:
        downstreamRequestHandler - The downstream request handler that will be used to actually process the requests after any appropriate rate limiting has been performed. It must not be null.
        maxPerSecond - The maximum number of operations that will be allowed per second, across all types of operations except abandon and unbind. It must be greater than zero.
      • RateLimiterRequestHandler

        public RateLimiterRequestHandler​(@NotNull
                                         LDAPListenerRequestHandler downstreamRequestHandler,
                                         @Nullable
                                         FixedRateBarrier rateLimiter)
        Creates a new rate limiter request handler that will use the provided FixedRateBarrier to perform rate limiting for all types of operations except abandon and unbind. No rate limiting will be enforced for abandon or unbind operations.
        Parameters:
        downstreamRequestHandler - The downstream request handler that will be used to actually process the requests after any appropriate rate limiting has been performed. It must not be null.
        rateLimiter - The fixed-rate barrier that will be used to achieve the rate limiting for all types of operations except abandon and unbind. It may be null if no rate limiting should be performed for any operation types.
      • RateLimiterRequestHandler

        public RateLimiterRequestHandler​(@Nullable
                                         LDAPListenerRequestHandler downstreamRequestHandler,
                                         @Nullable
                                         FixedRateBarrier abandonRateLimiter,
                                         @Nullable
                                         FixedRateBarrier addRateLimiter,
                                         @Nullable
                                         FixedRateBarrier bindRateLimiter,
                                         @Nullable
                                         FixedRateBarrier compareRateLimiter,
                                         @Nullable
                                         FixedRateBarrier deleteRateLimiter,
                                         @Nullable
                                         FixedRateBarrier extendedRateLimiter,
                                         @Nullable
                                         FixedRateBarrier modifyRateLimiter,
                                         @Nullable
                                         FixedRateBarrier modifyDNRateLimiter,
                                         @Nullable
                                         FixedRateBarrier searchRateLimiter)
        Creates a new rate limiter request handler that can use the provided FixedRateBarrier instances to perform rate limiting for different types of operations. The same barrier instance can be provided for multiple operation types if performance for those operations should be limited in aggregate rather than individually (e.g., if you don't want the total combined rate of search and modify operations to exceed a given threshold, then you could provide the same barrier instance for the modifyRateLimiter and searchRateLimiter arguments).
        Parameters:
        downstreamRequestHandler - The downstream request handler that will be used to actually process the requests after any appropriate rate limiting has been performed. It must not be null.
        abandonRateLimiter - The fixed-rate barrier to use when processing abandon operations. It may be null if no rate limiting should be enforced for abandon operations.
        addRateLimiter - The fixed-rate barrier to use when processing add operations. It may be null if no rate limiting should be enforced for add operations.
        bindRateLimiter - The fixed-rate barrier to use when processing bind operations. It may be null if no rate limiting should be enforced for bind operations.
        compareRateLimiter - The fixed-rate barrier to use when processing compare operations. It may be null if no rate limiting should be enforced for compare operations.
        deleteRateLimiter - The fixed-rate barrier to use when processing delete operations. It may be null if no rate limiting should be enforced for delete operations.
        extendedRateLimiter - The fixed-rate barrier to use when processing extended operations. It may be null if no rate limiting should be enforced for extended operations.
        modifyRateLimiter - The fixed-rate barrier to use when processing modify operations. It may be null if no rate limiting should be enforced for modify operations.
        modifyDNRateLimiter - The fixed-rate barrier to use when processing modify DN operations. It may be null if no rate limiting should be enforced for modify DN operations.
        searchRateLimiter - The fixed-rate barrier to use when processing search operations. It may be null if no rate limiting should be enforced for search operations.
    • Method Detail

      • processAbandonRequest

        public void processAbandonRequest​(int messageID,
                                          @NotNull
                                          AbandonRequestProtocolOp request,
                                          @NotNull
                                          java.util.List<Control> controls)
        Performs any processing necessary for the provided abandon request.
        Overrides:
        processAbandonRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the abandon request.
        request - The abandon request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
      • processAddRequest

        @NotNull
        public LDAPMessage processAddRequest​(int messageID,
                                             @NotNull
                                             AddRequestProtocolOp request,
                                             @NotNull
                                             java.util.List<Control> controls)
        Performs any processing necessary for the provided add request.
        Specified by:
        processAddRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the add request.
        request - The add request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be an AddResponseProtocolOp.
      • processBindRequest

        @NotNull
        public LDAPMessage processBindRequest​(int messageID,
                                              @NotNull
                                              BindRequestProtocolOp request,
                                              @NotNull
                                              java.util.List<Control> controls)
        Performs any processing necessary for the provided bind request.
        Specified by:
        processBindRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the bind request.
        request - The bind request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be a BindResponseProtocolOp.
      • processCompareRequest

        @NotNull
        public LDAPMessage processCompareRequest​(int messageID,
                                                 @NotNull
                                                 CompareRequestProtocolOp request,
                                                 @NotNull
                                                 java.util.List<Control> controls)
        Performs any processing necessary for the provided compare request.
        Specified by:
        processCompareRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the compare request.
        request - The compare request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be a CompareResponseProtocolOp.
      • processDeleteRequest

        @NotNull
        public LDAPMessage processDeleteRequest​(int messageID,
                                                @NotNull
                                                DeleteRequestProtocolOp request,
                                                @NotNull
                                                java.util.List<Control> controls)
        Performs any processing necessary for the provided delete request.
        Specified by:
        processDeleteRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the delete request.
        request - The delete request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be a DeleteResponseProtocolOp.
      • processExtendedRequest

        @NotNull
        public LDAPMessage processExtendedRequest​(int messageID,
                                                  @NotNull
                                                  ExtendedRequestProtocolOp request,
                                                  @NotNull
                                                  java.util.List<Control> controls)
        Performs any processing necessary for the provided extended request.
        Specified by:
        processExtendedRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the extended request.
        request - The extended request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be an ExtendedResponseProtocolOp.
      • processModifyRequest

        @NotNull
        public LDAPMessage processModifyRequest​(int messageID,
                                                @NotNull
                                                ModifyRequestProtocolOp request,
                                                @NotNull
                                                java.util.List<Control> controls)
        Performs any processing necessary for the provided modify request.
        Specified by:
        processModifyRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the modify request.
        request - The modify request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be an ModifyResponseProtocolOp.
      • processModifyDNRequest

        @NotNull
        public LDAPMessage processModifyDNRequest​(int messageID,
                                                  @NotNull
                                                  ModifyDNRequestProtocolOp request,
                                                  @NotNull
                                                  java.util.List<Control> controls)
        Performs any processing necessary for the provided modify DN request.
        Specified by:
        processModifyDNRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the modify DN request.
        request - The modify DN request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be an ModifyDNResponseProtocolOp.
      • processSearchRequest

        @NotNull
        public LDAPMessage processSearchRequest​(int messageID,
                                                @NotNull
                                                SearchRequestProtocolOp request,
                                                @NotNull
                                                java.util.List<Control> controls)
        Performs any processing necessary for the provided search request.
        Specified by:
        processSearchRequest in class LDAPListenerRequestHandler
        Parameters:
        messageID - The message ID of the LDAP message containing the search request.
        request - The search request that was included in the LDAP message that was received.
        controls - The set of controls included in the LDAP message. It may be empty if there were no controls, but will not be null.
        Returns:
        The LDAPMessage containing the response to send to the client. The protocol op in the LDAPMessage must be an SearchResultDoneProtocolOp.