コード例 #1
0
 public void access(ErlConnect connect, ErlKVMessage message, ReceiveFun receiveFun, List<object> argus, long timeOut)
 {
     ByteBuffer data = new ByteBuffer();
     message.bytesWrite(data);
     //this._list.Add(new ErlEntry(connect, message.getPort(), receiveFun, argus, timeOut + TimeKit.getMillisTime()));
     connect.sendErl(data, 1, 1, 1, 1);
 }
コード例 #2
0
    public override void erlReceive(Connect connect, ErlKVMessage message)
    {
        if (!MiniConnectManager.IsRobot )
        {
            try
            {

               // Log.debug("===============this is socketReceive! cmd=" + message.Cmd + " jsonString " + message.toJsonString(),true);
            }
            catch (Exception exception)
            {
                //Log.debug(" =================== : " + exception.ToString(),true);
            }
        }
        string cmd = message.Cmd;
        switch (cmd)
        {
            case "r_ok":
            case "r_err":
            {
                int port = message.getPort();
                ErlEntry entry = this.removeReciveFun(port);
                if ((entry == null) || (entry.receiveFun == null))
                {
                    return;
                }
                entry.receiveFun(connect, message);
                break;
            }
            default:
                message.addValue("cmd", new ErlString(cmd));
                this.defaultHandle(connect, message);
                break;
        }
    }
コード例 #3
0
    public void readMessage(ErlKVMessage message)
    {
        string str = message.Cmd;
        Log.Info (str);
        Log.Info (message.toJsonString ());
        BaseFPort bf = null;
        foreach (string key in BaseFPort.portDict.Keys) {
            if (key.Contains (str)||str.Contains(key)) {
                bf = BaseFPort.portDict [key];
            }
        }
        if (bf != null) {
            bf.erlConnect = this.erlConnect;
            bf.read (message);
        } else {
            switch (str) {
            case "echo":
                ErlKVMessage _messag = new ErlKVMessage ("r_ok");
                _messag.addValue (null, new ErlInt (message.getPort ()));
                base.send (this.erlConnect, _messag);
                break;
            case "/yxzh/home_port/get_info":
                ErlKVMessage msg = new ErlKVMessage ("r_ok");
                msg.addValue (null, new ErlInt (message.getPort ()));
                msg.addValue ("msg", new ErlAtom ("home_not_open"));
                base.send (this.erlConnect, msg);
                break;
            case "/yxzh/ww_guild_child_fore_port/get_switch":
                ErlKVMessage msg1 = new ErlKVMessage ("r_ok");
                msg1.addValue (null, new ErlInt (message.getPort ()));
                msg1.addValue ("msg", new ErlByte (1));
                base.send (this.erlConnect, msg1);
                break;
            case "/yxzh/question/get_questions":
            case "/yxzh/week_award/init":
            case "/yxzh/expedition/get_base_info":
            case "/yxzh/opentask/get_opentasks":
            case "/yxzh/title/get_title":
            case "/yxzh/affiche/get_active_notice":

                //break;
            default:
                //Log.Error (message.Cmd);
                String strValue = ConfigHelper.GetAppConfig (message.Cmd);
                ErlKVMessage dmsg = new ErlKVMessage ("r_ok");
                dmsg.addValue (null, new ErlInt (message.getPort ()));
                ErlType[] et = StringKit.strToErlTypeArray (strValue);
                ErlArray ea = new ErlArray (et);
                dmsg.addValue ("msg", ea);
                base.send (this.erlConnect, dmsg);
                break;
            }
        }
    }
コード例 #4
0
ファイル: CashPort.cs プロジェクト: hebbaixue99/XJDemoServer
    public override void read(ErlKVMessage message)
    {
        if (this.erlConnect != null) {
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (message.getPort ()));
            msg.addValue ("msg", new ErlAtom ("error"));

            base.send (this.erlConnect, msg);

        }
    }
コード例 #5
0
 public void login(string url, int sid, string deviceId, string dns, string appVersion, CallBack callback)
 {
     //this.initUser = callback;
     this.callback = callback;
     ErlKVMessage message = new ErlKVMessage("/yxzh/user_login");
     message.addValue("url", new ErlString(url));
     message.addValue("server", new ErlInt(sid));
     message.addValue("deviceId", new ErlString(deviceId));
     message.addValue("dns", new ErlString(dns));
     message.addValue("version", new ErlString(appVersion));
     base.access(message);
 }
コード例 #6
0
    public override void erlReceive(Connect connect, ErlKVMessage message)
    {
        //this.readMessage (message);
        //Log.Info ("+++++111111111---222222222" + this.isSend + "+++++++++++");
        /*if (messagePort!=0&& messagePort == message.getPort()) {
            String strValue = ConfigHelper.GetAppConfig ("/yxzh/role/get_user");
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (messagePort));
            ErlType[] et = StringKit.strToErlTypeArray (strValue);
            ErlArray ea = new ErlArray (et);
            msg.addValue ("msg", ea);
            base.send (this.erlConnect, msg);
            if (this.erlConnect.dataBuffer.bytesAvailable > 0) {
                byte[] bts = new byte[this.erlConnect.dataBuffer.bytesAvailable];
                this.dataBuffer.readBytes (bts, 0, (int)this.erlConnect.dataBuffer.bytesAvailable);
                this.erlConnect.socket.Send (bts);
                this.dataBuffer = new ByteBuffer (bts);
            }
            isSend = true;
        }
        */
        FilterCmdManager.Instance.procPort (message.Cmd, message.getPort ());
        /*(if (message.Cmd == "/yxzh/miai_port/get_info") {
            messagePort = message.getPort();
            needProcPortDict.Add (message.getPort(), message.Cmd);
        }
        */
        Log.Info(message.Cmd+"|"+ message.toJsonString());
        //if (!isSend && this.erlConnect.transCallBack != null) {
            //this.erlConnect.transCallBack.Invoke ();

        int len = (int)this.dataBuffer.bytesAvailable;
        int pos = this.dataBuffer.position;

        byte[] tmp = new byte[len];
        byte[] bak = new byte[pos];

        this.dataBuffer.position = 0;
        this.dataBuffer.readBytes (bak, 0, pos);
        this.dataBuffer.readBytes (tmp, 0, len);
        this.dataBuffer.clear ();
        this.dataBuffer = new ByteBuffer (tmp);

        Log.Debug ("ConnectCount.getInstance().number=" + ConnectCount.getInstance ().number);
        //base.erlConnect.socket.Send (bak);

        if (this.dataBuffer.bytesAvailable > 0) {
            this.receive (null, this.isServer);
        }
    }
コード例 #7
0
    public override void read(ErlKVMessage message)
    {
        if (this.erlConnect != null) {
            string stype = (message.getValue ("type") as ErlString).Value;
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (message.getPort ()));
            String strValue = ConfigHelper.GetAppConfig (message.Cmd +"_" + stype);
            ErlType[] et = StringKit.strToErlTypeArray (strValue);
            ErlArray ub = new ErlArray (et);
            msg.addValue ("msg", ub);
            base.send (this.erlConnect, msg);

        }
    }
コード例 #8
0
ファイル: GuildPort.cs プロジェクト: hebbaixue99/XJDemoServer
    public override void read(ErlKVMessage message)
    {
        if (this.erlConnect != null) {
            //user 返回值
            String strValue = ConfigHelper.GetAppConfig (message.Cmd);
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (message.getPort ()));
            ErlType[] et = StringKit.strToErlTypeArray (strValue);
            ErlArray ea = new ErlArray (et);
            msg.addValue ("msg", ea);
            base.send (this.erlConnect, msg);

        }
    }
コード例 #9
0
ファイル: FbPort.cs プロジェクト: hebbaixue99/XJDemoServer
    public override void read(ErlKVMessage message)
    {
        if (this.erlConnect != null) {
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (message.getPort ()));
            //"sids":[],"number":0,"buy":0,"act_free":0,type:502,"pstep":41
            msg.addValue ("sids", new ErlArray (new ErlType[0]));
            msg.addValue ("number", new ErlInt (0));
            msg.addValue ("buy", new ErlInt (0));
            msg.addValue ("act_free", new ErlInt (0));
            msg.addValue ("type", new ErlInt (502));
            msg.addValue ("pstep", new ErlInt (41));

            base.send (this.erlConnect, msg);

        }
    }
コード例 #10
0
    public override void read(ErlKVMessage message)
    {
        string str = message.Cmd;
        switch (str) {
        case "/yxzh/active_port/get_active_info":
            //ErlArray eaa = (message.getValue ("sid") as ErlType).getValueString ();
            String strValus = (message.getValue ("sid") as ErlType).getValueString ();
            if (strValus != null && strValus.Split(',').Length > 1) {
                strValus = ConfigHelper.GetAppConfig (message.Cmd);
            } else {
                strValus = (message.getValue ("sid") as ErlType).getValueString ();
                strValus = ConfigHelper.GetAppConfig(message.Cmd + "_" + strValus);
            }
            if (this.erlConnect != null) {
                // /yxzh/title/get_title 返回值

                ErlKVMessage msg = new ErlKVMessage ("r_ok");
                msg.addValue (null, new ErlInt (message.getPort ()));
                //String strValue = ConfigHelper.GetAppConfig (message.Cmd);
                ErlType[] et = StringKit.strToErlTypeArray (strValus);
                ErlArray ea = new ErlArray (et);
                msg.addValue ("msg", ea);
                base.send (this.erlConnect, msg);

            }
            break;
        case "/yxzh/active_port/get_text_notice":
        default:
            if (this.erlConnect != null) {
                // /yxzh/title/get_title 返回值

                ErlKVMessage msg = new ErlKVMessage ("r_ok");
                msg.addValue (null, new ErlInt (message.getPort ()));
                String strValue = ConfigHelper.GetAppConfig (message.Cmd);
                ErlType[] et = StringKit.strToErlTypeArray (strValue);
                ErlArray ea = new ErlArray (et);
                msg.addValue ("msg", ea);
                base.send (this.erlConnect, msg);
                Log.Debug (msg.toJsonString ());

            }
            break;
        }
    }
