/// <summary> /// P2P 그룹 아이디로 P2P 그룹을 찾음 /// </summary> /// <param name="groupId">찾을 P2P 그룹 아이디</param> /// <returns>찾은 P2P 그룹. 없다면 null</returns> public P2pGroup Find(ushort groupId) { lock (_p2pGroupMap) { P2pGroup p2pGroup = null; if (_p2pGroupMap.TryGetValue(groupId, out p2pGroup) == true) { return(p2pGroup); } } return(null); }
/// <summary> /// 새로운 P2P 그룹을 생성함 /// </summary> /// <returns>생성된 P2P 그룹</returns> public P2pGroup CreateP2pGroup() { lock (_p2pGroupMap) { if (_lastGenerateId == ushort.MaxValue) { return(null); } var id = GenerateId(); P2pGroup p2pGroup = new P2pGroup(id); _p2pGroupMap.Add(p2pGroup.Id, p2pGroup); return(p2pGroup); } }
/// <summary> /// P2P 그룹을 파괴함 /// </summary> /// <param name="groupId">P2P 그룹 아이디</param> /// <returns>성공여부</returns> public bool DestroyP2pGroup(ushort groupId) { P2pGroup p2pGroup = Find(groupId); if (p2pGroup == null) { return(false); } // P2P 내부 인원을 모두 내보낸다 p2pGroup.LeaveAll(); lock (_p2pGroupMap) { _p2pGroupMap.Remove(groupId); } return(true); }