All Classes and Interfaces

Plugin that must evaluate whether a WebSocket connection shall be allowed, and then authenticate the resulting MatsSocketSession.
You are NOT supposed to implement this interface! Instances of this interface are created by methods on the AuthenticationPlugin.AuthenticationContext, which you are supposed to return from the AuthenticationPlugin.SessionAuthenticator to inform the MatsSocketServer about your verdict of the authentication attempt.
These bit-field enums (bit-field) is used by the Client to request different types of debug/meta information from Server-side, and used by the AuthenticationPlugin to tell the MatsSocketServer which types of information the specific user is allowed to request - the resulting debug/meta information provided is the intersection of the requested + allowed.
An instance of this interface shall be returned upon invocation of AuthenticationPlugin.newSessionAuthenticator().
MatsSockets forwards requests from WebSocket-connected clients to a Mats Endpoint, and must get the reply back to the client.
An implementation of CSAF relying on a shared SQL database to store the necessary information in a cluster setting.
Perform the DB-setup/migrations that ClusterStoreAndForward_SQL needs, using Flyway.
Defines the String and Binary datatypes for some databases.
If having problems accessing the underlying common data store.
Thrown if the operation resulted in a Unique Constraint situation.
Thrown from ClusterStoreAndForward.registerSessionAtThisNode(String, String, String, String, String, String) if the userId does not match the original userId that created this session.
Incoming (Client-to-Server) Send, Request and Replies (Resolve and Reject) handler.
The MatsSocket Java library, along with its several clients libraries, is a WebSocket-"extension" of the Mats library (there are currently clients for JavaScript (web and Node.js) and Dart (Dart and Flutter)).
Represents an active node-local MatsSocketSession - i.e.
The state of ActiveMatsSocketSession.
Implementation of MatsSocketServer.ActiveMatsSocketSession, which is serializable both for MatsSocket and Mats, i.e.
RuntimeException raised from methods which directly interfaces with the ClusterStoreAndForward and which cannot "hide" the situation if the data store doesn't work.
Should handle Authorization evaluation on the supplied Principal and decide whether this message should be forwarded to the Mats fabric (or directly resolved, rejected or denied).
A live representation of a MatsSocketSession.
WebSocket CloseCodes used in MatsSocket, and for what.
Representation of a MatsSocketEndpoint.
The context which the MatsSocketServer.IncomingAuthorizationAndAdapter gets to work with when handling an incoming MatsSocket message.
This is the entire "Wire transport" DTO of MatsSocket.
Extension of MatsSocketServer.MatsSocketEnvelopeDto which carries some metadata about the processing of the Envelope.
Only used for when the MatsSocketEnvelopeDto is exposed via the MatsSocket API - contains "meta-meta" about the processing of the envelope
Only used for when the MatsSocketEnvelopeDto is exposed via the MatsSocket API - contains "meta-meta" about the processing of the envelope
A MatsSocketSession, either as represented in the data store when gotten via MatsSocketServer.getMatsSocketSessions(boolean, String, String, String) (returning MatsSocketSessionDto), or an ActiveMatsSocketSession representing an active MatsSocketSession connected to this node of the MatsSocketServer instance when gotten via MatsSocketServer.getActiveMatsSocketSessions() (returning ActiveMatsSocketSessionDto), or a LiveMatsSocketSession which is an interface view over the actual live session in the MatsSocketServer when gotten via MatsSocketServer.getLiveMatsSocketSessions().
Implementation of MatsSocketServer.MatsSocketSession, which is serializable both for MatsSocket and Mats, i.e.
All Message Types (aka MatsSocket Envelope Types) used in the wire-protocol of MatsSocket.
Used to transform the reply message from the Mats endpoint to the reply for the MatsSocket endpoint, and decide whether to resolve or reject the waiting Client-side Promise (i.e.
Type of "remove": Either DEREGISTER, CLOSE or TIMEOUT.
If the MatsSocketServer.MatsSocketEnvelopeDto.msg-field is of this magic type, the String it contains - which then needs to be proper JSON - will be output directly.
A MatsSocketServer.MatsSocketEnvelopeWithMetaDto will be Serialized (made into object) with the "msg" field handled specially: If it is any other class than MatsSocketStatics.DirectJson, default handling ensues (JSON object serialization) - but if it this particular class, it will output the (JSON) String it contains directly.
A MatsSocketServer.MatsSocketEnvelopeWithMetaDto will be Deserialized (made into object) with the "msg" field directly to the JSON that is present there (i.e.
When trying to send messages over WebSocket and get an IOException, we do not have many options of handling - the socket has probably closed.
Provides several hacks to get the Remote Address for different Servlet Containers implementing JSR 356 Java API for WebSockets, as that standard does not specify a method for it.
Trick to make ThreadPoolExecutor work as anyone in the world would expect: Have a constant pool of "corePoolSize", and then as more tasks are concurrently running than threads available, you increase the number of threads until "maxPoolSize", at which point the rest go on queue.
Handles async sending of not-"information bearing messages", that is, messages that are idempotent.