Package example.chat

Source Code of example.chat.Player

package example.chat;


import java.util.HashSet;
import java.util.Iterator;
import java.util.Vector;
import com.yz.net.IoSession;



/**
* <p>
* 玩家
* </p>
* <br>
* @author 胡玮@ritsky
*
*/
public class Player {

  /**玩家id*/
  private long playerId;
 
  /**玩家昵称*/
  private String nickName;
 
  /**IoSessionId*/
  private long sessionId;
 
  /**验证码*/
  private int validateCode;
 
  /**好友ID列表*/
  private HashSet<Long> friendIdSet;
 
  /**最近访问时间*/
  public long lastAccessTime = System.currentTimeMillis();
 
  /**Player检查任务*/
  private CheckPlayerTask checktask;
 
  /**是否在线*/
  private boolean isOnline;
 
 
  public Player(long playerId, String nickName) {
    this.playerId = playerId;
    this.nickName = nickName;
  }
 
  public CheckPlayerTask getCheckTask() {
    synchronized (this) {
      return checktask;
    }
  }
 
  public void setCheckTask(CheckPlayerTask checkTask) {
    synchronized (this) {
      this.checktask = checkTask;
    }
  }
 
  public void isOnline(boolean val) {
    this.isOnline = val;
  }
 
  public boolean isOnline() {
    return isOnline;
  }
 
  public int getValidateCode(){
    return validateCode;
  }
 
  public void setValidateCode(int validateCode){
    this.validateCode = validateCode;
  }
 
  public long getSessionId() {
    return sessionId;
  }
 
  public void setSessionId(long sessionId) {
    this.sessionId = sessionId;
  }
 
 
 
  public long getPlayerId() {
    return playerId;
  }
 
  public String getNickName() {
    return nickName;
  }
 
  /**
   * <p>
   * 添加好友
   * </p>
   * <br>
   * @param player
   */
  public void addFriend(Player player) {
    this.friendIdSet.add(player.getPlayerId());
  }
 
 
  /**
   * <p>
   * 获取好友列表
   * </p>
   * <br>
   * @return
   */
  public Player[] getFriends() {
    Player[] players = null;
    synchronized (friendIdSet) {
      players = new Player[friendIdSet.size()];
      int index = 0;
      Iterator<Long> iter = friendIdSet.iterator();
     
      PlayerManager manager = PlayerManager.getInstance();
     
      while(iter.hasNext()) {
        Player player = manager.getPlayer(iter.next());
        players[index++] = player;
      }
    }
    return players;
  }
 
  /**
   * <p>
   * 放入消息,由于要支持CMWAP与CMNET,与网络交互的是数据管理层,我们这里把消息放入到数据管理层
   * </p>
   * <br>
   * @param message
   */
  public void putMessage(OutputMessage message) {
    PlayerManager manager = PlayerManager.getInstance();
    Vector<OutputMessage> vector = manager.getPlayerDatas(playerId);
    vector.add(message);
  }
 
 
  /**
   * <p>
   * 刷新消息,会根据session的类型来具体组织消息
   * </p>
   * <br>
   */
  public void flush() {
    IoSession session = BootChat.service.getIoSession(sessionId);
    if(session == null || session.isCloseing()){
      return;
    }
   
    ProtocolType type = (ProtocolType) session.getAttribute("TYPE");
   
    PlayerManager manager = PlayerManager.getInstance();
    Vector<OutputMessage> vector = manager.getPlayerDatas(playerId);
   
    switch(type) {
    case CMWAP:
      OutputMessage[] outMsgList = null;
      synchronized (vector) {
        outMsgList = new OutputMessage[vector.size()];
        for(int i=0; i<vector.size(); i++) {
          outMsgList[i] = vector.get(i);
        }
       
        vector.clear();
      }
     
      CmWapBindMessage wapMessage = MessageFactory.createCmWapBindMessage(outMsgList);
      session.write(wapMessage);
     
      break;
    case CMNET:
      synchronized (vector) {
        for(OutputMessage outMsg : vector) {
          session.write(outMsg);
        }
        vector.clear();
      }
      break;
    }
  }
}
TOP

Related Classes of example.chat.Player

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.