/// <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; } }
/// <summary> /// 本机以非管理主机身份开启分布式系统 /// </summary> /// <param name="peer">管理主机</param> public void ClientStart(Peer peer) { client.remote = peer.info.ipep.Address; client.server = peer; peer.onFinalDeal += MessageDealer.FinalDeal; peer.onPeerQuit += MessageDealer.PeerQuit; peer.send(new Msg(11, new HostInfo())); lis.StartTcpAccept(); state = 2; }
/// <summary> /// Tcp监听接受回调函数 /// </summary> /// <param name="sender">接受的主机</param> void lis_onAccept(Peer sender) { if (state == 2) { sender.send(new Msg(21, client.remote)); sender.close(); return; } sender.onMessage += MessageDealer.Message; sender.onFinalDeal += MessageDealer.FinalDeal; sender.onPeerQuit += MessageDealer.PeerQuit; }