Skip to content

Commit b320ee7

Browse files
committed
Update the document of PerMessageDeflateExtension
1 parent 499b26f commit b320ee7

File tree

3 files changed

+60
-5
lines changed

3 files changed

+60
-5
lines changed

‎src/main/java/org/java_websocket/extensions/permessage_deflate/PerMessageDeflateExtension.java‎

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@
66
importorg.java_websocket.extensions.CompressionExtension;
77
importorg.java_websocket.extensions.ExtensionRequestData;
88
importorg.java_websocket.extensions.IExtension;
9-
importorg.java_websocket.framing.*;
9+
importorg.java_websocket.framing.BinaryFrame;
10+
importorg.java_websocket.framing.CloseFrame;
11+
importorg.java_websocket.framing.ContinuousFrame;
12+
importorg.java_websocket.framing.DataFrame;
13+
importorg.java_websocket.framing.Framedata;
14+
importorg.java_websocket.framing.FramedataImpl1;
15+
importorg.java_websocket.framing.TextFrame;
1016

1117
importjava.io.ByteArrayOutputStream;
1218
importjava.nio.ByteBuffer;
@@ -16,6 +22,12 @@
1622
importjava.util.zip.Deflater;
1723
importjava.util.zip.Inflater;
1824

25+
/**
26+
* PerMessage Deflate Extension (<a href="https://tools.ietf.org/html/rfc7692#section-7">7&#46; The "permessage-deflate" Extension</a> in
27+
* <a href="https://tools.ietf.org/html/rfc7692">RFC 7692</a>).
28+
*
29+
* @see <a href="https://tools.ietf.org/html/rfc7692#section-7">7&#46; The "permessage-deflate" Extension in RFC 7692</a>
30+
*/
1931
publicclassPerMessageDeflateExtensionextendsCompressionExtension{
2032

2133
// Name of the extension as registered by IETF https://tools.ietf.org/html/rfc7692#section-9.
@@ -28,7 +40,7 @@ public class PerMessageDeflateExtension extends CompressionExtension{
2840
privatestaticfinalStringCLIENT_MAX_WINDOW_BITS = "client_max_window_bits";
2941
privatestaticfinalintserverMaxWindowBits = 1 << 15;
3042
privatestaticfinalintclientMaxWindowBits = 1 << 15;
31-
privatestaticfinalbyte[] TAIL_BYTES ={0x00, 0x00, (byte)0xFF, (byte)0xFF};
43+
privatestaticfinalbyte[] TAIL_BYTES ={ (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF};
3244
privatestaticfinalintBUFFER_SIZE = 1 << 10;
3345

3446
privatebooleanserverNoContextTakeover = true;
@@ -40,6 +52,24 @@ public class PerMessageDeflateExtension extends CompressionExtension{
4052
privateInflaterinflater = newInflater(true);
4153
privateDeflaterdeflater = newDeflater(Deflater.DEFAULT_COMPRESSION, true);
4254

55+
/**
56+
*
57+
* @return serverNoContextTakeover
58+
*/
59+
publicbooleanisServerNoContextTakeover()
60+
{
61+
returnserverNoContextTakeover;
62+
}
63+
64+
/**
65+
*
66+
* @return clientNoContextTakeover
67+
*/
68+
publicbooleanisClientNoContextTakeover()
69+
{
70+
returnclientNoContextTakeover;
71+
}
72+
4373
/*
4474
An endpoint uses the following algorithm to decompress a message.
4575
1. Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the
@@ -93,6 +123,12 @@ We can check the getRemaining() method to see whether the data we supplied has b
93123
((FramedataImpl1) inputFrame).setPayload(ByteBuffer.wrap(output.toByteArray(), 0, output.size()));
94124
}
95125

126+
/**
127+
*
128+
* @param data the bytes of date
129+
* @param outputBuffer the output stream
130+
* @throws DataFormatException
131+
*/
96132
privatevoiddecompress(byte[] data, ByteArrayOutputStreamoutputBuffer) throwsDataFormatException{
97133
inflater.setInput(data);
98134
byte[] buffer = newbyte[BUFFER_SIZE];
@@ -146,6 +182,11 @@ public void encodeFrame(Framedata inputFrame){
146182
((FramedataImpl1) inputFrame).setPayload(ByteBuffer.wrap(outputBytes, 0, outputLength));
147183
}
148184

185+
/**
186+
*
187+
* @param data the bytes of data
188+
* @return true if the data is OK
189+
*/
149190
privatebooleanendsWithTail(byte[] data){
150191
if(data.length < 4)
151192
returnfalse;

‎src/main/java/org/java_websocket/framing/FramedataImpl1.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public void setFin(boolean fin){
183183
/**
184184
* Set the rsv1 of this frame to the provided boolean
185185
*
186-
* @param rsv1 true if fin has to be set
186+
* @param rsv1 true if rsv1 has to be set
187187
*/
188188
publicvoidsetRSV1(booleanrsv1){
189189
this.rsv1 = rsv1;
@@ -192,7 +192,7 @@ public void setRSV1(boolean rsv1){
192192
/**
193193
* Set the rsv2 of this frame to the provided boolean
194194
*
195-
* @param rsv2 true if fin has to be set
195+
* @param rsv2 true if rsv2 has to be set
196196
*/
197197
publicvoidsetRSV2(booleanrsv2){
198198
this.rsv2 = rsv2;
@@ -201,7 +201,7 @@ public void setRSV2(boolean rsv2){
201201
/**
202202
* Set the rsv3 of this frame to the provided boolean
203203
*
204-
* @param rsv3 true if fin has to be set
204+
* @param rsv3 true if rsv3 has to be set
205205
*/
206206
publicvoidsetRSV3(booleanrsv3){
207207
this.rsv3 = rsv3;

‎src/test/java/org/java_websocket/extensions/PerMessageDeflateExtensionTest.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,18 @@ public void testToString() throws Exception{
117117
PerMessageDeflateExtensiondeflateExtension = newPerMessageDeflateExtension();
118118
assertEquals( "PerMessageDeflateExtension", deflateExtension.toString() );
119119
}
120+
121+
@Test
122+
publicvoidtestIsServerNoContextTakeover()
123+
{
124+
PerMessageDeflateExtensiondeflateExtension = newPerMessageDeflateExtension();
125+
assertTrue(deflateExtension.isServerNoContextTakeover());
126+
}
127+
128+
@Test
129+
publicvoidtestIsClientNoContextTakeover()
130+
{
131+
PerMessageDeflateExtensiondeflateExtension = newPerMessageDeflateExtension();
132+
assertFalse(deflateExtension.isClientNoContextTakeover());
133+
}
120134
}

0 commit comments

Comments
(0)