forked from TooTallNate/Java-WebSocket
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFramedataImpl1.java
More file actions
91 lines (74 loc) · 2.23 KB
/
Copy pathFramedataImpl1.java
File metadata and controls
91 lines (74 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package org.java_websocket.framing;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.java_websocket.exeptions.InvalidDataException;
import org.java_websocket.exeptions.InvalidFrameException;
import org.java_websocket.util.Charsetfunctions;
public class FramedataImpl1 implements FrameBuilder {
protected static byte[] emptyarray = {};
protected boolean fin;
protected Opcode optcode;
private ByteBuffer unmaskedpayload;
protected boolean transferemasked;
public FramedataImpl1() {
}
public FramedataImpl1( Opcode op ) {
this.optcode = op;
unmaskedpayload = ByteBuffer.wrap( emptyarray );
}
public FramedataImpl1( Framedata f ) {
fin = f.isFin();
optcode = f.getOpcode();
unmaskedpayload = ByteBuffer.wrap( f.getPayloadData() );
transferemasked = f.getTransfereMasked();
}
@Override
public boolean isFin() {
return fin;
}
@Override
public Opcode getOpcode() {
return optcode;
}
@Override
public boolean getTransfereMasked() {
return transferemasked;
}
@Override
public byte[] getPayloadData() {
return unmaskedpayload.array();
}
@Override
public void setFin( boolean fin ) {
this.fin = fin;
}
@Override
public void setOptcode( Opcode optcode ) {
this.optcode = optcode;
}
@Override
public void setPayload( byte[] payload ) throws InvalidDataException {
unmaskedpayload = ByteBuffer.wrap( payload );
}
@Override
public void setTransferemasked( boolean transferemasked ) {
this.transferemasked = transferemasked;
}
@Override
public void append( Framedata nextframe ) throws InvalidFrameException {
if( unmaskedpayload == null ) {
unmaskedpayload = ByteBuffer.wrap( nextframe.getPayloadData() );
} else {
// TODO might be inefficient. Cosider a global buffer pool
ByteBuffer tmp = ByteBuffer.allocate( nextframe.getPayloadData().length + unmaskedpayload.capacity() );
tmp.put( unmaskedpayload.array() );
tmp.put( nextframe.getPayloadData() );
unmaskedpayload = tmp;
}
fin = nextframe.isFin();
}
@Override
public String toString() {
return "Framedata{ optcode:" + getOpcode() + ", fin:" + isFin() + ", payloadlength:" + unmaskedpayload.limit() + ", payload:" + Arrays.toString(Charsetfunctions.utf8Bytes( new String( unmaskedpayload.array() ) ) ) + "}";
}
}