Пример #1
0
    //------------------------------------------------------------------------------------
    //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);
    }
Пример #2
0
    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]);
        }
    }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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
        }
Пример #6
0
    //------------------------------------------------------------------------------------
    // 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);
        }
    }