MySQL 8.0.39
Source Code Documentation
|
Interface for the application of events, them being packets or log events. More...
#include <pipeline_interfaces.h>
Public Member Functions | |
Event_handler () | |
virtual | ~Event_handler ()=default |
virtual int | initialize ()=0 |
Initialization as defined in the handler implementation. More... | |
virtual int | terminate ()=0 |
Terminate the execution as defined in the handler implementation. More... | |
virtual int | handle_event (Pipeline_event *event, Continuation *continuation)=0 |
Handling of an event as defined in the handler implementation. More... | |
virtual int | handle_action (Pipeline_action *action)=0 |
Handling of an action as defined in the handler implementation. More... | |
void | plug_next_handler (Event_handler *next_handler) |
Plug an handler to be the next in line for execution. More... | |
void | append (Event_handler *last_handler) |
Append an handler to be the last in line for execution. More... | |
virtual bool | is_unique ()=0 |
This method identifies the handler as being unique. More... | |
virtual int | get_role ()=0 |
This method returns the handler role. More... | |
int | terminate_pipeline () |
Shutdown and delete all handlers in the pipeline. More... | |
Static Public Member Functions | |
static void | append_handler (Event_handler **pipeline, Event_handler *event_handler) |
Append an handler to a given pipeline. More... | |
static void | get_handler_by_role (Event_handler *pipeline, int role, Event_handler **event_handler) |
Returns an handler that plays the given role. More... | |
Protected Member Functions | |
int | next (Pipeline_event *event, Continuation *continuation) |
Pass the event to the next handler in line. More... | |
int | next (Pipeline_action *action) |
Pass the action to the next handler in line. More... | |
Private Attributes | |
Event_handler * | next_in_pipeline |
Interface for the application of events, them being packets or log events.
Instances of this class can be composed among them to form execution pipelines.
Handlers can also have roles that define their type of activity and can be used to identify them in a pipeline. Roles are defined by the user of this class according to his context.
|
inline |
|
virtualdefault |
|
inline |
Append an handler to be the last in line for execution.
[in] | last_handler | the last handler in line |
|
inlinestatic |
Append an handler to a given pipeline.
[in,out] | pipeline | the pipeline to append the handler |
[in] | event_handler | the event handler to append |
|
inlinestatic |
Returns an handler that plays the given role.
[in] | pipeline | the handler pipeline |
[in] | role | the role to retrieve |
[out] | event_handler | the retrieved event handler |
|
pure virtual |
This method returns the handler role.
Handlers can have different roles according to the tasks they represent. Is based on this role that certain components can extract and interact with pipeline handlers. This means that if a role is given to a singleton handler, no one else can have that role.
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
pure virtual |
Handling of an action as defined in the handler implementation.
As the handler can be included in a pipeline, somewhere in the method, the handler.next(action) method shall be invoked to allow the passing of the action to the next handler.
[in] | action | the pipeline event to be handled |
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
pure virtual |
Handling of an event as defined in the handler implementation.
As the handler can be included in a pipeline, somewhere in the method, the handler.next(event,continuation) method shall be invoked to allow the passing of the event to the next handler.
Also, if an error occurs, the continuation object shall be used to propagate such error. This class can also be used to know/report when the transaction to whom the event belongs was discarded.
[in] | event | the pipeline event to be handled |
[in,out] | continuation | termination notification object. |
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
pure virtual |
Initialization as defined in the handler implementation.
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
pure virtual |
This method identifies the handler as being unique.
An handler that is defined as unique is an handler that cannot be used more than once in a pipeline. Such tasks as certification and event application can only be done once. Unique handlers are also the only that, by being one of a kind, can be extracted during the pipeline life allowing dynamic changes to them.
true | is a unique handler |
false | is a repeatable handler |
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
inlineprotected |
Pass the action to the next handler in line.
If none exists, this method will return
[in] | action | the pipeline action to be handled |
|
inlineprotected |
Pass the event to the next handler in line.
If none exists, this method will signal the continuation method and exit.
[in] | event | the pipeline event to be handled |
[in,out] | continuation | termination notification object. |
|
inline |
Plug an handler to be the next in line for execution.
[in] | next_handler | the next handler in line |
|
pure virtual |
Terminate the execution as defined in the handler implementation.
Implemented in Applier_handler, Certification_handler, and Event_cataloger.
|
inline |
Shutdown and delete all handlers in the pipeline.
0 | OK |
!=0 | Error |
|
private |