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>
 /// 本机以管理主机身份开启分布式系统
 /// </summary>
 public void ServerStart()
 {
     client.remote = SelfAddress;
     lis.StartTcpAccept();
     state = 1;
     UpdateServices(HostGroup.getServices(self));
 }
Exemplo n.º 3
0
 /// <summary>
 /// 将本机从指定的分组中删除
 /// </summary>
 /// <param name="name">分组名</param>
 public void RemoveGroup(string name)
 {
     self.removeGroup(name);
     Configuration.Groups = self.groups.ToArray();
     if (state == 2)
     {
         client.server.send(new Msg(11, new HostInfo()));
     }
     else if (state == 1)
     {
         Group.send(new Msg(13));
         UpdateServices(HostGroup.getServices(self));
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// 将主机从指定分组中删除
        /// </summary>
        /// <param name="group">要从中删除的分组的名字</param>
        public void removeGroup(string group)
        {
            Peer peer = Peer.find(id);

            if (this.groups == null)
            {
                this.groups = new List <string>();
            }
            if (peer != null)
            {
                peer.quitFrom(group);
            }
            HostGroup.remove(this, group);
            groups.Remove(group);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 将主机添加到指定分组
        /// </summary>
        /// <param name="group">要添加到的分组的名字</param>
        public void addGroup(string group)
        {
            Peer peer = Peer.find(id);

            if (this.groups == null)
            {
                this.groups = new List <string>();
            }
            if (peer != null)
            {
                peer.addInto(group);
            }
            HostGroup.add(this, group);
            groups.Add(group);
        }
Exemplo n.º 6
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.º 7
0
        /// <summary>
        /// 刷新分组
        /// </summary>
        /// <param name="groups">新的分组</param>
        public void rGroup(string[] groups)
        {
            Peer peer = Peer.find(id);

            if (groups == null)
            {
                groups = new string[0];
            }
            if (this.groups == null)
            {
                this.groups = new List <string>();
            }
            for (int i = 0; i < this.groups.Count; i++)
            {
                if (!groups.Contains(this.groups[i]))
                {
                    if (peer != null)
                    {
                        peer.quitFrom(this.groups[i]);
                    }
                    HostGroup.remove(this, this.groups[i]);
                    this.groups.RemoveAt(i--);
                }
            }
            for (int i = 0; i < groups.Length; i++)
            {
                if (!this.groups.Contains(groups[i]))
                {
                    if (peer != null)
                    {
                        peer.addInto(groups[i]);
                    }
                    HostGroup.add(this, groups[i]);
                    this.groups.Add(groups[i]);
                }
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// 获取所有指定分组中的所有WebService
 /// </summary>
 /// <param name="groups">指定的分组</param>
 /// <returns>得到的WebService</returns>
 public static string[] getServices(string[] groups)
 {
     return(HostGroup.getServices(groups));
 }