@@ -82,15 +82,15 @@ public HandshakeState acceptHandshakeAsServer( ClientHandshake handshakedata ) t
8282
8383 @ Override
8484 public ByteBuffer createBinaryFrame ( Framedata framedata ) {
85- byte [] mes = framedata .getPayloadData ();
85+ ByteBuffer mes = framedata .getPayloadData ();
8686 boolean mask = role == Role .CLIENT ; // framedata.getTransfereMasked();
87- int sizebytes = mes .length <= 125 ? 1 : mes .length <= 65535 ? 2 : 8 ;
88- ByteBuffer buf = ByteBuffer .allocate ( 1 + ( sizebytes > 1 ? sizebytes + 1 : sizebytes ) + ( mask ? 4 : 0 ) + mes .length );
87+ int sizebytes = mes .remaining () <= 125 ? 1 : mes .remaining () <= 65535 ? 2 : 8 ;
88+ ByteBuffer buf = ByteBuffer .allocate ( 1 + ( sizebytes > 1 ? sizebytes + 1 : sizebytes ) + ( mask ? 4 : 0 ) + mes .remaining () );
8989 byte optcode = fromOpcode ( framedata .getOpcode () );
9090 byte one = (byte ) ( framedata .isFin () ? -128 : 0 );
9191 one |= optcode ;
9292 buf .put ( one );
93- byte [] payloadlengthbytes = toByteArray ( mes .length , sizebytes );
93+ byte [] payloadlengthbytes = toByteArray ( mes .remaining () , sizebytes );
9494 assert ( payloadlengthbytes .length == sizebytes );
9595
9696 if ( sizebytes == 1 ) {
@@ -108,8 +108,8 @@ public ByteBuffer createBinaryFrame( Framedata framedata ) {
108108 ByteBuffer maskkey = ByteBuffer .allocate ( 4 );
109109 maskkey .putInt ( new Random ().nextInt () );
110110 buf .put ( maskkey .array () );
111- for ( int i = 0 ; i < mes .length ; i ++ ) {
112- buf .put ( (byte ) ( mes [ i ] ^ maskkey .get ( i % 4 ) ) );
111+ for ( int i = 0 ; i < mes .limit () ; i ++ ) {
112+ buf .put ( (byte ) ( mes . get () ^ maskkey .get ( i % 4 ) ) );
113113 }
114114 } else
115115 buf .put ( mes );
@@ -121,7 +121,7 @@ public ByteBuffer createBinaryFrame( Framedata framedata ) {
121121 }
122122
123123 @ Override
124- public List <Framedata > createFrames ( byte [] binary , boolean mask ) {
124+ public List <Framedata > createFrames ( ByteBuffer binary , boolean mask ) {
125125 FrameBuilder curframe = new FramedataImpl1 ();
126126 try {
127127 curframe .setPayload ( binary );
@@ -137,9 +137,8 @@ public List<Framedata> createFrames( byte[] binary, boolean mask ) {
137137 @ Override
138138 public List <Framedata > createFrames ( String text , boolean mask ) {
139139 FrameBuilder curframe = new FramedataImpl1 ();
140- byte [] pay = Charsetfunctions .utf8Bytes ( text );
141140 try {
142- curframe .setPayload ( pay );
141+ curframe .setPayload ( ByteBuffer . wrap ( Charsetfunctions . utf8Bytes ( text ) ) );
143142 } catch ( InvalidDataException e ) {
144143 throw new NotSendableException ( e );
145144 }
@@ -282,16 +281,15 @@ public List<Framedata> translateFrame( ByteBuffer buffer ) throws LimitExedeedEx
282281 buffer .reset ();
283282 int pref = e .getPreferedSize ();
284283 incompleteframe = ByteBuffer .allocate ( checkAlloc ( pref ) );
285- incompleteframe .put ( buffer .array (), buffer .position (), buffer .remaining () );
286- buffer .position ( buffer .position () + buffer .remaining () );
284+ incompleteframe .put ( buffer );
287285 break ;
288286 }
289287 }
290288 return frames ;
291289 }
292290
293291 public Framedata translateSingleFrame ( ByteBuffer buffer ) throws IncompleteException , InvalidDataException {
294- int maxpacketsize = buffer .limit () - buffer . position ();
292+ int maxpacketsize = buffer .remaining ();
295293 int realpacketsize = 2 ;
296294 if ( maxpacketsize < realpacketsize )
297295 throw new IncompleteException ( realpacketsize );
@@ -369,7 +367,8 @@ public Framedata translateSingleFrame( ByteBuffer buffer ) throws IncompleteExce
369367 frame .setFin ( FIN );
370368 frame .setOptcode ( optcode );
371369 }
372- frame .setPayload ( payload .array () );
370+ payload .flip ();
371+ frame .setPayload ( payload );
373372 return frame ;
374373 }
375374
0 commit comments