亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? backgammonbtconnection.java

?? --- --- --- 基于J2ME的游戲程序--------很有技巧性的程序
?? JAVA
字號:
// Copyright (c) 2005 Sony Ericsson Mobile Communications AB
//
// This software is provided "AS IS," without a warranty of any kind. 
// ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, 
// INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A 
// PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. 
//
// THIS SOFTWARE IS COMPLEMENTARY OF JAYWAY AB (www.jayway.se)

package bluegammon.io;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.bluetooth.RemoteDevice;
import javax.microedition.io.StreamConnection;

/**
 * Implementation of the interface <code>BackgammonConnection</code> for
 * bluetooth bearer.
 * @author Peter Andersson
 */
public class BackgammonBTConnection implements BackgammonConnection
{
  /** The service number of the game */
  protected static final String SERVICE_NBR = "1a88760401bac57a8806abc1ca900010";
  /** Bluetooth facade instance */
  protected static final BluetoothFacade BTFACADE = new BluetoothFacade();

  /** Flag indicating if server is actually awaiting a client */
  protected static boolean m_awaitingClient = false;
  /** Flag indicating if server denies connection once it gets a client */
  protected static boolean m_fakeServerClosed = false;
  /** Global server/client connection closed flag */
  protected static boolean m_closed = false;
  /** The server/client StreamConnection */
  protected volatile static StreamConnection m_connection;
  /** The server/client input stream */
  protected volatile static DataInputStream m_input;
  /** The server/client output stream */
  protected volatile static DataOutputStream m_output;
  
  /**
   * <p>
   * Waits for a client, the method blocks until client arrives
   * or IOException is thrown. The BT server cannot be interrupted - 
   * call <code>pretendServerClose</code> to emulate this. Any client
   * that connects after a call to <code>pretendServerClose</code> will
   * immediately be shutdown.
   * </p><p>
   * Disable this state by calling <code>waitForClient</code> again, which
   * will make the client accepted when it connects. Any call to
   * <code>waitForClient</code> during an already active client wait will
   * just set flags and return directly, as there must be another thread still
   * waiting a client generated by the first call to <code>waitForClient</code>.
   * <p>
   */
  public void waitForClient() throws IOException
  {
    synchronized(this)
    {
      if (m_awaitingClient && m_fakeServerClosed)
      {
        // Some other thread is still awaiting client,
        // just set flags and return from this call
        m_fakeServerClosed = false;
        return;
      }
      m_awaitingClient = true;
      m_fakeServerClosed = false;
    }
    try
    {
      // Start listening for client
      m_closed = false;
      m_connection = BTFACADE.waitForClient(SERVICE_NBR);
      m_input = m_connection.openDataInputStream();
      m_output = m_connection.openDataOutputStream();
    }
    catch (IOException ioe)
    {
      synchronized(this)
      {
        if (!m_closed && !m_fakeServerClosed)
        {
          // Not interested in exception if we're closed
          throw ioe;
        }
      }
    }
    finally
    {
      synchronized(this)
      {
        m_awaitingClient = false;
        // Close connections if some thread closed while we
        // were waiting for client
        if (m_fakeServerClosed)
        {
          close();
        }
      }
    }
  }

  public boolean connectClient(Object remote) throws IOException
  {
    synchronized(this)
    {
      m_closed = false;
    }
    boolean res = false;
    try
    {
      m_connection = BTFACADE.connect(SERVICE_NBR, (RemoteDevice) remote);
      if (m_connection != null)
      {
        m_input = m_connection.openDataInputStream();
        m_output = m_connection.openDataOutputStream();
        res = true;
      }
    }
    catch (IOException ioe)
    {
      synchronized(this)
      {
        if (!m_closed)
        {
          // Not interested in exception if we're closed
          throw ioe;
        }
      }
    }
    finally
    {
      synchronized(this)
      {
        if (m_closed)
        {
          close();
        }
      }
    }
    return res;
  }

  public StreamConnection getConnection() throws IOException
  {
    return m_connection;
  }

  public DataInputStream getInput()
  {
    return m_input;
  }