コード例 #11
0
 public override void ping()
 {
     long num = TimeKit.getMillisTime();
        // if ((GameManager.Instance.lastUpdateTime != 0) && ((num - GameManager.Instance.lastUpdateTime) >= 0x3e8L))
        // {
        //     MaskWindow.NetLockMaskHide();
        // }
        // else
     {
         Connect[] connectArray = base.connectArray.ToArray();
         for (int i = connectArray.Length - 1; i >= 0; i--)
         {
             ErlConnect connect = connectArray[i] as ErlConnect;
             if (connect.Active && ((num - connect.PingTime) >= 0x3e8L))
             {
                 connect.PingTime = num;
                 ErlKVMessage message = new ErlKVMessage("echo");
                 DataAccess.getInstance().access(connect, message, new ReceiveFun(this.pingHandle), null, 0x4e20L);
             }
         }
     }
 }
コード例 #12
0
    public Boolean procCmd(int _port , BaseFPort fport)
    {
        if (needProcCmdDict.ContainsKey(_port)) {
            string cCmd = needProcCmdDict [_port];
            if (FilterCmdDict [cCmd]._count >= FilterCmdDict [cCmd]._beginCount) {
                String strValue = ConfigHelper.GetAppConfig (cCmd);
                ErlKVMessage msg = new ErlKVMessage ("r_ok");
                msg.addValue (null, new ErlInt (_port));
                ErlType[] et = StringKit.strToErlTypeArray (strValue);
                ErlArray ea = new ErlArray (et);
                msg.addValue ("msg", ea);
                Log.Info(msg.Cmd+"|"+ msg.toJsonString());
                ByteBuffer data = new ByteBuffer();
                //data.writeBytes (mybak);
                msg.bytesWrite(data);
                data.top = (int)data.bytesAvailable;
                byte[] tmpdata= new byte[(int)data.bytesAvailable];
                data.readBytes (tmpdata, 0, tmpdata.Length);

                fport.erlConnect.tmpBuffer.position = 0;
                Log.Info (fport.erlConnect.tmpBuffer) ;

                ByteBuffer tmp1 = new ByteBuffer();
                tmp1.writeBytes (tmpdata);
                //this.erlConnect.send (this.erlConnect.tmpBuffer);
                if (fport.erlConnect.socket.Connected) {
                    fport.send (fport.erlConnect, msg);
                } else {
                    Log.Info ("客户端已断开不再回传");
                }
                //base.erlConnect.socket.Send (bak);
                FilterCmdDict [cCmd]._count--;
                Log.Info ("处理完成的CMD[" + cCmd + "]");
                return true ;
            }

        }
        return false;
    }
コード例 #13
0
ファイル: TransPort.cs プロジェクト: hebbaixue99/XJDemoServer
    public override void erlReceive(Connect connect, ErlKVMessage message)
    {
        //this.readMessage (message);
        //Log.Info ("+++++111111111---222222222" + this.isSend + "+++++++++++");
        /*if (messagePort!=0&& messagePort == message.getPort()) {
            String strValue = ConfigHelper.GetAppConfig ("/yxzh/role/get_user");
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (messagePort));
            ErlType[] et = StringKit.strToErlTypeArray (strValue);
            ErlArray ea = new ErlArray (et);
            msg.addValue ("msg", ea);
            base.send (this.erlConnect, msg);
            if (this.erlConnect.dataBuffer.bytesAvailable > 0) {
                byte[] bts = new byte[this.erlConnect.dataBuffer.bytesAvailable];
                this.dataBuffer.readBytes (bts, 0, (int)this.erlConnect.dataBuffer.bytesAvailable);
                this.erlConnect.socket.Send (bts);
                this.dataBuffer = new ByteBuffer (bts);
            }
            isSend = true;
        }*/
        if (message.Cmd == "/yxzh/role/get_user") {
            messagePort = message.getPort();
        }

        Log.Info(message.Cmd+"|"+ message.toJsonString());
        //if (!isSend && this.erlConnect.transCallBack != null) {
            //this.erlConnect.transCallBack.Invoke ();
        if (!this.isServer) {
            ByteBuffer bf = (ByteBuffer)this.erlConnect.dataBuffer.Clone ();
            int pos = bf.position;
            bf.position = 0;
            this.erlConnect.socket.Send (bf.getArray ());
        }
        //this.erlConnect.dataBuffer.position = pos;

        //}
        isSend = false;
    }
コード例 #14
0
ファイル: LoginPort.cs プロジェクト: hebbaixue99/XJDemoServer
 public override void read(ErlKVMessage message)
 {
     if (this.erlConnect != null) {
         //登陆成功返回值
         ErlKVMessage msg = new ErlKVMessage ("r_ok");
         msg.addValue ("msg", new ErlAtom ("login_ok"));
         msg.addValue (null, new ErlInt (message.getPort ()));
         base.send (this.erlConnect, msg);
         //guild 返回值
         String strValue = ConfigHelper.GetAppConfig ("guild");
         msg = new ErlKVMessage ("guild");
         ErlType[] et = StringKit.strToErlTypeArray (strValue);
         ErlArray ea = new ErlArray (et);
         msg.addValue ("guild_skill", ea);
         base.send (this.erlConnect, msg);
         //chat 返回值
         strValue = ConfigHelper.GetAppConfig ("chat");
         msg = new ErlKVMessage ("chat");
         et = StringKit.strToErlTypeArray (strValue);
         ea = new ErlArray (et);
         msg.addValue ("msg2", ea);
         base.send (this.erlConnect, msg);
     }
 }
コード例 #15
0
    public void parseKVMsg(ErlKVMessage message)
    {
        ErlList data = message.getValue("msg") as ErlList;

        if (data == null)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            SweepManagement.Instance.clearData();
            if (callback != null)
            {
                callback();
                callback = null;
            }
            return;
        }
        int sweepTimes        = 0;
        int sweepCDTime       = 0;
        int sweepMissionSid   = 0;
        int sweepMissionLevel = 0;
        int state             = 0;
        int startTime         = 0;
        int pvpCount          = 0;
        int arrayID           = 0;

        int      length = data.Value.Length;
        ErlArray itemArray;
        string   key;
        int      value;

        for (int i = 0; i < length; i++)
        {
            itemArray = data.Value[i] as ErlArray;
            key       = itemArray.Value[0].getValueString();
            value     = StringKit.toInt(itemArray.Value[1].getValueString());
            switch (key)
            {
            case "pvp_num":
                pvpCount = value;
                break;

            case "start_time":
                startTime = value;
                break;

            case "cd":
                sweepCDTime = value;
                break;

            case "sweep_num":
                sweepTimes = value;
                break;

            case "fb_id":
                sweepMissionSid = value;
                break;

            case "fb_lv":
                sweepMissionLevel = value;
                break;

            case "state":
                state = value;
                break;

            case "array_id":
                arrayID = value;
                break;
            }
        }
        SweepManagement.Instance.initPvpNum(pvpCount);
        SweepManagement.Instance.SweepCostTime = sweepCDTime;
        SweepManagement.Instance.M_updateSweepInfo(state, sweepMissionSid, sweepMissionLevel, sweepTimes, startTime, arrayID);
    }
コード例 #16
0
ファイル: ArmyAddFPort.cs プロジェクト: xiney1986/SDKProject
 public override void read(ErlKVMessage message)
 {
     string str = (message.getValue("msg") as ErlAtom).Value;
 }
コード例 #17
0
//	/// <summary>
//	/// 一键转化经验通讯
//	/// </summary>
//	/// <param name="storageType">仓库类型(star_soul_storage=星魂仓库,star_soul_draw_storage=猎魂仓库)</param>
//	/// <param name="callback">Callback.</param>
//	public void autoExchangeAccess(string storageType,CallBack<int,StarSoul[]> callback) {
//		this.callback = callback;
//		ErlKVMessage message = new ErlKVMessage (FrontPort.STARSOUL_AUTO_CONVERT_EXP);
//		message.addValue ("storage_type", new ErlString (storageType));
//		access (message);
//	}

    /// <summary>
    /// 回调读取通讯
    /// </summary>
    /// <param name="message">Message.</param>
    public override void read(ErlKVMessage message)
    {
        int     index   = 0;
        ErlType erlType = message.getValue("msg") as ErlType;

        if (erlType is ErlArray)
        {
            ErlArray           arr      = erlType as ErlArray;
            StarSoulManager    manager  = StarSoulManager.Instance;
            StorageManagerment smanager = StorageManagerment.Instance;
            // 仓库类型
            string storageType = arr.Value [index++].getValueString();
            // 转化的经验
            int exchangeExp = StringKit.toInt(arr.Value [index++].getValueString());
            if (exchangeExp > 0)
            {
                manager.addStarSoulExp(exchangeExp);
            }
            StarSoul[] exchangeStarSouls          = null;
            StarSoul[] popStorageStarSouls        = null;
            bool       isUpdateStorageVersion     = false;
            bool       isUpdateHuntStorageVersion = false;
            // 转换经验的星魂
            ErlType exchangeStarSoulType = arr.Value [index++];
            if (exchangeStarSoulType is ErlArray)
            {
                ErlArray exchangeStarSoulArr = exchangeStarSoulType as ErlArray;
                if (exchangeStarSoulArr.Value.Length > 0)
                {
                    exchangeStarSouls = new StarSoul[exchangeStarSoulArr.Value.Length];
                    StarSoul starSoul = null;
                    for (int i = 0; i < exchangeStarSoulArr.Value.Length; i++)
                    {
                        if (storageType == "star_soul_storage")                          // 清理星魂仓库
                        {
                            starSoul = smanager.getStarSoul(exchangeStarSoulArr.Value[i].getValueString());
                            if (starSoul == null)
                            {
                                continue;
                            }
                            smanager.delStarSoulStorage(starSoul.uid);
                            isUpdateStorageVersion = true;
                        }
                        else if (storageType == "star_soul_draw_storage")                            // 清理猎魂仓库
                        {
                            starSoul = smanager.getHuntStarSoul(exchangeStarSoulArr.Value[i].getValueString());
                            if (starSoul == null)
                            {
                                continue;
                            }
                            smanager.delHuntStarSoulStorage(starSoul.uid);
                            isUpdateHuntStorageVersion = true;
                        }
                        exchangeStarSouls[i] = starSoul;
                    }
                }
            }
            if (isUpdateStorageVersion)
            {
                StorageManagerment.Instance.starSoulStorageVersion++;
            }
            if (isUpdateHuntStorageVersion)
            {
                StorageManagerment.Instance.huntStarSoulStorageVersion++;
            }
            if (callback != null)
            {
                callback(exchangeExp, exchangeStarSouls);
                callback = null;
            }
        }
        else
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, erlType.getValueString(), null);
            });
        }
    }
