예제 #1
0
파일: P2pManager.cs 프로젝트: lanicon/EuNet
        /// <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);
        }
예제 #2
0
파일: P2pManager.cs 프로젝트: lanicon/EuNet
        /// <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);
            }
        }
예제 #3
0
파일: P2pManager.cs 프로젝트: lanicon/EuNet
        /// <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);
        }