  public DataOutputStream getOutput()
  {
    return m_output;
  }
  
  /**
   * The BT server cannot be interrupted, so lets just
   * pretend we close the server. If the server gets a client while
   * in pretended closed mode, or when it time out,
   * we close connections for real.
   */
  public synchronized void pretendServerClose()
  {
    m_fakeServerClosed = true;
  }
  
  public synchronized boolean isAwaitingClient()
  {
    return m_awaitingClient;
  }

  public synchronized void close() throws IOException
  {
    IOException ioe = null;
    m_closed = true;
    // Close connection
    if (m_connection != null)
    {
      try
      {
        m_connection.close();
        m_connection = null;
      }
      catch (IOException e)
      {
        ioe = e;
      }
    }
    // Close input stream
    if (m_input != null)
    {
      try
      {
        m_input.close();
        m_input = null;
      }
      catch (IOException e)
      {
        ioe = e;
      }
    }
    // Close output stream
    if (m_output != null)
    {
      try
      {
        m_output.close();
        m_output = null;
      }
      catch (IOException e)
      {
        ioe = e;
      }
    }
    // Close server
    try
    {
      BTFACADE.closeServer(SERVICE_NBR);
      m_awaitingClient = false;
    }
    catch (IOException e)
    {
      ioe = e;
    }

    // Throw exception if we got any
    if (ioe != null)
    {
      throw ioe;
    }
  }
  