コード例 #18
0
 //解析ErlKVMessgae
 public void parseKVMsg(ErlKVMessage message)
 {
 }
コード例 #19
0
 public override void read(ErlKVMessage message)
 {
 }
コード例 #20
0
    public override void read(ErlKVMessage message)
    {
        parseKVMsgTypeInit(message);
        if (callback != null)
        {
            callback();
        }
//		base.read (message);
//
//		switch(sendType)
//		{
//		//初始化我的分享
//		case TYPE_INIT:
//			ErlType msg = message.getValue ("msg") as ErlType;
//
//			if (msg is ErlArray) {
//				ErlArray array = msg as ErlArray;
//
//				if (array == null)
//					return ;
//
//				FriendsShareManagerment.Instance.createFriendsShareByErlArray(array);
//
//				if (callback != null)
//					callback ();
//			}
//			else {
//				MonoBase.print (GetType () + "============error:"+msg);
//			}
//			break;
//
//		//一键分享给好友
//		case TYPE_SHARE:
//			ErlType msgSHARE = message.getValue ("msg") as ErlType;
//
//			if (msgSHARE is ErlArray) {
//				ErlArray array = msgSHARE as ErlArray;
//
//				if (array == null)
//					return ;
//
//				FriendsShareManagerment.Instance.setShareInfoUse();
//
//				int j = 0;
//				int sid = StringKit.toInt (array.Value [j++].getValueString ());
//				int num = StringKit.toInt (array.Value [j++].getValueString ());
//
//				MonoBase.print("-------------------------------------->>>>sid="+sid + ",num="+num);
//				if (callbackII != null)
//					callbackII(sid,num);
//			}
//			else {
//				MonoBase.print (GetType () + "============error:"+msgSHARE);
//			}
//			break;
//
//		//一键点赞
//		case TYPE_PRAISE:
//			ErlType msgPRAISE = message.getValue ("msg") as ErlType;
//
//			if (msgPRAISE is ErlArray) {
//				ErlArray array = msgPRAISE as ErlArray;
//
//				if (array == null)
//					return ;
//
//				int j = 0;
//				int sid = StringKit.toInt (array.Value [j++].getValueString ());
//				int num = StringKit.toInt (array.Value [j++].getValueString ());
//				int praiseNum = StringKit.toInt (array.Value [j++].getValueString ());
//				int money = StringKit.toInt (array.Value [j++].getValueString ());
//
//				FriendsShareManagerment.Instance.setPraiseNum(praiseNum);
//				FriendsShareManagerment.Instance.setPraiseInfoUse(praiseNum);
//				MonoBase.print("-------------------------------------->>>>sid="+sid + ",num="+num + ",use=" + praiseNum);
//				if (callbackIIII != null)
//					callbackIIII(sid,num,praiseNum,money);
//			}
//			else {
//				MonoBase.print (GetType () + "============error:"+msgPRAISE);
//			}
//			break;
//		}
    }
コード例 #21
0
 /// <summary>
 /// 回调读取通讯
 /// </summary>
 /// <param name="message">Message.</param>
 public override void read(ErlKVMessage message)
 {
     base.read(message);
     parseKVMsg(message);
 }
コード例 #22
0
    public override void read(ErlKVMessage message)
    {
        ErlType erl = message.getValue("msg") as ErlType;

        if (erl is ErlArray)
        {
            GodsWarFinalPoint           user;
            GodsWarFinalUserInfo        finaluser;
            List <GodsWarFinalUserInfo> fianlInfo;
            List <GodsWarFinalPoint>    infos;

            ErlArray erlarry = erl as ErlArray;
            int      pos     = 0;
            ErlArray array   = erlarry.Value[pos++] as ErlArray;
            if (array.Value.Length > 0)
            {
                fianlInfo = new List <GodsWarFinalUserInfo>();
                for (int i = 0; i < array.Value.Length; i++)
                {
                    finaluser = new GodsWarFinalUserInfo();
                    finaluser.bytesReadFive(array.Value[i] as ErlArray);
                    if (finaluser.uid != null)
                    {
                        fianlInfo.Add(finaluser);
                    }
                }
                if (fianlInfo != null)
                {
                    GodsWarManagerment.Instance.shenMoUserlist = fianlInfo;
                }
            }

            ErlArray tmp = erlarry.Value[pos++] as ErlArray;
            if (tmp.Value.Length > 0)
            {
                infos = new List <GodsWarFinalPoint>();

                for (int j = 0; j < tmp.Value.Length; j++)
                {
                    user = new GodsWarFinalPoint();
                    user.bytesRead(tmp.Value[j] as ErlArray);
                    if (user.localID != 0)
                    {
                        infos.Add(user);
                    }
                }
                if (infos != null)
                {
                    GodsWarManagerment.Instance.shenMoPointlist = infos;
                }
            }

            if (callback != null)
            {
                callback();
            }
        }
        else
        {
            MessageWindow.ShowAlert(erl.getValueString());
            if (callback != null)
            {
                callback = null;
            }
        }
    }
コード例 #23
0
    public override void read(ErlKVMessage message)
    {
        parseMsg(message);
//		Debug.LogWarning("WeeklyAwardFPort over");
        callback();
    }
コード例 #24
0
 //执行ping通信返回消息的执行方法
 protected virtual void pingHandle(ErlConnect connect, ErlKVMessage erlMessage)
 {
 }
コード例 #25
0
    public override void read(ErlKVMessage message)
    {
//		RankManagerment.Instance.combatList.Clear ();
//		RankManagerment.Instance.guildList.Clear ();
//		RankManagerment.Instance.moneyList.Clear ();
//		RankManagerment.Instance.pvpList.Clear ();
//		RankManagerment.Instance.roleList.Clear ();
//
//		long minNextUpdateTime = long.MaxValue;
//		ErlArray array = message.getValue ("msg") as ErlArray;
//		ErlType[] types = array.Value;
//		for (int i = 0; i < types.Length; i++) {
//			ErlArray arlItem = types[i] as ErlArray;
//			int type = StringKit.toInt(arlItem.Value[0].getValueString());
//			long nextUpdateTIme = StringKit.toInt(arlItem.Value[1].getValueString());
//			minNextUpdateTime = nextUpdateTIme < minNextUpdateTime ? nextUpdateTIme : minNextUpdateTime;
//			ErlArray values = arlItem.Value[2] as ErlArray;
//			for(int j = 0; j < values.Value.Length; j++)
//			{
//				ErlArray vs = values.Value[j] as ErlArray;
//				switch(type)
//				{
//				case RankManagerment.TYPE_COMBAT:
//					RankItemCombat rankItemCombat = new RankItemCombat();
//					rankItemCombat.uid = vs.Value[0].getValueString();
//					rankItemCombat.name = vs.Value[1].getValueString();
//					rankItemCombat.combat = StringKit.toInt(vs.Value[2].getValueString());
//					RankManagerment.Instance.combatList.Add(rankItemCombat);
//					if(rankItemCombat.uid == UserManager.Instance.self.uid)
//						RankManagerment.Instance.myRank[0] = j + 1;
//					break;
//
//				case RankManagerment.TYPE_PVP:
//					RankItemPVP rankItemPVP = new RankItemPVP();
//					rankItemPVP.uid = vs.Value[0].getValueString();
//					rankItemPVP.name = vs.Value[1].getValueString();
//					rankItemPVP.win = StringKit.toInt(vs.Value[2].getValueString());
//					RankManagerment.Instance.pvpList.Add(rankItemPVP);
//                    if(rankItemPVP.uid == UserManager.Instance.self.uid)
//                        RankManagerment.Instance.myRank[1] = j + 1;
//					break;
//
//				case RankManagerment.TYPE_MONEY:
//					RankItemMoney rankItemMoney = new RankItemMoney();
//					rankItemMoney.uid = vs.Value[0].getValueString();
//					rankItemMoney.name = vs.Value[1].getValueString();
//					rankItemMoney.money = StringKit.toInt(vs.Value[2].getValueString());
//					RankManagerment.Instance.moneyList.Add(rankItemMoney);
//                    if(rankItemMoney.uid == UserManager.Instance.self.uid)
//                        RankManagerment.Instance.myRank[2] = j + 1;
//					break;
//
//				case RankManagerment.TYPE_ROLE:
//					RankItemRole rankItemRole = new RankItemRole();
//					rankItemRole.uid = vs.Value[0].getValueString();
//					rankItemRole.name = vs.Value[1].getValueString();
//					rankItemRole.cardUid = vs.Value[2].getValueString();
//					rankItemRole.cardName = vs.Value[3].getValueString();
//					RankManagerment.Instance.roleList.Add(rankItemRole);
//                    if(rankItemRole.uid == UserManager.Instance.self.uid)
//                        RankManagerment.Instance.myRank[3] = j + 1;
//					break;
//
//				case RankManagerment.TYPE_GUILD:
//					RankItemGuild rankItemGuild = new RankItemGuild();
//					rankItemGuild.gid = vs.Value[0].getValueString();
//					rankItemGuild.name = vs.Value[1].getValueString();
//					rankItemGuild.score = StringKit.toInt(vs.Value[2].getValueString());
//					RankManagerment.Instance.guildList.Add(rankItemGuild);
//					break;
//				}
//
//			}
//
//		}
//
//		RankManagerment.Instance.nextUpdateTime = minNextUpdateTime;
        if (callback != null)
        {
            callback();
        }
    }
