package com.l7tech.server.tomcat.nio;

import java.io.FileDescriptor;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketOption;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.Set;
import sun.nio.ch.SelChImpl;
import sun.nio.ch.SelectionKeyImpl;

public class SocketChannelWrapper extends SocketChannel implements SelChImpl {
   protected final SocketChannel delegate;

   SocketChannelWrapper(SocketChannel var1) {
      super(var1.provider());
      this.delegate = var1;
   }

   @Override
   public SocketChannel bind(SocketAddress var1) throws IOException {
      return this.delegate.bind(var1);
   }

   @Override
   public <T> SocketChannel setOption(SocketOption<T> var1, T var2) throws IOException {
      return this.delegate.setOption(var1, var2);
   }

   @Override
   public <T> T getOption(SocketOption<T> var1) throws IOException {
      return this.delegate.getOption(var1);
   }

   @Override
   public Set<SocketOption<?>> supportedOptions() {
      return this.delegate.supportedOptions();
   }

   @Override
   public SocketChannel shutdownInput() throws IOException {
      return this.delegate.shutdownInput();
   }

   @Override
   public SocketChannel shutdownOutput() throws IOException {
      return this.delegate.shutdownOutput();
   }

   @Override
   public Socket socket() {
      return this.delegate.socket();
   }

   @Override
   public boolean isConnected() {
      return this.delegate.isConnected();
   }

   @Override
   public boolean isConnectionPending() {
      return this.delegate.isConnectionPending();
   }

   @Override
   public boolean connect(SocketAddress var1) throws IOException {
      return this.delegate.connect(var1);
   }

   @Override
   public boolean finishConnect() throws IOException {
      return this.delegate.finishConnect();
   }

   @Override
   public SocketAddress getRemoteAddress() throws IOException {
      return this.delegate.getRemoteAddress();
   }

   @Override
   public int read(ByteBuffer var1) throws IOException {
      return this.delegate.read(var1);
   }

   @Override
   public long read(ByteBuffer[] var1, int var2, int var3) throws IOException {
      return this.delegate.read(var1, var2, var3);
   }

   @Override
   public int write(ByteBuffer var1) throws IOException {
      return this.delegate.write(var1);
   }

   @Override
   public long write(ByteBuffer[] var1, int var2, int var3) throws IOException {
      return this.delegate.write(var1, var2, var3);
   }

   @Override
   public SocketAddress getLocalAddress() throws IOException {
      return this.delegate.getLocalAddress();
   }

   @Override
   protected void implCloseSelectableChannel() throws IOException {
      this.delegate.close();
   }

   @Override
   protected void implConfigureBlocking(boolean var1) throws IOException {
      this.delegate.configureBlocking(var1);
   }

   @Override
   public FileDescriptor getFD() {
      return ((SelChImpl)this.delegate).getFD();
   }

   @Override
   public int getFDVal() {
      return ((SelChImpl)this.delegate).getFDVal();
   }

   @Override
   public boolean translateAndUpdateReadyOps(int var1, SelectionKeyImpl var2) {
      return ((SelChImpl)this.delegate).translateAndUpdateReadyOps(var1, var2);
   }

   @Override
   public boolean translateAndSetReadyOps(int var1, SelectionKeyImpl var2) {
      return ((SelChImpl)this.delegate).translateAndSetReadyOps(var1, var2);
   }

   @Override
   public int translateInterestOps(int var1) {
      return ((SelChImpl)this.delegate).translateInterestOps(var1);
   }

   @Override
   public void kill() throws IOException {
      ((SelChImpl)this.delegate).kill();
   }
}
