테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/src/com/aionemu/gameserver/world/container/LegionMemberContainer.java
package com.aionemu.gameserver.world.container;

import java.util.concurrent.ConcurrentHashMap;

import com.aionemu.gameserver.dao.LegionMemberDAO;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.team.legion.LegionMember;
import com.aionemu.gameserver.model.team.legion.LegionMemberEx;

/**
 * Container for storing Legion members by Id and name.
 * 
 * @author Simple
 */
public class LegionMemberContainer {

	private final ConcurrentHashMap<Integer, LegionMember> legionMemberById = new ConcurrentHashMap<>();

	private final ConcurrentHashMap<Integer, LegionMemberEx> legionMemberExById = new ConcurrentHashMap<>();
	private final ConcurrentHashMap<String, LegionMemberEx> legionMemberExByName = new ConcurrentHashMap<>();

	/**
	 * Add LegionMember to this Container.
	 * 
	 * @param legionMember
	 */
	public void addMember(LegionMember legionMember) {
		if (!legionMemberById.containsKey(legionMember.getObjectId()))
			legionMemberById.putIfAbsent(legionMember.getObjectId(), legionMember);
	}

	/**
	 * This method will return a member from cache
	 * 
	 * @param memberObjId
	 */
	public LegionMember getMember(int memberObjId) {
		return legionMemberById.get(memberObjId);
	}

	/**
	 * Add LegionMemberEx to this Container.
	 * 
	 * @param legionMember
	 */
	public void addMemberEx(LegionMemberEx legionMember) {
		if (legionMemberExById.containsKey(legionMember.getObjectId()) || legionMemberExByName.containsKey(legionMember.getName()))
			throw new IllegalStateException(legionMember.getName() + " is already cached");
		legionMemberExById.put(legionMember.getObjectId(), legionMember);
		legionMemberExByName.put(legionMember.getName(), legionMember);
	}

	/**
	 * This method will return a memberEx from cache
	 * 
	 * @param memberObjId
	 */
	public LegionMemberEx getMemberEx(int memberObjId) {
		return legionMemberExById.get(memberObjId);
	}

	/**
	 * This method will return a memberEx from cache
	 * 
	 * @param memberName
	 */
	public LegionMemberEx getMemberEx(String memberName) {
		return legionMemberExByName.get(memberName);
	}

	/**
	 * Remove LegionMember from this Container.
	 */
	public void remove(int legionMemberObjId) {
		legionMemberById.remove(legionMemberObjId);
		LegionMemberEx legionMemberEx = legionMemberExById.remove(legionMemberObjId);
		if (legionMemberEx != null)
			legionMemberExByName.remove(legionMemberEx.getName());
	}

	/**
	 * Returns true if legion is in cached by id
	 * 
	 * @param memberObjId
	 * @return true or false
	 */
	public boolean contains(int memberObjId) {
		return legionMemberById.containsKey(memberObjId);
	}

	/**
	 * Returns true if legion is in cached by id
	 * 
	 * @param memberObjId
	 * @return true or false
	 */
	public boolean containsEx(int memberObjId) {
		return legionMemberExById.containsKey(memberObjId);
	}

	/**
	 * Returns true if legion is in cached by id
	 * 
	 * @param memberName
	 * @return true or false
	 */
	public boolean containsEx(String memberName) {
		return legionMemberExByName.containsKey(memberName);
	}

	public void clear() {
		legionMemberById.clear();
		legionMemberExById.clear();
		legionMemberExByName.clear();
	}

	public void updateCachedPlayerName(String oldName, Player player) {
		legionMemberExByName.compute(oldName, (n, legionMember) -> {
			if (legionMember == null)
				legionMember = LegionMemberDAO.loadLegionMemberEx(player.getObjectId());
			else
				legionMember.setName(player.getName());
			legionMemberExByName.put(player.getName(), legionMember);
			return null;
		});
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 102,949
2 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 63,733
3 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,771
4 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 36,923
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 35,011
6 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,470
7 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 29,077
8 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
9 no_profile 보거스쪽지보내기 자기소개 아이디로 검색 전체게시물 26,731
10 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 17,020
알림 0