コード例 #26
0
 public void onTimer()
 {
     try
     {
         List<ErlEntry> list = this._list;
         lock (list)
         {
             foreach (ErlEntry entry in this._list.ToArray())
             {
                 if (entry.timeOut <= TimeKit.getMillisTime())
                 {
                     this._list.Remove(entry);
                     if (entry.receiveFun != null)
                     {
                         ErlKVMessage message = new ErlKVMessage("r_timeOut");
                         List<object> argus = entry.argus;
                         this.defaultHandle(entry.connect, message);
                     }
                 }
             }
         }
     }
     catch (Exception)
     {
     }
 }
コード例 #27
0
    public override void read(ErlKVMessage message)
    {
//		ErlType str = message.getValue ("msg") as ErlType;
//		if(str.getValueString() == "ok")
//		{
//			ErlType type = message.getValue ("info") as ErlType;
//			if(type is ErlArray)
//			{
//				ErlArray array = type as ErlArray;
//				int time = StringKit.toInt(array.Value[0].getValueString());
//				string rule = array.Value[1].getValueString();
//				int round = StringKit.toInt(array.Value[2].getValueString());
//				ErlArray arrays = array.Value[3] as ErlArray;
//				int max = arrays.Value.Length;
//				int index = 0;
//				List<PvpOppInfo> oppList = new List<PvpOppInfo>();
//				for (int i = 0; i < max; i++) {
//					ErlArray list = arrays.Value[i] as ErlArray;
//					string uid = list.Value[index++].getValueString();
//					string name = list.Value[index++].getValueString();
//                    string guildName = list.Value[index++].getValueString();
//					int headIcon = StringKit.toInt(list.Value[index++].getValueString());
//					long exp = StringKit.toLong(list.Value[index++].getValueString());
//					int state = StringKit.toInt(list.Value[index++].getValueString());
//					ErlArray lists = list.Value[index++] as ErlArray;
//					int combat = StringKit.toInt(list.Value[index++].getValueString());
//					index = 0;
//					int formation = StringKit.toInt(lists.Value[index++].getValueString());
//					ErlArray bArray =  lists.Value[index++] as ErlArray;
//					int beastSid = 0;
//					int beastExp = 0;
//					string beastUid = "";
//					if(bArray.Value.Length != 0)
//					{
//						beastSid = StringKit.toInt(bArray.Value[0].getValueString());
//						beastExp = StringKit.toInt(bArray.Value[1].getValueString());
//						beastUid = bArray.Value[2].getValueString();
//					}
//					ErlArray tArray = lists.Value[index++] as ErlArray;
//					index = 0;
//					List<PvpOppTeam> ptList = new List<PvpOppTeam>();
//					for (int j = 0; j < tArray.Value.Length; j++) {
//						ErlArray ea = tArray.Value[j] as ErlArray;
//						if(ea.Value.Length != 0)
//						{
//							int teamOppSid = StringKit.toInt(ea.Value[0].getValueString());
//							int teamOppExp = StringKit.toInt(ea.Value[1].getValueString());
//							string teamOppUid = ea.Value[2].getValueString();
//							int evoLevel = StringKit.toInt(ea.Value[3].getValueString());
//							int surLevel = StringKit.toInt(ea.Value[4].getValueString());
//							int teamOppIndex = j;
//							PvpOppTeam pt = new PvpOppTeam(teamOppSid,teamOppExp,teamOppIndex,teamOppUid,evoLevel,surLevel);
//							ptList.Add(pt);
//						}
//					}
//                    oppList.Add(new PvpOppInfo(uid, name, guildName, headIcon, exp, state, formation, beastSid, beastExp, beastUid, ptList.ToArray(), combat));
//				}
//				PvpInfoManagerment.Instance.createPvpInfo(time,rule,round,oppList.ToArray());
//			}
        parseKVMsg(message);
        if (callback != null)
        {
            callback();
        }
    }
コード例 #28
0
    public override void read(ErlKVMessage message)
    {
        ErlArray array = message.getValue("msg") as ErlArray;

        if (array != null)
        {
            int             pos  = 0;
            GodsWarUserInfo user = new GodsWarUserInfo();
            user.bigTeam        = array.Value [pos++].getValueString();
            user.smallTeam      = changeTeamtype(StringKit.toInt(array.Value [pos++].getValueString()));
            user.rank           = StringKit.toInt(array.Value [pos++].getValueString());
            user.numOfWinning   = StringKit.toInt(array.Value [pos++].getValueString());
            user.usedChallgeNum = StringKit.toInt(array.Value [pos++].getValueString());
            user.todayIntegral  = StringKit.toInt(array.Value [pos++].getValueString());
            user.totalIntegral  = StringKit.toInt(array.Value [pos++].getValueString());
            GodsWarManagerment.Instance.challengeCount    = user.usedChallgeNum;                                             //已经挑战的次数
            GodsWarManagerment.Instance.maxChallengeCount = GodsWarInfoConfigManager.Instance().getSampleBySid(1001).num[0]; //最大挑战次数
            ErlType  tmp        = new ErlType();
            ErlArray enemyArray = array.Value [pos++] as ErlArray;
            if (enemyArray != null)
            {
                List <GodsWarUserInfo> list = new List <GodsWarUserInfo> ();
                list.Clear();
                for (int i = 0; i < enemyArray.Value.Length; i++)
                {
                    tmp = enemyArray.Value [i];
                    ErlArray        empArray = tmp as ErlArray;
                    GodsWarUserInfo enemy    = new GodsWarUserInfo();
                    enemy.massPosition = i;
                    if (empArray.Value.Length == 0)
                    {
                        enemy.uid = "-1";
                        list.Add(enemy); continue;
                    }                //如果为0表示该位置没有对手
                    int tmpPos = 0;
                    enemy.serverName    = empArray.Value [tmpPos++].getValueString();
                    enemy.uid           = empArray.Value [tmpPos++].getValueString();
                    enemy.name          = empArray.Value [tmpPos++].getValueString();
                    enemy.headIcon      = StringKit.toInt(empArray.Value [tmpPos++].getValueString());
                    enemy.level         = StringKit.toInt(empArray.Value [tmpPos++].getValueString());
                    enemy.winScore      = StringKit.toInt(empArray.Value [tmpPos++].getValueString());
                    enemy.challengedWin = StringKit.toInt(empArray.Value [tmpPos++].getValueString()) == 1;
                    list.Add(enemy);
                }
                GodsWarManagerment.Instance.setEnemyList(list);
                GodsWarManagerment.Instance.self = user;
            }
            List <int> scores = new List <int>();
            ErlArray   mpt    = array.Value[pos++] as ErlArray;
            if (mpt.Value.Length != 0)
            {
                for (int i = 0; i < mpt.Value.Length; i++)
                {
                    scores.Add(StringKit.toInt(mpt.Value[i].getValueString()));
                }
                GodsWarManagerment.Instance.currentScores = scores;
            }
            else
            {
                GodsWarManagerment.Instance.currentScores = null;
            }

            if (callback != null)
            {
                callback();
            }
        }
        else
        {
            MessageWindow.ShowAlert((message.getValue("msg") as ErlType).getValueString());
            if (callback != null)
            {
                callback = null;
            }
        }
    }
コード例 #29
0
 public override void read(ErlKVMessage message)
 {
     this.parseKVMsg(message);
     this.callback();
 }
