1 modulehunt.http.codec.websocket.model.Extension;
2 3 importhunt.http.codec.websocket.model.ExtensionConfig;
4 5 importhunt.http.WebSocketFrame;
6 importhunt.http.WebSocketConnection;
7 8 /**
9 * Interface for WebSocket Extensions.
10 * <p>
11 * That {@link Frame}s are passed through the Extension via the {@link IncomingFrames} and {@link OutgoingFrames} interfaces
12 */13 interfaceExtension : IncomingFrames, OutgoingFrames {
14 /**
15 * The active configuration for this extension.
16 *
17 * @return the configuration for this extension. never null.
18 */19 ExtensionConfiggetConfig();
20 21 /**
22 * The <code>Sec-WebSocket-Extensions</code> name for this extension.
23 * <p>
24 * Also known as the <a href="https://tools.ietf.org/html/rfc6455#section-9.1"><code>extension-token</code> per Section 9.1. Negotiating Extensions</a>.
25 *
26 * @return the name of the extension
27 */28 stringgetName();
29 30 /**
31 * Used to indicate that the extension makes use of the RSV1 bit of the base websocket framing.
32 * <p>
33 * This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV1.
34 *
35 * @return true if extension uses RSV1 for its own purposes.
36 */37 boolisRsv1User();
38 39 /**
40 * Used to indicate that the extension makes use of the RSV2 bit of the base websocket framing.
41 * <p>
42 * This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV2.
43 *
44 * @return true if extension uses RSV2 for its own purposes.
45 */46 boolisRsv2User();
47 48 /**
49 * Used to indicate that the extension makes use of the RSV3 bit of the base websocket framing.
50 * <p>
51 * This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV3.
52 *
53 * @return true if extension uses RSV3 for its own purposes.
54 */55 boolisRsv3User();
56 57 /**
58 * Set the next {@link IncomingFrames} to call in the chain.
59 *
60 * @param nextIncoming the next incoming extension
61 */62 voidsetNextIncomingFrames(IncomingFramesnextIncoming);
63 64 /**
65 * Set the next {@link OutgoingFrames} to call in the chain.
66 *
67 * @param nextOutgoing the next outgoing extension
68 */69 voidsetNextOutgoingFrames(OutgoingFramesnextOutgoing);
70 }