Class RequestHandler

  • All Implemented Interfaces:
    com.lmax.disruptor.EventHandler<RequestEvent>

    public class RequestHandler
    extends Object
    implements com.lmax.disruptor.EventHandler<RequestEvent>
    The RequestHandler is responsible for adding and removing Nodes as well as dispatching Service management operations. Its main purpose though is to receive incoming CouchbaseRequests and dispatch them to the appropriate Nodes.
    Since:
    1.0
    Author:
    Michael Nitschinger
    • Method Detail

      • onEvent

        public void onEvent​(RequestEvent event,
                            long sequence,
                            boolean endOfBatch)
                     throws Exception
        Specified by:
        onEvent in interface com.lmax.disruptor.EventHandler<RequestEvent>
        Throws:
        Exception
      • addService

        public rx.Observable<Service> addService​(AddServiceRequest request)
        Add the service to the node.
        Parameters:
        request - the request which contains infos about the service and node to add.
        Returns:
        an observable which contains the newly created service.
      • removeService

        public rx.Observable<Service> removeService​(RemoveServiceRequest request)
        Remove a service from a node.
        Parameters:
        request - the request which contains infos about the service and node to remove.
        Returns:
        an observable which contains the removed service.
      • nodeBy

        public Node nodeBy​(String hostname)
        Returns the node by its hostname.
        Parameters:
        hostname - the hostname of the node.
        Returns:
        the node or null if no hostname for that ip address.
      • locator

        protected Locator locator​(CouchbaseRequest request)
        Helper method to detect the correct locator for the given request type.
        Returns:
        the locator for the given request type.
      • diagnostics

        public rx.Observable<DiagnosticsResponse> diagnostics​(String id)
        Performs the logistics of collecting and assembling the individual health check information on a per-service basis.
        Returns:
        an observable with the response once ready.
      • reconfigure

        public rx.Observable<ClusterConfig> reconfigure​(ClusterConfig config)
        Helper method which grabs the current configuration and checks if the node setup is out of sync. This method is always called when a new configuration arrives and it will try to sync the actual node and service setup with the one proposed by the configuration.