コード例 #30
0
    public override void read(ErlKVMessage message)
    {
        if (sendType == TYPE_INIT)
        {
            ErlType msg = message.getValue("msg") as ErlType;
            if (msg is ErlArray)
            {
                ErlArray array = msg as ErlArray;

                if (array == null)
                {
                    return;
                }

                SdkFriendManager.Instance.createsdkFriendsInfos(array);

                if (callBack != null)
                {
                    callBack();
                }
            }
        }
        else if (sendType == TYPE_SEND)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            if (msg != null)
            {
                if (callbacks != null)
                {
                    callbacks(msg);
                }
            }
        }
        else if (sendType == TYPE_GET)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            if (msg != null)
            {
                if (callbacks != null)
                {
                    callbacks(msg);
                }
            }
        }
        else if (sendType == TYPE_INVITE)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            if (msg != null)
            {
                if (callbacks != null)
                {
                    callbacks(msg);
                }
            }
        }
        else if (sendType == TYPE_PRIZE_INIT)
        {
            ErlType msg = message.getValue("msg") as ErlType;
            if (msg is ErlArray)
            {
                ErlArray array = msg as ErlArray;
                if (array == null)
                {
                    return;
                }
                if (callbackA != null)
                {
                    callbackA(array);
                }
            }
        }
        else if (sendType == TYPE_PRIZE_LEVELINIT)
        {
            ErlType msg = message.getValue("msg") as ErlType;
            if (msg is ErlArray)
            {
                ErlArray array = msg as ErlArray;
                if (array == null)
                {
                    return;
                }
                if (callbackA != null)
                {
                    callbackA(array);
                }
            }
        }
        else if (sendType == TYPE_REBATK_MSG)
        {
            ErlType msg = message.getValue("msg") as ErlType;
            if (msg is ErlArray)
            {
                ErlArray array = msg as ErlArray;

                if (callbackA != null)
                {
                    callbackA(array);
                }
            }
        }
        else if (sendType == TYPE_PRIZE_GET)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            if (msg != null)
            {
                if (callbacks != null)
                {
                    callbacks(msg);
                }
            }
        }
        else if (sendType == TYPE_ADD_SDKFRIEND)
        {
            string msg = (message.getValue("msg") as ErlType).getValueString();
            if (msg != null)
            {
                if (callbacks != null)
                {
                    callbacks(msg);
                }
            }
        }
    }
コード例 #31
0
 public override void read(ErlKVMessage message)
 {
     //海选报名前台不在乎结果
 }
コード例 #32
0
    public void access()
    {
        ErlKVMessage message = new ErlKVMessage(FrontPort.ARENA_APPLY);

        access(message);
    }
コード例 #33
0
    public override void read(ErlKVMessage message)
    {
        ErlType type = message.getValue("msg") as ErlType;

        if (type is ErlArray)
        {
            ErlArray stateArray = type as ErlArray;
            string   state      = stateArray.Value[0].getValueString();
            if (t == 0)
            {
                if (state == "0")
                {
                    NoticeManagerment.Instance.setAlchemyNum(NoticeManagerment.Instance.getAlchemyNum() + 1);
                    if (callback != null)
                    {
                        callback(1, 0);
                    }
                }
                else if (state == "1")
                {
                    NoticeManagerment.Instance.setAlchemyNum(NoticeManagerment.Instance.getAlchemyNum() + 1);
                    if (callback != null)
                    {
                        callback(2, 0);
                    }
                }
                else
                {
                    MessageWindow.ShowAlert(LanguageConfigManager.Instance.getLanguage("AlchemyContent03"));
                    if (callback != null)
                    {
                        callback(0, 0);
                    }
                }
            }
            else
            {
                int index = StringKit.toInt(state);
                if (index <= 10 && index >= 0)
                {
                    NoticeManagerment.Instance.setAlchemyNum(NoticeManagerment.Instance.getAlchemyNum() + 10);
                    if (callback != null)
                    {
                        long num = StringKit.toLong(stateArray.Value[1].getValueString());
                        callback(num, index);
                    }
                    else
                    {
                        MessageWindow.ShowAlert(LanguageConfigManager.Instance.getLanguage("AlchemyContent03"));
                        if (callback != null)
                        {
                            callback(-1, 0);
                        }
                    }
                }
            }
        }
        else
        {
            MessageWindow.ShowAlert(type.getValueString());
            if (callback != null)
            {
                callback = null;
            }
        }
    }
コード例 #34
0
    public void access(CallBack <string> callback)
    {
        ErlKVMessage message = new ErlKVMessage(FrontPort.ACTIVE_LIST);

        access(message);
    }
コード例 #35
0
 public override void read(ErlKVMessage message)
 {
     parseMsg(message);
 }
コード例 #36
0
    //处理后台信息
    public void initInfoByServer(ErlKVMessage message)
    {
        infoByServer = new GoddessAstrolabeInfo();

        ErlType msgStar = message.getValue("star_point") as ErlType;

        if (msgStar != null)
        {
            ErlArray arr = msgStar as ErlArray;
            infoByServer.openStars = new int[arr.Value.Length];
            for (int i = 0; i < arr.Value.Length; i++)
            {
                infoByServer.openStars [i] = StringKit.toInt((arr.Value [i] as ErlType).getValueString());
            }
        }

        ErlType msgStarScore = message.getValue("star_score") as ErlType;

        if (msgStarScore != null)
        {
            infoByServer.star_score = StringKit.toInt((msgStarScore as ErlType).getValueString());
        }

        ErlType msgAttr = message.getValue("attr") as ErlType;

        if (msgAttr != null && msgAttr is ErlList)
        {
            ErlList  arr = msgAttr as ErlList;
            ErlArray attrArray;
            string   name;
            for (int i = 0; i < arr.Value.Length; i++)
            {
                name      = ((arr.Value [i] as ErlArray).Value [0] as ErlType).getValueString();
                attrArray = (arr.Value [i] as ErlArray).Value [1] as ErlArray;
                if (name == "front")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.frontAddEffectInteger = getAttr [0];
                    infoByServer.frontAddEffectNumber  = getAttr [1];
                }
                else if (name == "middle")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.middleAddEffectInteger = getAttr [0];
                    infoByServer.middleAddEffectNumber  = getAttr [1];
                }
                else if (name == "behind")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.behindAddEffectInteger = getAttr [0];
                    infoByServer.behindAddEffectNumber  = getAttr [1];
                }
                else if (name == "all")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.allAddEffectInteger = getAttr [0];
                    infoByServer.allAddEffectNumber  = getAttr [1];
                }
                else if (name == "pve_attr")
                {
                    infoByServer.addPveAttr = ((arr.Value [i] as ErlArray).Value [1] as ErlType).getValueString();
                }
            }
        }

        ErlType msgFunc = message.getValue("func") as ErlType;

        if (msgFunc != null && msgFunc is ErlList)
        {
            ErlList arr = msgFunc as ErlList;
            string  name;
            int     num;
            for (int i = 0; i < arr.Value.Length; i++)
            {
                name = ((arr.Value [i] as ErlArray).Value [0] as ErlType).getValueString();
                num  = StringKit.toInt(((arr.Value [i] as ErlArray).Value [1] as ErlType).getValueString());
                if (name == "friend")
                {
                    infoByServer.addFriend = num;
                }
                else if (name == "equip_storage")
                {
                    infoByServer.addEquipStorage = num;
                }
                else if (name == "card_storage")
                {
                    infoByServer.addCardStorage = num;
                }
                else if (name == "max_pve")
                {
                    infoByServer.addPveUse = num;
                }
            }
        }

        integrateOpenStar();
    }
コード例 #37
0
 public override void read(ErlKVMessage message)
 {
     parseKVMsg(message);
     callback();
 }
コード例 #38
0
    //后台推送更新
    public void updateInfoByServer(ErlKVMessage message)
    {
        ErlType msgStar = message.getValue("star_point") as ErlType;

        if (msgStar != null)
        {
            ErlArray arr = msgStar as ErlArray;
            infoByServer.openStars = new int[arr.Value.Length];
            for (int i = 0; i < arr.Value.Length; i++)
            {
                infoByServer.openStars [i] = StringKit.toInt((arr.Value [i] as ErlType).getValueString());
            }
        }

        ErlType msgStarScore = message.getValue("star_score") as ErlType;

        if (msgStarScore != null)
        {
            infoByServer.star_score = StringKit.toInt((msgStarScore as ErlType).getValueString());
        }

        ErlType msgAttr = message.getValue("attr") as ErlType;

        if (msgAttr != null && msgAttr is ErlList)
        {
            ErlList  arr = msgAttr as ErlList;
            string   name;
            ErlArray attrArray;
            for (int i = 0; i < arr.Value.Length; i++)
            {
                name      = ((arr.Value [i] as ErlArray).Value [0] as ErlType).getValueString();
                attrArray = (arr.Value [i] as ErlArray).Value [1] as ErlArray;
                if (name == "front")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.frontAddEffectInteger = getAttr [0];
                    infoByServer.frontAddEffectNumber  = getAttr [1];
                }
                else if (name == "middle")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.middleAddEffectInteger = getAttr [0];
                    infoByServer.middleAddEffectNumber  = getAttr [1];
                }
                else if (name == "behind")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.behindAddEffectInteger = getAttr [0];
                    infoByServer.behindAddEffectNumber  = getAttr [1];
                }
                else if (name == "all")
                {
                    CardBaseAttribute[] getAttr = getAttrByErlArray(attrArray);
                    infoByServer.allAddEffectInteger = getAttr [0];
                    infoByServer.allAddEffectNumber  = getAttr [1];
                }
                else if (name == "pve_attr")
                {
                    infoByServer.addPveAttr = ((arr.Value [i] as ErlArray).Value [1] as ErlType).getValueString();
                }
            }
        }

        ErlType msgFunc = message.getValue("func") as ErlType;

        if (msgFunc != null && msgFunc is ErlList)
        {
            ErlList arr = msgFunc as ErlList;
            string  name;
            int     num;
            int     addNum = 0;
            for (int i = 0; i < arr.Value.Length; i++)
            {
                name   = ((arr.Value [i] as ErlArray).Value [0] as ErlType).getValueString();
                num    = StringKit.toInt(((arr.Value [i] as ErlArray).Value [1] as ErlType).getValueString());
                addNum = 0;
                if (name == "friend")
                {
                    addNum = num - infoByServer.addFriend;
                    infoByServer.addFriend = num;
                    FriendsManagerment.Instance.getFriends().addMaxSize(addNum);
                }
                else if (name == "equip_storage")
                {
                    addNum = num - infoByServer.addEquipStorage;
                    infoByServer.addEquipStorage = num;
                    StorageManagerment.Instance.updateEquipStorageMaxSpace(addNum);
                }
                else if (name == "card_storage")
                {
                    addNum = num - infoByServer.addCardStorage;
                    infoByServer.addCardStorage = num;
                    StorageManagerment.Instance.updateRoleStorageMaxSpace(addNum);
                }
                else if (name == "max_pve")
                {
                    addNum = num - infoByServer.addPveUse;
                    infoByServer.addPveUse = num;
                    UserManager.Instance.self.updatePvEPointMax(addNum);
                }
            }
        }

