<Unknow>
nnhy authored at 2010-12-13 17:13:26
7.03 KiB
X
//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Threading;
//using System.Net;

//namespace NewLife.PeerToPeer.Online
//{
//    /// <summary>
//    /// 在线用户
//    /// </summary>
//    public class PeerOnline
//    {
//        private Dictionary<Guid, Peer> _Peers = new Dictionary<Guid, Peer>();
//        /// <summary>在线对等方</summary>
//        public Dictionary<Guid, Peer> Peers
//        {
//            get { return _Peers; }
//            set { _Peers = value; }
//        }

//        private Timer _OnlineTimer;
//        /// <summary>Timer</summary>
//        public Timer OnlineTimer
//        {
//            get { return _OnlineTimer; }
//            set { _OnlineTimer = value; }
//        }

//        private Int32 _TimerInterval = 60;
//        /// <summary>Timer执行间隔 默认60秒钟 单位秒</summary>
//        public Int32 TimerInterval
//        {
//            get { return _TimerInterval; }
//            set { _TimerInterval = value; }
//        }

//        private Int32 _TimeOut = 60;
//        /// <summary>超时间隔 单位秒</summary>
//        public Int32 TimeOut
//        {
//            get { return _TimeOut; }
//            set { _TimeOut = value; }
//        }

//        private AutoResetEvent TimeAutoReset = new AutoResetEvent(false);

//        /// <summary>
//        /// 检查状态
//        /// </summary>
//        private Boolean AutoResetEventStaticState = true;

//        private Object lockObj = new Object();

//        /// <summary>
//        /// 
//        /// </summary>
//        public PeerOnline()
//        {
//            //TimeStart();
//        }

//        /// <summary>
//        /// 开始检查
//        /// </summary>
//        public void TimeStart()
//        {
//            if (OnlineTimer == null)
//                OnlineTimer = new Timer(new TimerCallback(OnTimedEvent), this, TimerInterval * 1000, TimerInterval * 1000);
//            else
//            {
//                AutoResetEventStaticState = true;
//                TimeAutoReset.Reset();
//            }

//        }

//        /// <summary>
//        /// 停止检查
//        /// </summary>
//        public void TimeStop()
//        {
//            AutoResetEventStaticState = false;
//        }

//        /// <summary>
//        /// 创建在线列表
//        /// </summary>
//        public void CreateOnlineUser()
//        {
//            if (Peers == null)
//                Peers = new Dictionary<Guid, Peer>();
//        }

//        /// <summary>
//        /// 添加在线用户
//        /// </summary>
//        /// <param name="guid"></param>
//        /// <param name="peer"></param>
//        /// <returns></returns>
//        public Boolean Add(Peer peer)
//        {
//            if (Peers.ContainsKey(peer.Token)) return false;
//            lock (lockObj)
//            {
//                if (Peers.ContainsKey(peer.Token)) return false;
//                Peers.Add(peer.Token, peer);
//            }
//            return true;
//        }

//        /// <summary>
//        /// 删除在线用户
//        /// </summary>
//        /// <param name="guid"></param>
//        /// <returns></returns>
//        public Boolean Delete(Guid guid)
//        {
//            if (!Peers.ContainsKey(guid)) return false;
//            lock (lockObj)
//            {
//                if (!Peers.ContainsKey(guid)) return false;
//                Peers.Remove(guid);
//            }
//            return true;
//        }

//        /// <summary>
//        /// 保存用户
//        /// </summary>
//        /// <param name="peer"></param>
//        /// <returns></returns>
//        public Boolean Save(Peer peer)
//        {
//            if (!Peers.ContainsKey(peer.Token)) return Add(peer);
//            Boolean modify = false;
//            lock (lockObj)
//            {
//                if (!Peers.ContainsKey(peer.Token)) return false;
//                Peers[peer.Token] = peer;
//            }
//            return true;
//        }

//        public Boolean Save(Guid token, List<IPAddress> privateIP, String publicIP)
//        {
//            if (Peers.ContainsKey(token)) return false;
//            Peer p = new Peer();
//            p.Token = token;
//            p.Private = privateIP;
//            p.Public = new IPEndPoint(IPAddress.Parse(publicIP), 0);
//            p.ActiveTime = DateTime.Now;

//            return Add(p);
//        }

//        ///// <summary>
//        ///// 维护在线列表,超离线
//        ///// </summary>
//        ///// <returns></returns>
//        //public Boolean OnlineTimer()
//        //{
//        //    return false;
//        //}

//        /// <summary>
//        /// 维护在线列表,Timer回调方法
//        /// </summary>
//        /// <param name="peerOnline"></param>
//        private static void OnTimedEvent(Object peerOnline)
//        {
//            //AutoResetEvent autoEvent = new AutoResetEvent(false);

//            //Console.WriteLine("Hello World!");

//            PeerOnline po = peerOnline as PeerOnline;

//            //if(!po.AutoResetEventStaticState)
//            //   po.

//            if (po.Peers == null || po.Peers.Count == 0)
//            {
//                Console.WriteLine("空!");

//                return;
//            }
//            lock (po.lockObj)
//            {
//                if (po.Peers == null || po.Peers.Count == 0) return;
//                Dictionary<Guid, Peer> rt = new Dictionary<Guid, Peer>();
//                foreach (Peer item in po.Peers.Values)
//                {
//                    if (item.ActiveTime.AddSeconds(po.TimeOut) > DateTime.Now)
//                        rt.Add(item.Token, item);
//                }
//                po.Peers = rt;

//            }

//            Console.WriteLine("检查在线超时-" + po.Peers.Count + "-" + DateTime.Now.ToString());


//        }

//    }

//    ///// <summary>
//    ///// 回调参数
//    ///// </summary>
//    //class TimeCallBackStruct
//    //{
//    //    private Object _lockObj;
//    //    /// <summary>锁定对像</summary>
//    //    public Object lockObj
//    //    {
//    //        get { return _lockObj; }
//    //        set { _lockObj = value; }
//    //    }

//    //    private Dictionary<Guid, Peer> _OnlineUser;
//    //    /// <summary>在线用户</summary>
//    //    public Dictionary<Guid, Peer> OnlineUser
//    //    {
//    //        get { return _OnlineUser; }
//    //        set { _OnlineUser = value; }
//    //    }

//    //    /// <summary>
//    //    /// 
//    //    /// </summary>
//    //    /// <param name="obj"></param>
//    //    /// <param name="onlineUser"></param>
//    //    public TimeCallBackStruct(Object obj, Dictionary<Guid, Peer> onlineUser)
//    //    {
//    //        lockObj = obj;
//    //        OnlineUser = onlineUser;
//    //    }
//    //}
//}