//------------------------------------------------------------------------------------ //void _onLoginLockChange(int result, string data, string[] chdn, Dictionary<string, object> param) //{ // if (result != 0) return; // LoginServerInfo info = param["LoginServerInfo"] as LoginServerInfo; // info.bloginLock = true; // getZkClient().areadData(info.loginNode, false, _onLoginNodeData, param); //} //------------------------------------------------------------------------------------ // 解析login传过来的登陆数据 void _onLoginNodeData(int result, string data, string[] chdn, Dictionary <string, object> param) { LoginServerInfo info = param["LoginServerInfo"] as LoginServerInfo; if (info.bloginLock) { getZkClient().adelete(info.loginLockNode, null); info.bloginLock = false; } if (data == null || data == "") { return; } // 处理玩家登陆. // LoginNodeId string[] resul; char[] charSeparators = new char[] { ',', ':' }; resul = data.Split(charSeparators); if (resul.Length != 4) { EbLog.Error("Error format , the correct format should be 000000006,000000005 -> (accountId,LoginId) "); return; } LoginPlayer player = new LoginPlayer(); player.Account = resul[0]; player.LoginNodeId = resul[1]; player.TokenId = resul[2]; player.AccountId = int.Parse(resul[3]); player.ServerGroup = ProjectName; mLoginPlayer.Add(player.Account, player); }
public void SetServerListInfo(ServerListInfo pServerListInfo) { for (int i = 0; i < pServerListInfo.server_infos.Count; i++) { GameObject obj = (GameObject)Instantiate(m_pObj, m_pContentTransform); LoginServerInfo oInfo = obj.GetComponent <LoginServerInfo>(); //Vector3 v3 = new Vector3(0, m_pScrollRect.content.rect.height / 2 - (i + 0.5f) * oInfo.m_pButton.GetComponent<RectTransform>().rect.height, 0); ////obj.GetComponent<RectTransform>().localPosition = v3; ////obj.GetComponent<RectTransform>().position = v3; //obj.transform.position = v3; oInfo.SetServerInfo(pServerListInfo.server_infos[i]); } }
private void HandleRequestConfigCommand(RouterSession session, RouterMessage msg) { //Create LoginServerInfo to return LoginServerInfo response = new LoginServerInfo { success = true, instance_id = session.linkedInstance.id.ToString(), user_ports = session.linkedInstance.ports, config = this.session.remoteConfig }; //Respond msg.RespondJson(response, true); }
public void OnViewControllerLoginAction(ViewControllerLogin controller, string user, string password) { controller.visible = false; if (loginDelegate.isConnected) { return; } if (loginDelegate.status != LoginServerDelegate.Status.Diconnected) { return; } LoginServerInfo info = GetLoginServerConnectionInfo(); loginClient.Connect(info.ip, info.port); }
public void OnViewControllerCreateAccountAction(ViewControllerCreateAccount controller, string email, string password) { if (!CanCreateAccount()) { return; } LoginServerInfo info = GetLoginServerConnectionInfo(); loginClient.clientDelegate = new CreateAccountDelegate(this); loginClient.Connect(info.ip, info.port); data = new string[2]; data[0] = email; data[1] = password; viewControllerCreateAccount.visible = false; // show wait form }
//------------------------------------------------------------------------------------ // servers, 当前zookeeper中的 Loginserver的所有结点. internal void _onLoginServerList(int result, string data, string[] servers, Dictionary <string, object> param) { if (result != 0) { return; } if (servers == null) { servers = new string[0]; } List <string> remoteServer = servers.ToList(); List <string> localServer = mLoginServer.Keys.ToList <string>(); IEnumerable <string> add = remoteServer.Except(localServer); IEnumerable <string> del = localServer.Except(remoteServer); // 有新的Login server 结点要添加 foreach (var ser in add) { string[] resul; char[] charSeparators = new char[] { ',', ':' }; resul = ser.Split(charSeparators); if (resul.Length != 3) { EbLog.Error("Error format , the correct format should be 192.168.1.4:4689,000000005 , (ip:port,id) "); continue; } PhotonApp photon_app = (PhotonApp)ApplicationBase.Instance; //return photon_app.ZkClient; LoginServerInfo info = new LoginServerInfo(); info.ip = resul[0]; info.port = resul[1]; info.id = resul[2]; string ctlqNode = string.Format("{0}{1},{2}", mCurLoginNodePath, info.id, photon_app.NodeIdStr); string ctlcqNode = string.Format("{0}{1},{2}", mCurLoginCompleteNodePath, info.id, photon_app.NodeIdStr); string offlineNode = string.Format("{0}{1},{2}", mCurOfflineNodePath, info.id, photon_app.NodeIdStr); // 以下两个结点用来watch,create. string ctlqLock = string.Format("{0}{1},{2}", mCurLoginLockPath, info.id, photon_app.NodeIdStr); string ctlcqLock = string.Format("{0}{1},{2}", mCurLoginCompleteLockPath, info.id, photon_app.NodeIdStr); string offlineLock = string.Format("{0}{1},{2}", mCurOfflineLockPath, info.id, photon_app.NodeIdStr); info.loginNode = ctlqNode; info.loginComNode = ctlcqNode; info.loginLockNode = ctlqLock; info.loginLockComNode = ctlcqLock; info.offlineLock = offlineLock; info.offlineNode = offlineNode; //Dictionary<string, object> pa = new Dictionary<string, object>(); //pa["LoginServerInfo"] = info; //getZkClient().subscribeExists(info.loginLockNode, _onLoginLockChange, pa); getZkClient().subscribeExists(info.loginLockNode, null); getZkClient().subscribeExists(info.loginLockComNode, null); getZkClient().subscribeExists(info.offlineLock, null); mLoginServer.Add(ser, info); } // 有Login server 结点要删除. foreach (var ser in del) { LoginServerInfo info = null; mLoginServer.TryGetValue(ser, out info); getZkClient().unsubscribeExists(info.loginLockComNode); getZkClient().unsubscribeExists(info.offlineLock); mLoginServer.Remove(ser); } }