def dispatch(self, requestProtocol, requestPayload):
<EOL>method = requestPayload["<STR_LIT>"].split("<STR_LIT:.>")<EOL>if len(method) != <NUM_LIT:3>:<EOL><INDENT>requestProtocol.failRequestWithErrors(["<STR_LIT>"])<EOL>return<EOL><DEDENT>methodModule = method[<NUM_LIT:0>]<EOL>methodController = method[<NUM_LIT:1>]<EOL>methodAction = method[<NUM_LIT:2>]<EOL>if not self.application.isModuleLoaded(methodModule):<EOL><INDENT>requestProtocol.failRequestWithErrors(["<STR_LIT>"])<EOL>return<EOL><DEDENT>controllerPath = os.path.join(<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>methodModule,<EOL>"<STR_LIT>",<EOL>"<STR_LIT>".format(methodController)<EOL>)<EOL>if not os.path.isfile(controllerPath):<EOL><INDENT>requestProtocol.failRequestWithErrors(["<STR_LIT>"])<EOL>return<EOL><DEDENT>controllerSpec = importlib.util.spec_from_file_location(<EOL>methodController,<EOL>controllerPath<EOL>)<EOL>controller = importlib.util.module_from_spec(controllerSpec)<EOL>controllerSpec.loader.exec_module(controller)<EOL>controllerInstance = controller.Controller(<EOL>self.application,<EOL>requestProtocol,<EOL>requestPayload["<STR_LIT:version>"],<EOL>requestPayload["<STR_LIT>"]<EOL>)<EOL>action = getattr(<EOL>controllerInstance,<EOL>"<STR_LIT>".format(methodAction),<EOL>None<EOL>)<EOL>if not callable(action):<EOL><INDENT>requestProtocol.failRequestWithErrors(["<STR_LIT>"])<EOL>return<EOL><DEDENT>requestProtocol.requestPassedDispatcherValidation()<EOL>preDispatchAction = getattr(controllerInstance, "<STR_LIT>")<EOL>postDispatchAction = getattr(controllerInstance, "<STR_LIT>")<EOL>preDispatchAction()<EOL>action()<EOL>postDispatchAction()<EOL>
Dispatch the request to the appropriate handler.

:param requestProtocol: <AbstractApplicationInterfaceProtocol> request protocol
:param requestPayload: <dict> request
    :param version: <float> version
    :param method: <str> method name
    :param parameters: <dict> data parameters
:return: <void>