Android Open Source - android_opengles Close Frame Builder






From Project

Back to project page android_opengles.

License

The source code is released under:

MIT License

If you think the Android project android_opengles listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.java_websocket.framing;
/*from w  w w .  j a  v a 2 s. c o  m*/
import java.nio.ByteBuffer;

import org.java_websocket.exceptions.InvalidDataException;
import org.java_websocket.exceptions.InvalidFrameException;
import org.java_websocket.util.Charsetfunctions;

public class CloseFrameBuilder extends FramedataImpl1 implements CloseFrame {

  static final ByteBuffer emptybytebuffer = ByteBuffer.allocate( 0 );

  private int code;
  private String reason;

  public CloseFrameBuilder() {
    super( Opcode.CLOSING );
    setFin( true );
  }

  public CloseFrameBuilder( int code ) throws InvalidDataException {
    super( Opcode.CLOSING );
    setFin( true );
    setCodeAndMessage( code, "" );
  }

  public CloseFrameBuilder( int code , String m ) throws InvalidDataException {
    super( Opcode.CLOSING );
    setFin( true );
    setCodeAndMessage( code, m );
  }

  private void setCodeAndMessage( int code, String m ) throws InvalidDataException {
    if( m == null ) {
      m = "";
    }
    // CloseFrame.TLS_ERROR is not allowed to be transfered over the wire
    if( code == CloseFrame.TLS_ERROR ) {
      code = CloseFrame.NOCODE;
      m = "";
    }
    if( code == CloseFrame.NOCODE ) {
      if( 0 < m.length() ) {
        throw new InvalidDataException( PROTOCOL_ERROR, "A close frame must have a closecode if it has a reason" );
      }
      return;// empty payload
    }

    byte[] by = Charsetfunctions.utf8Bytes( m );
    ByteBuffer buf = ByteBuffer.allocate( 4 );
    buf.putInt( code );
    buf.position( 2 );
    ByteBuffer pay = ByteBuffer.allocate( 2 + by.length );
    pay.put( buf );
    pay.put( by );
    pay.rewind();
    setPayload( pay );
  }

  private void initCloseCode() throws InvalidFrameException {
    code = CloseFrame.NOCODE;
    ByteBuffer payload = super.getPayloadData();
    payload.mark();
    if( payload.remaining() >= 2 ) {
      ByteBuffer bb = ByteBuffer.allocate( 4 );
      bb.position( 2 );
      bb.putShort( payload.getShort() );
      bb.position( 0 );
      code = bb.getInt();

      if( code == CloseFrame.ABNORMAL_CLOSE || code == CloseFrame.TLS_ERROR || code == CloseFrame.NOCODE || code > 4999 || code < 1000 || code == 1004 ) {
        throw new InvalidFrameException( "closecode must not be sent over the wire: " + code );
      }
    }
    payload.reset();
  }

  @Override
  public int getCloseCode() {
    return code;
  }

  private void initMessage() throws InvalidDataException {
    if( code == CloseFrame.NOCODE ) {
      reason = Charsetfunctions.stringUtf8( super.getPayloadData() );
    } else {
      ByteBuffer b = super.getPayloadData();
      int mark = b.position();// because stringUtf8 also creates a mark
      try {
        b.position( b.position() + 2 );
        reason = Charsetfunctions.stringUtf8( b );
      } catch ( IllegalArgumentException e ) {
        throw new InvalidFrameException( e );
      } finally {
        b.position( mark );
      }
    }
  }

  @Override
  public String getMessage() {
    return reason;
  }

  @Override
  public String toString() {
    return super.toString() + "code: " + code;
  }

  @Override
  public void setPayload( ByteBuffer payload ) throws InvalidDataException {
    super.setPayload( payload );
    initCloseCode();
    initMessage();
  }
  @Override
  public ByteBuffer getPayloadData() {
    if( code == NOCODE )
      return emptybytebuffer;
    return super.getPayloadData();
  }

}




Java Source Code List