//		integrateOpenStar();
    }
コード例 #39
0
 public void sendServer(ErlConnect connect, ErlKVMessage message, ReceiveFun receiveFun, List<object> argus, long timeOut)
 {
     ByteBuffer data = new ByteBuffer();
     message.bytesWrite(data);
     //Log.Info ("+++"+string.Concat (data.getArray ()));
     //this._list.Add(new ErlEntry(connect, message.getPort(), receiveFun, argus, timeOut + TimeKit.getMillisTime()));
     connect.sendErl(data, 1, 1, 1, 1);
 }
コード例 #40
0
    public override void read(ErlKVMessage message)
    {
        ErlArray info = message.getValue("msg") as ErlArray;
        ErlArray donations;        // 捐献列表//
        ErlArray processPrizes;    // 进度奖励列表//

        if (info != null)
        {
            LastBattleManagement.Instance.lastBattlePhase = StringKit.toInt(info.Value[0].getValueString());
            // 未开启//
            if (LastBattleManagement.Instance.lastBattlePhase == LastBattlePhase.NOT_OPEN)
            {
                LastBattleManagement.Instance.clearData();
            }
            else
            {
                if (!compareTime())
                {
                    if (PlayerPrefs.HasKey(LastBattleManagement.lastBattleOldProcessKey + UserManager.Instance.self.uid))
                    {
                        PlayerPrefs.DeleteKey(LastBattleManagement.lastBattleOldProcessKey + UserManager.Instance.self.uid);
                    }
                    if (PlayerPrefs.HasKey(LastBattleManagement.lastbattleDonationKey + UserManager.Instance.self.uid))
                    {
                        PlayerPrefs.DeleteKey(LastBattleManagement.lastbattleDonationKey + UserManager.Instance.self.uid);
                    }
                    if (PlayerPrefs.HasKey(LastBattleManagement.lastBattleBossIDKey + UserManager.Instance.self.uid))
                    {
                        PlayerPrefs.DeleteKey(LastBattleManagement.lastBattleBossIDKey + UserManager.Instance.self.uid);
                    }
                    if (PlayerPrefs.HasKey(LastBattleManagement.lastBattleBossHpKey + UserManager.Instance.self.uid))
                    {
                        PlayerPrefs.DeleteKey(LastBattleManagement.lastBattleBossHpKey + UserManager.Instance.self.uid);
                    }
                }

                // 备战阶段//
                if (LastBattleManagement.Instance.lastBattlePhase == LastBattlePhase.PREPARE)
                {
                    // 最新进度//
                    LastBattleManagement.Instance.newProcess = StringKit.toInt(info.Value[1].getValueString());
                    // 已领取备战奖励条目//
                    processPrizes = info.Value[2] as ErlArray;
                    setProcessPrize(processPrizes);
                    // 女神鼓舞等级//
                    LastBattleManagement.Instance.nvBlessLv = StringKit.toInt(info.Value[3].getValueString());
                    // 上次挑战小怪关卡id//
                    LastBattleManagement.Instance.battleID = StringKit.toInt(info.Value[4].getValueString());
                    // 剩余小怪挑战次数//
                    LastBattleManagement.Instance.battleCount = StringKit.toInt(info.Value[5].getValueString());
                    // 挑战小怪连胜次数//
                    LastBattleManagement.Instance.battleWinCount = StringKit.toInt(info.Value[6].getValueString());
                    // 捐献商店下次刷新时间//
                    LastBattleManagement.Instance.donationNextUpdateTime = StringKit.toInt(info.Value[7].getValueString());
                    // 捐献列表//
                    donations = info.Value[8] as ErlArray;
                    updateDonationList(donations);
                }
                // boss战阶段//
                else if (LastBattleManagement.Instance.lastBattlePhase == LastBattlePhase.BOSS)
                {
                    // 最新进度//
                    LastBattleManagement.Instance.newProcess = StringKit.toInt(info.Value[1].getValueString());
                    // 已领取备战奖励条目//
                    processPrizes = info.Value[2] as ErlArray;
                    setProcessPrize(processPrizes);
                    // 女神鼓舞等级//
                    LastBattleManagement.Instance.nvBlessLv = StringKit.toInt(info.Value[3].getValueString());
                    // 击杀boss个数 //
                    LastBattleManagement.Instance.killBossCount = StringKit.toInt(info.Value[4].getValueString());
                    // 挑战boss//
                    LastBattleManagement.Instance.bossID = StringKit.toInt(info.Value[5].getValueString());
                    // 当前血量//
                    LastBattleManagement.Instance.currentBossHP = StringKit.toLong(info.Value[6].getValueString());
                    // 最大血量//
                    LastBattleManagement.Instance.bossTotalHP = StringKit.toLong(info.Value[7].getValueString());
                    // 剩余boss挑战次数//
                    LastBattleManagement.Instance.bossCount = StringKit.toInt(info.Value[8].getValueString());
                    // 下次boss挑战次数刷新时间//
                    if (info.Value[9].getValueString() == "0")
                    {
                        LastBattleManagement.Instance.nextBossCountUpdateTime = 0;
                    }
                    else
                    {
                        LastBattleManagement.Instance.nextBossCountUpdateTime = StringKit.toInt(info.Value[9].getValueString()) + CommandConfigManager.Instance.lastBattleData.bossBattleCountUpdateTime;
                    }
                }
                //  领奖阶段//
                else if (LastBattleManagement.Instance.lastBattlePhase == LastBattlePhase.AWARD)
                {
                    // 物资进度//
                    LastBattleManagement.Instance.newProcess = StringKit.toInt(info.Value[1].getValueString());
                    // 已领取备战奖励条目//
                    processPrizes = info.Value[2] as ErlArray;
                    setProcessPrize(processPrizes);
                }
            }

            if (callBack != null)
            {
                callBack();
                callBack = null;
            }
        }
    }
コード例 #41
0
 public override void read(ErlKVMessage message)
 {
     base.read(message);
     ErlType type = message.getValue("msg") as ErlType;
 }