  public synchronized boolean isClosed()
  {
    return m_closed || m_fakeServerClosed;
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区蜜桃视频| 日韩三级视频在线看| 成人精品一区二区三区四区| 国产精品系列在线观看| 国产在线麻豆精品观看| 国产传媒欧美日韩成人| 国产精品一级在线| 成人黄色小视频| av不卡免费电影| 一本大道综合伊人精品热热| 色噜噜狠狠一区二区三区果冻| 日本乱人伦一区| 欧美精品在线一区二区三区| 欧美一卡在线观看| 国产婷婷精品av在线| 亚洲欧美日韩在线播放| 亚洲成人中文在线| 蜜桃精品视频在线| 成人免费av资源| 欧美日韩在线播放三区四区| 91精品欧美福利在线观看| 亚洲精品在线一区二区| 亚洲欧洲日韩女同| 美女一区二区视频| av男人天堂一区| 精品视频999| 久久久国际精品| 亚洲综合一区在线| 六月丁香综合在线视频| 懂色av一区二区三区蜜臀| 日本韩国一区二区| 精品国产乱码久久久久久1区2区 | 在线日韩av片| 欧美一区二区三区四区在线观看| 久久久久久久久久久99999| 亚洲欧美偷拍另类a∨色屁股| 免费在线观看一区| 99视频国产精品| 日韩一二三四区| 国产精品拍天天在线| 亚洲一区二区三区爽爽爽爽爽 | 粉嫩av一区二区三区在线播放| bt欧美亚洲午夜电影天堂| 欧美一卡二卡三卡| 亚洲免费观看视频| 国产乱子轮精品视频| 欧美熟乱第一页| 国产精品萝li| 久久疯狂做爰流白浆xx| 欧美在线看片a免费观看| 国产亚洲综合av| 秋霞电影网一区二区| 色久优优欧美色久优优| 欧美国产精品一区二区| 久久99久久久久| 欧美伊人久久久久久久久影院| 国产欧美视频一区二区三区| 全国精品久久少妇| 欧美人牲a欧美精品| 亚洲美女屁股眼交3| 国产激情视频一区二区在线观看| 91精品视频网| 日本亚洲免费观看| 欧美少妇bbb| 一区二区三区精品在线| 91老师国产黑色丝袜在线| 国产精品久久看| 福利电影一区二区三区| 精品日韩一区二区三区免费视频| 午夜精品久久久| 欧洲中文字幕精品| 亚洲高清免费在线| 欧美三级午夜理伦三级中视频| 一区二区三区中文字幕在线观看| av资源网一区| 亚洲精品高清在线观看| 在线观看日韩电影| 亚洲精品午夜久久久| 在线看国产日韩| 亚洲综合在线免费观看| 欧美天堂一区二区三区| 丝袜亚洲另类欧美综合| 3atv一区二区三区| 激情五月激情综合网| 国产女主播一区| 99精品国产91久久久久久| 亚洲欧美视频一区| 91成人国产精品| 日本va欧美va精品发布| 精品国产三级电影在线观看| 国产成人午夜视频| 一区二区三区成人在线视频| 欧美日韩成人综合| 狠狠v欧美v日韩v亚洲ⅴ| 国产欧美一区二区三区在线看蜜臀| 国产精品一色哟哟哟| 亚洲欧美日韩成人高清在线一区| 欧美性感一区二区三区| 久久99精品网久久| 亚洲视频免费在线| 欧美精品99久久久**| 国产一区二区三区免费播放| 亚洲图片欧美激情| 欧美一区二区二区| 99久久精品国产毛片| 日韩av一级片| √…a在线天堂一区| 欧美年轻男男videosbes| 国产精品亚洲午夜一区二区三区 | 日韩av在线播放中文字幕| 2023国产一二三区日本精品2022| 91碰在线视频| 激情综合一区二区三区| 日韩一区日韩二区| 欧美大片在线观看一区| 色婷婷久久久综合中文字幕| 青青草97国产精品免费观看 | 国产日韩精品一区| 欧美精三区欧美精三区| av欧美精品.com| 九九**精品视频免费播放| 亚洲一区二区三区国产| 国产精品欧美久久久久一区二区| 欧美日韩国产中文| 色综合久久精品| 国产**成人网毛片九色| 三级一区在线视频先锋 | 欧美日本在线观看| 国产剧情一区二区三区| 日韩av一二三| 亚洲午夜电影在线| 最新中文字幕一区二区三区| 久久免费视频色| 日韩你懂的电影在线观看| 欧美在线制服丝袜| 91麻豆免费观看| 97国产一区二区| 粉嫩一区二区三区性色av| 久久精品国产亚洲a| 三级欧美韩日大片在线看| 亚洲与欧洲av电影| 一区二区三区免费看视频| 综合av第一页| 中文字幕亚洲电影| 一区视频在线播放| 国产精品色呦呦| 久久精品人人做人人爽人人| 欧美精品一区二区三区蜜桃| 精品国产免费视频| 久久尤物电影视频在线观看| 欧美成人精品福利| 精品久久国产字幕高潮| 日韩欧美国产午夜精品| 日韩一区二区在线观看| 日韩一区二区在线播放| 日韩免费一区二区| 久久精品一区蜜桃臀影院| 国产亚洲精品bt天堂精选| 国产婷婷一区二区| 国产精品美女久久久久久2018| 亚洲国产精华液网站w| 亚洲欧洲精品天堂一级| 国产精品久久久久久久久晋中 | 69久久夜色精品国产69蝌蚪网| 色偷偷88欧美精品久久久| 在线视频国产一区| 欧美日韩国产一区二区三区地区| 欧美日韩的一区二区| 欧美成人综合网站| 久久奇米777| 亚洲日本在线a| 污片在线观看一区二区| 蜜臀av在线播放一区二区三区| 精品一区二区三区视频在线观看| 国产综合久久久久久鬼色 | 在线日韩一区二区| 777a∨成人精品桃花网| 精品成人佐山爱一区二区| 国产精品国产三级国产aⅴ无密码| 中文字幕一区在线| 日产国产欧美视频一区精品| 精品亚洲成a人在线观看| av在线这里只有精品| 777久久久精品| 欧美国产日韩精品免费观看| 亚洲伊人伊色伊影伊综合网| 看电视剧不卡顿的网站| 菠萝蜜视频在线观看一区| 欧美专区日韩专区| 久久亚洲一区二区三区明星换脸 | 成人成人成人在线视频| 欧美婷婷六月丁香综合色| 精品国产乱码91久久久久久网站| 国产精品短视频| 久久精品国产精品亚洲红杏| 91在线观看污| xnxx国产精品| 天天综合色天天综合色h| 99久久久久免费精品国产 | 亚洲丝袜精品丝袜在线|