Exemplo n.º 1
0
        /// <summary>
        /// 处理管理主机消息
        /// </summary>
        /// <param name="peer">消息来源主机</param>
        /// <param name="msg">消息</param>
        private static void ServerMessage(Peer peer, Msg msg)
        {
            switch (msg.type)
            {
            case 11:
                HostInfo info = msg.data as HostInfo;
                peer.info.id = info.id;
                ResHost curHost = HostManager.Singleton[info.id.ToString()];
                if (curHost == null)
                {
                    return;
                }
                curHost.rGroup(info.groups);
                curHost.searchService = info.SearchService;
                HoldingServer.Singleton.UpdateServices(HostGroup.getServices(HoldingServer.Self));
                Group.send(new Msg(13));
                break;

            case 12:
                peer.send(new Msg(13, HostGroup.getServices(msg.data as string[])));
                break;

            case 22:
                peer.send(new Msg(21, HoldingServer.Client.remote));
                break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 从Xml格式的字符串生成HostList对象
        /// </summary>
        /// <param name="data">Xml格式的字符串</param>
        /// <returns>生成的HostList对象</returns>
        public static HostList FromXml(string data)
        {
            HostList res = new HostList();
            XElement xe  = XElement.Parse(data);

            foreach (XElement c in xe.Elements())
            {
                res.Add(ResHost.FromXml(c));
            }
            return(res);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 从所有分组中删除主机
 /// </summary>
 /// <param name="rh">要删除的主机</param>
 public static void remove(ResHost rh)
 {
     for (int i = 0; i < Singleton.Count; i++)
     {
         if (Singleton.BaseGet(i) as List <ResHost> != null)
         {
             List <ResHost> list = Singleton.BaseGet(i) as List <ResHost>;
             list.Remove(rh);
         }
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// 从指定分组中删除主机
 /// </summary>
 /// <param name="rh">要删除的主机</param>
 /// <param name="name">要从中删除的分组的名字</param>
 /// <returns></returns>
 public static bool remove(ResHost rh, string name)
 {
     try
     {
         if (Singleton.BaseGet(name) == null)
             Singleton.BaseSet(name, new List<ResHost>());
         List<ResHost> list = Singleton.BaseGet(name) as List<ResHost>;
         list.Remove(rh);
         return true;
     }
     catch { return false; }
 }
Exemplo n.º 5
0
 /// <summary>
 /// 判断指定分组是否包含指定主机
 /// </summary>
 /// <param name="rh">指定的主机</param>
 /// <param name="name">指定的分组的名字</param>
 /// <returns>指定分组是否包含指定主机</returns>
 public static bool contains(ResHost rh, string name)
 {
     try
     {
         if (Singleton.BaseGet(name) == null)
         {
             Singleton.BaseSet(name, new List <ResHost>());
         }
         List <ResHost> list = Singleton.BaseGet(name) as List <ResHost>;
         return(list.Contains(rh));
     }
     catch { return(false); }
 }
Exemplo n.º 6
0
 /// <summary>
 /// 从指定分组中删除主机
 /// </summary>
 /// <param name="rh">要删除的主机</param>
 /// <param name="name">要从中删除的分组的名字</param>
 /// <returns></returns>
 public static bool remove(ResHost rh, string name)
 {
     try
     {
         if (Singleton.BaseGet(name) == null)
         {
             Singleton.BaseSet(name, new List <ResHost>());
         }
         List <ResHost> list = Singleton.BaseGet(name) as List <ResHost>;
         list.Remove(rh);
         return(true);
     }
     catch { return(false); }
 }
Exemplo n.º 7
0
 /// <summary>
 /// HoldingServer初始化
 /// </summary>
 public HoldingServer()
 {
     singleton = this;
     self = new ResHost(new IPEndPoint(Functions.SelfIP, Configuration.Port), Dns.GetHostName());
     self.rGroup(Configuration.Groups);
     self.searchService = Functions.SearchService;
     lis = new Listener(Configuration.Port);
     lis.onAccept += new AcceptHandler(lis_onAccept);
     lis.onReceive += MessageDealer.UDPReceive;
     server = new ServerObject();
     client = new ClientObject();
     remoteAddress = Functions.RemoteIP;
     selfAddress = Functions.SelfIP;
     state = 0;
 }
Exemplo n.º 8
0
 /// <summary>
 /// HoldingServer初始化
 /// </summary>
 public HoldingServer()
 {
     singleton = this;
     self      = new ResHost(new IPEndPoint(Functions.SelfIP, Configuration.Port), Dns.GetHostName());
     self.rGroup(Configuration.Groups);
     self.searchService = Functions.SearchService;
     lis            = new Listener(Configuration.Port);
     lis.onAccept  += new AcceptHandler(lis_onAccept);
     lis.onReceive += MessageDealer.UDPReceive;
     server         = new ServerObject();
     client         = new ClientObject();
     remoteAddress  = Functions.RemoteIP;
     selfAddress    = Functions.SelfIP;
     state          = 0;
 }
Exemplo n.º 9
0
 /// <summary>
 /// 处理部分消息的FinalDeal事件
 /// </summary>
 /// <param name="peer">消息要发送到的主机</param>
 /// <param name="msg">消息</param>
 public static void onFinalDeal(Peer peer, Msg msg)
 {
     switch (msg.type)
     {
     case 13:
         if (peer.info.id == null)
         {
             msg.valid = false;
             return;
         }
         msg.valid = true;
         ResHost rh = HostManager.Singleton[peer.info.id.ToString()];
         msg.data = HostGroup.getServices(rh);
         break;
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// 处理主机断开
 /// </summary>
 /// <param name="peer">断开的主机</param>
 public static void onPeerQuit(Peer peer)
 {
     if (HoldingServer.State == 1)
     {
         if (peer.info.id == null)
         {
             return;
         }
         ResHost rh = HostManager.Singleton[peer.info.id.ToString()];
         if (rh != null)
         {
             rh.rGroup(new string[0]);
         }
     }
     else if (peer == HoldingServer.Client.server)
     {
         HoldingServer.Start(false);
     }
 }
Exemplo n.º 11
0
 /// <summary>
 /// 向动态列表中添加主机
 /// </summary>
 /// <param name="rh">要添加的主机</param>
 public static void AddDynamic(ResHost rh)
 {
     singleton.dynamicList.Add(rh);
 }
Exemplo n.º 12
0
 /// <summary>
 /// 向列表中添加主机
 /// </summary>
 /// <param name="host">要添加的主机</param>
 public void Add(ResHost host)
 {
     BaseSet(host.id.ToString(), host);
 }
Exemplo n.º 13
0
 /// <summary>
 /// 向列表中添加主机
 /// </summary>
 /// <param name="host">要添加的主机</param>
 public void Add(ResHost host)
 {
     BaseSet(host.id.ToString(), host);
 }
Exemplo n.º 14
0
 /// <summary>
 /// 获取指定主机所在域中的所有WebService
 /// </summary>
 /// <param name="rh">指定的主机</param>
 /// <returns>得到的WebService</returns>
 public static string[] getServices(ResHost rh)
 {
     return(getServices(rh.groups.ToArray()));
 }
Exemplo n.º 15
0
 /// <summary>
 /// 向静态列表中添加主机
 /// </summary>
 /// <param name="rh">要添加的主机</param>
 public static void AddStatic(ResHost rh)
 {
     singleton.staticList.Add(rh);
     Configuration.StaticHostList = singleton.staticList;
 }
Exemplo n.º 16
0
 /// <summary>
 /// 向动态列表中添加主机
 /// </summary>
 /// <param name="rh">要添加的主机</param>
 public static void AddDynamic(ResHost rh)
 {
     singleton.dynamicList.Add(rh);
 }
Exemplo n.º 17
0
 /// <summary>
 /// 向静态列表中添加主机
 /// </summary>
 /// <param name="rh">要添加的主机</param>
 public static void AddStatic(ResHost rh)
 {
     singleton.staticList.Add(rh);
     Configuration.StaticHostList = singleton.staticList;
 }
Exemplo n.º 18
0
 /// <summary>
 /// 从所有分组中删除主机
 /// </summary>
 /// <param name="rh">要删除的主机</param>
 public static void remove(ResHost rh)
 {
     for (int i = 0; i < Singleton.Count; i++)
     {
         if (Singleton.BaseGet(i) as List<ResHost> != null)
         {
             List<ResHost> list = Singleton.BaseGet(i) as List<ResHost>;
             list.Remove(rh);
         }
     }
 }
Exemplo n.º 19
0
 /// <summary>
 /// 判断指定分组是否包含指定主机
 /// </summary>
 /// <param name="rh">指定的主机</param>
 /// <param name="name">指定的分组的名字</param>
 /// <returns>指定分组是否包含指定主机</returns>
 public static bool contains(ResHost rh, string name)
 {
     try
     {
         if (Singleton.BaseGet(name) == null)
             Singleton.BaseSet(name, new List<ResHost>());
         List<ResHost> list = Singleton.BaseGet(name) as List<ResHost>;
         return list.Contains(rh);
     }
     catch { return false; }
 }
Exemplo n.º 20
0
 /// <summary>
 /// 获取指定主机所在域中的所有WebService
 /// </summary>
 /// <param name="rh">指定的主机</param>
 /// <returns>得到的WebService</returns>
 public static string[] getServices(ResHost rh)
 {
     return getServices(rh.groups.ToArray());
 }