com.example.android.wifidirect.DeviceDetailFragment.java
com.example.android.wifidirect.DeviceListFragment.java
com.example.android.wifidirect.FileTransferService.java
com.example.android.wifidirect.WiFiDirectActivity.java
com.example.android.wifidirect.WiFiDirectBroadcastReceiver.java
com.example.android.wifidirect.discovery.ChatManager.java
com.example.android.wifidirect.discovery.ClientSocketHandler.java
com.example.android.wifidirect.discovery.GroupOwnerSocketHandler.java
com.example.android.wifidirect.discovery.WiFiChatFragment.java
com.example.android.wifidirect.discovery.WiFiDirectBroadcastReceiver.java
com.example.android.wifidirect.discovery.WiFiDirectServicesList.java
com.example.android.wifidirect.discovery.WiFiP2pService.java
com.example.android.wifidirect.discovery.WiFiServiceDiscoveryActivity.java
com.example.opengles.CubeRenderer.java
com.example.opengles.Cube.java
com.example.opengles.MainActivity.java
com.example.opengles.Planet.java
com.example.opengles.SolarSystemRenderer.java
com.example.opengles.SquareRenderer.java
com.example.opengles.Square.java
com.nfg.sdk.NFGameServer.java
com.nfg.sdk.NFGame.java
com.nfg.wifidirect3p.ChatActivity.java
com.nfg.wifidirect3p.WifiDirect3PActivity.java
fi.iki.elonen.HelloServer.java
fi.iki.elonen.HelloServer.java
fi.iki.elonen.IWebSocketFactory.java
fi.iki.elonen.InternalRewrite.java
fi.iki.elonen.InternalRewrite.java
fi.iki.elonen.NanoHTTPD.java
fi.iki.elonen.NanoHTTPD.java
fi.iki.elonen.NanoWebSocketServer.java
fi.iki.elonen.ServerRunner.java
fi.iki.elonen.ServerRunner.java
fi.iki.elonen.SimpleWebServer.java
fi.iki.elonen.SimpleWebServer.java
fi.iki.elonen.TempFilesServer.java
fi.iki.elonen.TempFilesServer.java
fi.iki.elonen.WebServerPluginInfo.java
fi.iki.elonen.WebServerPluginInfo.java
fi.iki.elonen.WebServerPlugin.java
fi.iki.elonen.WebServerPlugin.java
fi.iki.elonen.WebSocketException.java
fi.iki.elonen.WebSocketFrame.java
fi.iki.elonen.WebSocketResponseHandler.java
fi.iki.elonen.WebSocket.java
fi.iki.elonen.debug.DebugServer.java
fi.iki.elonen.debug.DebugServer.java
fi.iki.elonen.samples.echo.DebugWebSocketServer.java
fi.iki.elonen.samples.echo.DebugWebSocket.java
fi.iki.elonen.samples.echo.EchoSocketSample.java
org.java_websocket.AbstractWrappedByteChannel.java
org.java_websocket.SSLSocketChannel2.java
org.java_websocket.SocketChannelIOHelper.java
org.java_websocket.WebSocketAdapter.java
org.java_websocket.WebSocketFactory.java
org.java_websocket.WebSocketImpl.java
org.java_websocket.WebSocketListener.java
org.java_websocket.WebSocket.java
org.java_websocket.WrappedByteChannel.java
org.java_websocket.client.AbstractClientProxyChannel.java
org.java_websocket.client.WebSocketClient.java
org.java_websocket.drafts.Draft_10.java
org.java_websocket.drafts.Draft_17.java
org.java_websocket.drafts.Draft_75.java
org.java_websocket.drafts.Draft_76.java
org.java_websocket.drafts.Draft.java
org.java_websocket.exceptions.IncompleteHandshakeException.java
org.java_websocket.exceptions.InvalidDataException.java
org.java_websocket.exceptions.InvalidFrameException.java
org.java_websocket.exceptions.InvalidHandshakeException.java
org.java_websocket.exceptions.LimitExedeedException.java
org.java_websocket.exceptions.NotSendableException.java
org.java_websocket.exceptions.WebsocketNotConnectedException.java
org.java_websocket.framing.CloseFrameBuilder.java
org.java_websocket.framing.CloseFrame.java
org.java_websocket.framing.FrameBuilder.java
org.java_websocket.framing.FramedataImpl1.java
org.java_websocket.framing.Framedata.java
org.java_websocket.handshake.ClientHandshakeBuilder.java
org.java_websocket.handshake.ClientHandshake.java
org.java_websocket.handshake.HandshakeBuilder.java
org.java_websocket.handshake.HandshakeImpl1Client.java
org.java_websocket.handshake.HandshakeImpl1Server.java
org.java_websocket.handshake.HandshakedataImpl1.java
org.java_websocket.handshake.Handshakedata.java
org.java_websocket.handshake.ServerHandshakeBuilder.java
org.java_websocket.handshake.ServerHandshake.java
org.java_websocket.server.DefaultSSLWebSocketServerFactory.java
org.java_websocket.server.DefaultWebSocketServerFactory.java
org.java_websocket.server.WebSocketServer.java
org.java_websocket.util.Base64.java
org.java_websocket.util.Charsetfunctions.java