コード例 #42
0
    //解析ErlKVMessgae
    public void parseKVMsg(ErlKVMessage message)
    {
        int      chapterType  = StringKit.toInt((message.getValue("type") as ErlType).getValueString()); //副本类型
        ErlArray kt           = message.getValue("kt") as ErlArray;                                      //活动副本
        ErlArray sids         = message.getValue("sids") as ErlArray;                                    //副本sid信息,不同副本不同的数据格式
        ErlType  number       = message.getValue("number") as ErlType;                                   //讨伐使用次数
        ErlType  buy          = message.getValue("buy") as ErlType;                                      //购买次数
        ErlType  step         = message.getValue("pstep") as ErlType;                                    //今日修炼最大通关 暂无用
        ErlList  storyTimes   = message.getValue("lv") as ErlList;                                       //剧情噩梦难度使用次数
        ErlType  practicetime = message.getValue("practicetime") as ErlType;                             //修炼副本倒计时
        //==================================爬塔
        ErlType  towerState    = message.getValue("isfight") as ErlType;                                 //可否挑战
        ErlArray reGetFirstSid = message.getValue("frees") as ErlArray;                                  //已经领取的sid列表
        ErlType  reset         = message.getValue("reset") as ErlType;                                   //爬塔已经重置的次数
        ErlType  lottery       = message.getValue("lottery") as ErlType;                                 //已经开宝箱的次数
        ErlType  lottery_buy   = message.getValue("lottery_buy") as ErlType;                             //已经购买的开宝箱次数

        if (practicetime != null)
        {
            FuBenManagerment.Instance.practiceDueTime = StringKit.toInt(practicetime.getValueString());
        }

        if (chapterType == ChapterType.STORY)
        {
            int[][]  storySids = new int[sids.Value.Length][];
            ErlArray temp;
            for (int i = 0; i < storySids.Length; i++)
            {
                temp              = sids.Value [i] as ErlArray;
                storySids [i]     = new int[3];
                storySids [i] [0] = StringKit.toInt((temp.Value [0] as ErlType).getValueString());                  //sid
                storySids [i] [1] = StringKit.toInt((temp.Value [1] as ErlType).getValueString());                  //step
                storySids [i] [2] = 0;
            }

            if (storyTimes != null && storySids != null && storySids.Length > 0)
            {
                int      sidTemp;
                ErlArray tempErl;
                for (int i = 0; i < storyTimes.Value.Length; i++)
                {
                    tempErl = storyTimes.Value [i] as ErlArray;
                    sidTemp = StringKit.toInt((tempErl.Value [0] as ErlType).getValueString());                      //sid
                    for (int j = 0; j < storySids.Length; j++)
                    {
                        if (storySids [j] [0] == sidTemp)
                        {
                            storySids [j] [2] = StringKit.toInt((tempErl.Value [1] as ErlType).getValueString());
                        }
                    }
                }
            }
            if (needSend(chapterType))
            {
                FuBenManagerment.Instance.updateStory(storySids);
            }
        }
        else if (chapterType == ChapterType.WAR)
        {
            int[] warSids = new int[sids.Value.Length];
            for (int i = 0; i < warSids.Length; i++)
            {
                warSids [i] = StringKit.toInt((sids.Value [i] as ErlType).getValueString());
            }
            FuBenManagerment.Instance.updateWar(warSids, StringKit.toInt(number.getValueString()), StringKit.toInt(buy.getValueString()));
        }
        else if (chapterType == ChapterType.TOWER_FUBEN)              //初始化爬塔信息
        {
            int[] towerSid     = new int[sids.Value.Length];          //爬塔通关mission sid
            int[] firtReadySid = new int[reGetFirstSid.Value.Length]; //已经领取首次宝箱的
            for (int i = 0; i < towerSid.Length; i++)
            {
                towerSid[i] = StringKit.toInt((sids.Value[i] as ErlType).getValueString());
            }
            for (int j = 0; j < firtReadySid.Length; j++)
            {
                firtReadySid[j] = StringKit.toInt((reGetFirstSid.Value[j] as ErlType).getValueString());
            }
            FuBenManagerment.Instance.updateTower(towerSid, StringKit.toInt(towerState.getValueString()), firtReadySid, StringKit.toInt(reset.getValueString()), StringKit.toInt(lottery.getValueString()), StringKit.toInt(lottery_buy.getValueString()));
        }
        else if (chapterType == ChapterType.PRACTICE)
        {
            int[] praSids = new int[sids.Value.Length];
            for (int i = 0; i < praSids.Length; i++)
            {
                praSids [i] = StringKit.toInt((sids.Value [i] as ErlType).getValueString());
            }
            FuBenManagerment.Instance.updatePractice(praSids, StringKit.toInt(number.getValueString()));
        }
        else if (chapterType == ChapterType.ACTIVITY_CARD_EXP || chapterType == ChapterType.ACTIVITY_EQUIP_EXP ||
                 chapterType == ChapterType.ACTIVITY_MONEY || chapterType == ChapterType.ACTIVITY_SKILL_EXP)
        {
            int[][]  activeSids = new int[kt.Value.Length][];
            ErlArray temp;
            for (int i = 0; i < activeSids.Length; i++)
            {
                temp               = kt.Value [i] as ErlArray;
                activeSids [i]     = new int[5];
                activeSids [i] [0] = StringKit.toInt((temp.Value [0] as ErlType).getValueString());                  //类型
                activeSids [i] [1] = StringKit.toInt((temp.Value [1] as ErlType).getValueString());                  //次数
                activeSids [i] [2] = StringKit.toInt((temp.Value [2] as ErlType).getValueString());                  //最大次数


                ErlList timeInfo = temp.Value [3] as ErlList;
                activeSids[i][3] = StringKit.toInt((temp.Value[4] as ErlType).getValueString());//已经购买次数
                FuBenManagerment.Instance.updateActivityChapters(activeSids [i] [0], activeSids [i] [1], activeSids [i] [2],
                                                                 StringKit.toInt((temp.Value[3] as ErlType).getValueString()), activeSids[i][3]);
                //	activeSids [i] [3] = StringKit.toInt ((temp.Value [3] as ErlType).getValueString ());//开始时间
                //	activeSids [i] [4] = StringKit.toInt ((temp.Value [4] as ErlType).getValueString ());//结束时间
            }
        }
    }
コード例 #43
0
    public void procServerCmd()
    {
        if (this.erlConnect.ActiveTime >0 && TimeKit.getMillisTime () - this.erlConnect.ActiveTime >= 10000) {
            ErlKVMessage message = new ErlKVMessage ("echo");
            message.addValue (null, new ErlInt (ConnectCount.getInstance ().number));
            base.sendServer (this.erlConnect, message);
            //base.access (message);
        }else if (this.erlConnect.ActiveTime >0 && TimeKit.getMillisTime () - this.erlConnect.ActiveTime >= 1000){

        }
    }
コード例 #44
0
    public override void read(ErlKVMessage message)
    {
        /*
         * [[4000,38,[281479271678950,真龙·安拉,[],2,36500,1,[3,[],[[11442,0,281479271679959,0,0],[11344,0,281479271679971,0,0],[2,0,281479271678953,0,0],[11237,0,281479271679953,0,0],[11226,0,281479271679982,0,0]]],44560,9,10]],
         * [290,0,[281479271678949,坠星的克劳瑞,[],4,911600,1,[3,[],[[],[],[4,0,281479271677953,0,0],[11442,0,281479271680955,0,0],[]]],13802,6,0]]]}
         */
        ErlArray array = message.getValue("msg") as ErlArray;

        ErlArray   itemArray;
        PvpOppInfo player;
        int        ladderRank;
        int        prestige;
        int        medalSid;

        RankManagerment.Instance.ladderList.Clear();
        for (int i = array.Value.Length - 1; i >= 0; i--)
        {
            itemArray  = array.Value [i] as ErlArray;
            ladderRank = StringKit.toInt(itemArray.Value [0].getValueString());
            prestige   = StringKit.toInt(itemArray.Value [1].getValueString());
            medalSid   = StringKit.toInt(itemArray.Value [2].getValueString());

            player            = setOppInfo(itemArray.Value [3] as ErlArray);
            player.ladderRank = ladderRank;
            player.prestige   = prestige;
            player.medalSid   = medalSid;

            if (player.uid == UserManager.Instance.self.uid)
            {
                RankManagerment.Instance.myRank.Remove(type);
                RankManagerment.Instance.myRank.Add(type, ladderRank);
            }
            RankManagerment.Instance.ladderList.Add(player);
        }
        int nextUpdateTime = ServerTimeKit.getSecondTime() + 60;

        if (RankManagerment.Instance.nextTime.ContainsKey(type))
        {
            RankManagerment.Instance.nextTime [type] = nextUpdateTime;
        }
        else
        {
            RankManagerment.Instance.nextTime.Add(type, nextUpdateTime);
        }


        //附加sdk信息
        if (RankManagerment.Instance.ladderList != null && RankManagerment.Instance.ladderList.Count > 0)
        {
            string str = "";
            for (int i = 0; i < RankManagerment.Instance.ladderList.Count; i++)
            {
                if (i != RankManagerment.Instance.ladderList.Count - 1)
                {
                    str += RankManagerment.Instance.ladderList[i].uid + ",";
                }
                else
                {
                    str += RankManagerment.Instance.ladderList[i].uid;
                }
            }
            //foreach (PvpOppInfo each in RankManagerment.Instance.ladderList) {
            //    str += each.uid;
            //}

            if (str != "")
            {
                str = str.Substring(0, str.Length - 1);
                SdkFPort fp = FPortManager.Instance.getFPort <SdkFPort> ();

                fp.getSdkInfo(str, getSdkInfoCallBack);
            }
            else
            {
                getSdkInfoCallBack(null);
            }
        }
        else
        {
            getSdkInfoCallBack(null);
        }
    }
コード例 #45
0
 public void access(ErlKVMessage message, CallBack callback)
 {
     this.callback = callback;
     //ErlKVMessage message = new ErlKVMessage("/yxzh/role/get_user");
     base.access(message);
 }
コード例 #46
0
 protected virtual void pingHandle(ErlConnect connect, ErlKVMessage erlMessage)
 {
 }
コード例 #47
0
 public void parseKVMsg(ErlKVMessage message)
 {
     Log.Info(message.Cmd+"|"+ message.toJsonString());
 }
コード例 #48
0
ファイル: TransPort.cs プロジェクト: hebbaixue99/XJDemoServer
 public void sendUser()
 {
     String strValue = ConfigHelper.GetAppConfig ("/yxzh/role/get_user");
     ErlKVMessage msg = new ErlKVMessage ("r_ok");
     msg.addValue (null, new ErlInt (messagePort));
     ErlType[] et = StringKit.strToErlTypeArray (strValue);
     ErlArray ea = new ErlArray (et);
     msg.addValue ("msg", ea);
     base.send (this.erlConnect, msg);
 }
コード例 #49
0
 public override void erlReceive(Connect connect, ErlKVMessage message)
 {
     this.readMessage (message);
 }
コード例 #50
0
    public void getRoadAwaken()
    {
        ErlKVMessage message = new ErlKVMessage(FrontPort.HERO_ROAD_GET_HR_AWAKEN);

        access(message);
    }
コード例 #51
0
ファイル: TransPort.cs プロジェクト: hebbaixue99/XJDemoServer
 public override void read(ErlKVMessage message)
 {
 }
コード例 #52
0
    public void parseMessage(ByteBuffer socketbuffer)
    {
        int num = socketbuffer.readByte ();
        bool flag = (num & 8) != 0;
        bool flag2 = (num & 4) != 0;
        bool flag3 = (num & 2) != 0;
        ByteBuffer data = new ByteBuffer (this.length - 1);
        data.write (socketbuffer.toArray (), 0, this.length - 1);
        if (base.socket.Available >= 2) {
            byte[] buffer = new byte[2];
            base.socket.Receive (buffer, SocketFlags.None);
            this.length = ByteKit.readUnsignedShort (buffer, 0);
        } else {
            this.length = 0;
        }
        if (flag) {
            data = this.encryptionCode (data, this._receiveChallengeCode);
        }
        if (flag3) {
            data = new ByteBuffer (ZIPUtil.Decompress (data.toArray ()));
        }
        if (flag2) {
            int num2 = data.readInt ();
            ByteBuffer buffer4 = new ByteBuffer ();
            buffer4.writeBytes (data.toArray (), 0, data.top - data.position);
            int num3 = (int)ChecksumUtil.Adler32 (buffer4);
            if (num2 != num3) {
                //MonoBehaviour.print(string.Concat(new object[] { "crc is err,crcValue", num2, ",nowCrc=", num3 }));
                // Log.info
                return;
            }
        }
        ErlKVMessage message = new ErlKVMessage (null);

        message.bytesRead (data);

        if (base._portHandler != null) {
            base._portHandler.erlReceive (this, message);
        }
    }
