Android Open Source - android-chess Timesealing Socket






From Project

Back to project page android-chess.

License

The source code is released under:

MIT License

If you think the Android project android-chess 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 jwtc.android.timeseal;
/*  w  ww .  j a v a2s.  c o  m*/
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

import jwtc.android.timeseal.streams.b;
import jwtc.android.timeseal.streams.c;

import android.util.Log;

public class TimesealingSocket extends Socket
  implements Runnable
{
  private static final String jdField_int = "TIMESTAMP|FICS timeseal implementation by Alexander Maryanovsky|" + System.getProperty("java.vendor") + " " + System.getProperty("java.version") + ", " + System.getProperty("os.name") + " " + System.getProperty("os.version") + "|";
  private volatile long jdField_for;
  private final c jdField_do = new c(10000);
  private OutputStream jdField_if;
  private volatile Thread a;

  private final void jdField_if()
    throws IOException
  {
    this.jdField_for = System.currentTimeMillis();
    this.jdField_if = new a(super.getOutputStream());
    a();
    this.a = new Thread(this, "Timeseal thread");
    this.a.start();
  }

  private final void a()
    throws IOException
  {
    OutputStream localOutputStream = getOutputStream();
    synchronized (localOutputStream)
    {
      localOutputStream.write(jdField_int.getBytes());
      localOutputStream.write(10);
    }
  }

  public void run()
  {
    try
    {
      BufferedInputStream localBufferedInputStream = new BufferedInputStream(super.getInputStream());
      //b localb2 = this.jdField_do.jdMethod_byte();
      b localb2 = this.jdField_do.jdField_byte();
      String str = "\n\r[G]\n\r";
      byte[] arrayOfByte = new byte[str.length()];
      int i = 0;
      int j = 0;
      while (this.a != null)
      {
        int k;
        if (i != 0)
        {
          k = arrayOfByte[0];
          if (k < 0)
            k += 256;
          for (int m = 0; m < i; m++)
            arrayOfByte[m] = arrayOfByte[(m + 1)];
          i--;
        }
        else
        {
          k = localBufferedInputStream.read();
        }
        if (str.charAt(j) == k)
        {
          j++;
          if (j == str.length())
          {
            j = 0;
            i = 0;
            synchronized (this)
            {
              getOutputStream().write("\0029\n".getBytes());
            }
          }
        }
        else if (j != 0)
        {
          localb2.write((byte)str.charAt(0));
          for (int n = 0; n < j - 1; n++)
          {
            arrayOfByte[n] = ((byte)str.charAt(n + 1));
            i++;
          }
          arrayOfByte[(i++)] = ((byte)k);
          j = 0;
        }
        else
        {
          if (k < 0)
            return;
          localb2.write(k);
        }
      }
    }
    catch (IOException localIOException2)
    {
      try
      {
        this.jdField_if.close();
      }
      catch (IOException localIOException3)
      {
        System.err.println("Failed to close PipedStream");
        localIOException3.printStackTrace();
      }
    }
    finally
    {
      try
      {
        //b localb1 = this.jdField_do.jdMethod_byte();
      b localb1 = this.jdField_do.jdField_byte();
        localb1.close();
      }
      catch (IOException localIOException1)
      {
      }
    }
  }

  public OutputStream getOutputStream()
    throws IOException
  {
    return this.jdField_if;
  }

  public InputStream getInputStream()
  {
    return this.jdField_do.jdField_if();
  }

  public void close()
    throws IOException
  {
    super.close();
    this.a = null;
  }

  public TimesealingSocket(InetAddress paramInetAddress, int paramInt)
    throws IOException
  {
    super(paramInetAddress, paramInt);
    jdField_if();
    
    Log.i("TimesealingSocket", "initialized");
  }

  public TimesealingSocket(String paramString, int paramInt)
    throws IOException
  {
    super(paramString, paramInt);
    jdField_if();
  }

  private class a extends OutputStream
  {
    private final byte[] jdField_for = "Timestamp (FICS) v1.0 - programmed by Henrik Gram.".getBytes();
    private byte[] a = new byte[10000];
    private final OutputStream jdField_do;
    private final ByteArrayOutputStream jdField_if = new ByteArrayOutputStream();
    private long jdField_int = 0L;

    public void write(int paramInt)
      throws IOException
    {
      synchronized (TimesealingSocket.this)
      {
        if (paramInt == 10)
        {
          byte[] arrayOfByte = this.jdField_if.toByteArray();
          long l = System.currentTimeMillis() - TimesealingSocket.this.jdField_for;
          if (l <= this.jdField_int)
            l = this.jdField_int + 1L;
          int i = a(arrayOfByte, l);
          this.jdField_do.write(this.a, 0, i);
          this.jdField_do.flush();
          this.jdField_if.reset();
          this.jdField_int = l;
        }
        else
        {
          this.jdField_if.write(paramInt);
        }
      }
    }

    private final int a(byte[] paramArrayOfByte, long paramLong)
    {
      int i = paramArrayOfByte.length;
      System.arraycopy(paramArrayOfByte, 0, this.a, 0, paramArrayOfByte.length);
      this.a[(i++)] = 24;
      byte[] arrayOfByte = Long.toString(paramLong).getBytes();
      System.arraycopy(arrayOfByte, 0, this.a, i, arrayOfByte.length);
      i += arrayOfByte.length;
      this.a[(i++)] = 25;
      int j = i;
      i += 12 - i % 12;
      while (j < i)
        this.a[(j++)] = 49;
      for (j = 0; j < i; j++)
        this.a[j] = ((byte)(this.a[j] | 0x80));
      for (j = 0; j < i; j += 12)
      {
      // k = this.a[(j + 11)];
        byte k = this.a[(j + 11)];
        
        this.a[(j + 11)] = this.a[j];
        this.a[j] = k;
        k = this.a[(j + 9)];
        this.a[(j + 9)] = this.a[(j + 2)];
        this.a[(j + 2)] = k;
        k = this.a[(j + 7)];
        this.a[(j + 7)] = this.a[(j + 4)];
        this.a[(j + 4)] = k;
      }
      int k = 0;
      for (j = 0; j < i; j++)
      {
        this.a[j] = ((byte)(this.a[j] ^ this.jdField_for[k]));
        k = (k + 1) % this.jdField_for.length;
      }
      for (j = 0; j < i; j++)
        this.a[j] = ((byte)(this.a[j] - 32));
      this.a[(i++)] = -128;
      this.a[(i++)] = 10;
      return i;
    }

    public a(OutputStream arg2)
    {
      //Object localObject;
      //this.jdField_do = localObject;
      this.jdField_do = arg2;
    }
  }
}




