- class GroupActionHandler extends AnyRef
Handles group action messages.
Handles group action messages. Those messages are of type GroupMsg with a JSON object that contains an 'action' field. It was received by an GroupDispatcher and comes from a client via a GroupChannelActor.
- class GroupActionMsgBuilder extends AnyRef
Utility class that builds GroupMsgs.
Utility class that builds GroupMsgs. So it mostly handles the JSON creation.
- class GroupAdministration extends AnyRef
Administrates groups, e.g.
Administrates groups, e.g. joining or leaving. A group's state is stored in a GroupResult. Members of a group are identified by the StudyResult's ID (which represents a particular study run).
All group members exchange messages via WebSockets that are called group channels in JATOS. The message dispatching system is implemented with Akka.
- class GroupChannelActor extends Actor
- class GroupDispatcher extends Actor
- class GroupDispatcherRegistry extends Actor with InjectedActorSupport
- object GroupChannelActor
GroupChannelActor is an Akka Actor that represents the group channel's WebSocket.
GroupChannelActor is an Akka Actor that represents the group channel's WebSocket. A group channel is a WebSocket connecting a client who's running a study with the JATOS server.
A GroupChannelActor is only be opened after a study run (identified by a StudyResult) joined a group, which is done in the GroupAdministration. Group data (e.g. who's member) are persisted in a GroupResult entity. A GroupChannelActor is closed after the StudyResult left the GroupResult.
A GroupChannelActor belongs to a GroupDispatcher. A GroupChannelActor is created by the GroupChannel service and registers itself by sending a RegisterChannel message to its GroupDispatcher. It closes down after receiving a PoisonChannel message or if the WebSocket is closed. While closing down it unregisters from the GroupDispatcher by sending a UnregisterChannel message. A GroupChannelActor can, if it's told to, reassign itself to a different GroupDispatcher.
- object GroupDispatcher
A GroupDispatcher is an Akka Actor responsible for distributing messages (GroupMsg) within a group.
A GroupDispatcher is an Akka Actor responsible for distributing messages (GroupMsg) within a group. Thus it is the central class handling a group.
A GroupDispatcher only handles the GroupChannels but is not responsible for the actual joining of a GroupResult. This is done prior to creating a GroupDispatcher by the GroupAdministration which persists all data in a GroupResult. Who's member in a group is ultimately defined by the GroupResult.
A GroupChannelActor is only opened after a StudyResult joined a GroupResult, which is done in the GroupAdministration. Group data (e.g. who's member) are persisted in a GroupResult entity. A GroupChannelActor is closed after the StudyResult left the group.
A GroupChannelActor registers in a GroupDispatcher by sending the RegisterChannel message and unregisters by sending a UnregisterChannel message.
A new GroupDispatcher is created by the GroupDispatcherRegistry. If a GroupDispatcher has no more members it closes itself.
A GroupDispatcher handles all messages specified in the GroupDispatcherProtocol. There are fundamentally three different message types: 1) group session patches, 2) broadcast messages, and 3) direct messages for a particular group member.
The group session patches are JSON Patches after RFC 6902 and used to describe changes in the group session data. The session data are stored in the GroupResult.
- object GroupDispatcherRegistry
A GroupDispatcherRegistry is an Akka Actor keeps track of all GroupDispatchers Actors.