# Shoal GMS's reference implementations of the client-side `ActionFactory` and `Action` sub-types

This package contains reference implementations of the various `Action` and `ActionFactory` sub-type interfaces. These are provided for convenience purposes. Clients are free to have their own implementations of these interfaces should there be a need for a different implementation.

A specific `ActionFactory` sub type produces a corresponding `Action` sub type. For instance, a `FailureNotificationActionFactory` produces a `FailureNotificationAction` instance. An `Action` sub type consumes a corresponding `Signal` sub type. A `Signal` sub type stands for a specific group event. For instance, the `FailureNotificationAction` consumes a `FailureNotificationSignal`. GMS generates a specific `Signal` sub type's implementation in each member process for a given group event and passes it to the corresponding `Action` instance(s) in a separate thread.