Java Source Code List

jwtc.android.chess.ChessFieldView.java
jwtc.android.chess.ChessImageView.java
jwtc.android.chess.ChessPreferences.java
jwtc.android.chess.ChessViewBase.java
jwtc.android.chess.ChessView.java
jwtc.android.chess.GamesListView.java
jwtc.android.chess.HtmlActivity.java
jwtc.android.chess.ImageCacheObject.java
jwtc.android.chess.MyBaseActivity.java
jwtc.android.chess.MyPGNProvider.java
jwtc.android.chess.PGNView.java
jwtc.android.chess.SaveGameDlg.java
jwtc.android.chess.UI.java
jwtc.android.chess.convergence.Connection.java
jwtc.android.chess.convergence.ConvergenceActivity.java
jwtc.android.chess.convergence.RestServer.java
jwtc.android.chess.iconifiedlist.IconifiedTextListAdapter.java
jwtc.android.chess.iconifiedlist.IconifiedTextView.java
jwtc.android.chess.iconifiedlist.IconifiedText.java
jwtc.android.chess.ics.CustomCommands.java
jwtc.android.chess.ics.ICSChatDlg.java
jwtc.android.chess.ics.ICSChessView.java
jwtc.android.chess.ics.ICSClient.java
jwtc.android.chess.ics.ICSConfirmDlg.java
jwtc.android.chess.ics.ICSMatchDlg.java
jwtc.android.chess.ics.TelnetSocket.java
jwtc.android.chess.ics.TimesealInputStream.java
jwtc.android.chess.ics.TimesealOutputStream.java
jwtc.android.chess.ics.TimesealPipe.java
jwtc.android.chess.ics.TimesealingSocket.java
jwtc.android.chess.puzzle.ChessViewPractice.java
jwtc.android.chess.puzzle.ChessViewPuzzle.java
jwtc.android.chess.puzzle.MyPuzzleProvider.java
jwtc.android.chess.puzzle.practice.java
jwtc.android.chess.puzzle.puzzle.java
jwtc.android.chess.tools.FileListView.java
jwtc.android.chess.tools.PGNProcessor.java
jwtc.android.chess.tools.importactivity.java
jwtc.android.chess.tools.pgntool.java
jwtc.android.chess.main.java
jwtc.android.chess.options.java
jwtc.android.chess.setup.java
jwtc.android.chess.start.java
jwtc.android.timeseal.TimesealingSocket.java
jwtc.android.timeseal.streams.a.java
jwtc.android.timeseal.streams.b.java
jwtc.android.timeseal.streams.c.java
jwtc.chess.ChessPuzzleProvider.java
jwtc.chess.GameControl.java
jwtc.chess.JNI.java
jwtc.chess.Move.java
jwtc.chess.PGNColumns.java
jwtc.chess.PGNEntry.java
jwtc.chess.PGNProvider.java
jwtc.chess.Pos.java
jwtc.chess.Valuation.java
jwtc.chess.algorithm.SearchAlgorithmRunner.java
jwtc.chess.algorithm.UCIWrapper.java
jwtc.chess.board.BoardConstants.java
jwtc.chess.board.BoardHashKeys.java
jwtc.chess.board.BoardMembers.java
jwtc.chess.board.BoardStatics.java
jwtc.chess.board.ChessBoard.java