コード例 #53
0
ファイル: TransPort.cs プロジェクト: hebbaixue99/XJDemoServer
 public void closeContect()
 {
     ErlKVMessage message = new ErlKVMessage ("/yxzh/close");
     base.send (message);
 }
コード例 #54
0
    public void clear()
    {
        ErlKVMessage message = new ErlKVMessage(FrontPort.CLEARDATA);

        access(message);
    }
コード例 #55
0
ファイル: TransPort.cs プロジェクト: hebbaixue99/XJDemoServer
    public override void erlReceive(Connect connect, ErlKVMessageClient message)
    {
        //this.readMessage (message);

        Log.Info(message.Cmd+"|"+ message.toJsonString());
        if (messagePort == message.getPort()) {
            String strValue = ConfigHelper.GetAppConfig ("/yxzh/role/get_user");
            ErlKVMessage msg = new ErlKVMessage ("r_ok");
            msg.addValue (null, new ErlInt (message.getPort ()));
            ErlType[] et = StringKit.strToErlTypeArray (strValue);
            ErlArray ea = new ErlArray (et);
            msg.addValue ("msg", ea);
            base.send (this.erlConnect, msg);
        }
        if (message.Cmd == "/yxzh/role/get_user") {
            messagePort = message.getPort();
        }
    }
コード例 #56
0
 public override void erlReceive(Connect connect, ErlKVMessage message)
 {
     long num = TimeKit.getMillisTime();
     connect.ping = num - connect.PingTime;
     connect.PingTime = 0L;
 }
コード例 #57
0
    public override void read(ErlKVMessage message)
    {
        switch (sendType)
        {
        //初始化我的分享
        case TYPE_INIT:
            if (parseKVMsgTypeInit(message) && callback != null)
            {
                callback();
            }
            break;

        //一键分享给好友
        case TYPE_SHARE:
            ErlType msgSHARE = message.getValue("msg") as ErlType;

            if (msgSHARE is ErlArray)
            {
                ErlArray array = msgSHARE as ErlArray;

                if (array == null)
                {
                    return;
                }

                FriendsShareManagerment.Instance.setShareInfoUse();

                int j   = 0;
                int sid = StringKit.toInt(array.Value [j++].getValueString());
                int num = StringKit.toInt(array.Value [j++].getValueString());
                if (callbackII != null)
                {
                    callbackII(sid, num);
                }
            }
            else
            {
                MonoBase.print(GetType() + "error:" + msgSHARE);
            }
            break;

        //一键点赞
        case TYPE_PRAISE:
            ErlType msgPRAISE = message.getValue("msg") as ErlType;

            if (msgPRAISE is ErlArray)
            {
                ErlArray array = msgPRAISE as ErlArray;

                if (array == null)
                {
                    return;
                }

                int j         = 0;
                int sid       = StringKit.toInt(array.Value [j++].getValueString());
                int num       = StringKit.toInt(array.Value [j++].getValueString());
                int praiseNum = StringKit.toInt(array.Value [j++].getValueString());
                int money     = StringKit.toInt(array.Value [j++].getValueString());

                FriendsShareManagerment.Instance.setPraiseNum(praiseNum);
                FriendsShareManagerment.Instance.setPraiseInfoUse(praiseNum);
                if (callbackIIII != null)
                {
                    callbackIIII(sid, num, praiseNum, money);
                }
            }
            else
            {
                MonoBase.print(GetType() + "error:" + msgPRAISE);
            }
            break;
        }
    }
コード例 #58
0
    public override void read(ErlKVMessage message)
    {
        ErlType type = message.getValue("msg") as ErlType;

        if (type is ErlArray)
        {
            ErlArray array = type as ErlArray;
            int      index = 0;
            //基础信息
            int shakeCount    = StringKit.toInt(array.Value [index++].getValueString());
            int reShakeCount  = StringKit.toInt(array.Value [index++].getValueString());
            int selfIntegral  = StringKit.toInt(array.Value [index++].getValueString());
            int topIntegral   = StringKit.toInt(array.Value [index++].getValueString());
            int guildIntegral = StringKit.toInt(array.Value [index++].getValueString());
            GuildManagerment.Instance.createGuildLuckyNvShenInfo(selfIntegral, guildIntegral, topIntegral, shakeCount, reShakeCount);

            //上次投掷结果,如果未领取状态
            ErlType  resultType  = array.Value [index++] as ErlType;
            ErlArray resultArray = resultType as ErlArray;

            if (resultArray.Value.Length == 5)
            {
                string [] results = new string[5];
                for (int i = 0; i < 5; ++i)
                {
                    results [i] = resultArray.Value [i].getValueString();
                }
                //生成结果缓存
                GuildManagerment.Instance.createGuildShakeResult(results);
            }
            else
            {
                //清空结果
                GuildManagerment.Instance.clearGuildShakeResult();
            }

            //排行榜信息
            RankManagerment.Instance.guildShakeList.Clear();
            ErlType  rankType  = array.Value [index++] as ErlType;
            ErlArray rankArray = rankType as ErlArray;
            if (rankArray.Value.Length > 0)
            {
                for (int i = 0; i < rankArray.Value.Length; i++)
                {
                    ErlArray temps = rankArray.Value [i] as ErlArray;
                    if (temps != null && temps.Value.Length == 3)
                    {
                        string             uid        = temps.Value [0].getValueString();
                        string             playerName = temps.Value [1].getValueString();
                        int                integral   = StringKit.toInt(temps.Value [2].getValueString());
                        GuildShakeRankItem temp       = new GuildShakeRankItem(uid, playerName, integral);
                        RankManagerment.Instance.guildShakeList.Add(temp);
                    }
                }
            }
            if (callback != null)
            {
                callback();
            }
        }
    }
コード例 #59
0
    public void TransParseMessage(ByteBuffer socketbuffer , bool isServer , ByteBuffer src)
    {
        try{
        int num = socketbuffer.readByte ();
        bool flag = (num & 8) != 0;
        bool flag2 = (num & 4) != 0;
        bool flag3 = (num & 2) != 0;
        ByteBuffer data = new ByteBuffer (this.length - 1);
        data.write (socketbuffer.toArray (), 0, this.length - 1);
        if ((this.dataBuffer.bytesAvailable) >= 2) {
            byte[] buffer = new byte[2];
            //base.socket.Receive (buffer, SocketFlags.None);
            this.dataBuffer.readBytes(buffer,0,2);
            this.length = ByteKit.readUnsignedShort (buffer, 0);

        } else {
            this.length = 0;
        }
        if (flag) {
            if (this.isServer) {
                data = this.encryptionCode (data, this._sendChallengeCode);
            } else {
                data = this.encryptionCode (data, this._receiveChallengeCode);
            }
        }
        if (flag3) {
            data = new ByteBuffer (ZIPUtil.Decompress (data.toArray ()));
        }
        if (flag2) {
            int num2 = data.readInt ();
            ByteBuffer buffer4 = new ByteBuffer ();
            buffer4.writeBytes (data.toArray (), 0, (int)data.bytesAvailable);
            int num3 = (int)ChecksumUtil.Adler32 (buffer4);
            if (num2 != num3) {
                Log.Error(string.Concat(new object[] { "crc is err,crcValue", num2, ",nowCrc=", num3 }));
                // Log.info
                //if (this.transCallBack != null) {
                //	this.transCallBack.Invoke ();
            //	}
                    int len = (int)this.dataBuffer.bytesAvailable;
                    int pos = this.dataBuffer.position;

                    byte[] tmp = new byte[len];
                    byte[] bak = new byte[pos];

                    this.dataBuffer.position = 0;
                    this.dataBuffer.readBytes (bak, 0, pos);
                    this.dataBuffer.readBytes (tmp, 0, len);
                    this.dataBuffer.clear ();
                    this.dataBuffer = new ByteBuffer (tmp);
                    if(!this.isServer){
                        base.socket.Send (bak);}

                    if (this.dataBuffer.bytesAvailable > 0) {
                        this.TransReceive (null, this.isServer);
                    }

                return;
            }
        }

            ErlKVMessage message = new ErlKVMessage (null);
            this.tmpBuffer = data;
            message.bytesRead (data);
            Log.Debug(string.Concat( data.getArray())+"++++++");
            this.myLen = this.dataBuffer.top;

            if (base._portHandler != null) {
                base._portHandler.erlReceive (this, message);

        }
        }
        catch(Exception e) {
            Log.Error (e.Message);
            if (this.dataBuffer.bytesAvailable > 0) {
                this.TransReceive (null, this.isServer);
            } else {
                int len = (int)this.dataBuffer.bytesAvailable;
                int pos = this.dataBuffer.position;

                byte[] tmp = new byte[len];
                byte[] bak = new byte[pos];

                this.dataBuffer.position = 0;
                this.dataBuffer.readBytes (bak, 0, pos);
                this.dataBuffer.readBytes (tmp, 0, len);
                this.dataBuffer.clear ();
                this.dataBuffer = new ByteBuffer (tmp);
                if (!this.isServer) {
                    base.socket.Send (bak);
                }

                if (this.dataBuffer.bytesAvailable > 0) {
                    this.TransReceive (null, this.isServer);
                }

            }
        }
    }
コード例 #60
0
ファイル: BaseFPort.cs プロジェクト: hebbaixue99/XJDemoServer
 public void sendServer(ErlConnect connect , ErlKVMessage message)
 {
     DataAccess.getInstance().sendServer(connect, message, null, null, 0x4e20L);
 }