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; } } }
public void intoTowerFuben(int sid, int missionLevel, int arrayId, CallBack <int, int> callBack) { this.intoSid = sid; this.missionLevel = missionLevel; this.callback = callBack; ErlKVMessage message = new ErlKVMessage(FrontPort.FUBEN_INTO); message.addValue("fbid", new ErlInt(sid)); //fuben sid message.addValue("arrayid", new ErlInt(arrayId)); //fuben sid message.addValue("fb_lv", new ErlInt(missionLevel)); //missionLevel MonoBase.print("intot fuben cmd=" + message.Cmd + ",jsonString=" + message.toJsonString()); access(message); }
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); } }
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; } }
//解析ErlKVMessgae public void parseMsg(ErlKVMessage message) { ErlType type = message.getValue("msg") as ErlType; string msgg = type.getValueString(); if (msgg == "limit") { MessageWindow.ShowAlert(LanguageConfigManager.Instance.getLanguage("sli002l")); callback = null; } else if (msgg == "no_bloodline") { MessageWindow.ShowAlert(LanguageConfigManager.Instance.getLanguage("sliboold01")); callback = null; } else if (msgg == "uid_error") { MessageWindow.ShowAlert(LanguageConfigManager.Instance.getLanguage("sliboold02")); callback = null; } else if (msgg == "ok") {//血脉成功啦 callback(); } ErlArray arr = message.getValue("award") as ErlArray; if (arr == null || arr.Value.Length == 0) { return; } List <PrizeSample> prize = new List <PrizeSample>(); ErlArray arr1; try { for (int i = 0; i < arr.Value.Length; i++) { arr1 = arr.Value[i] as ErlArray; prize.Add(parse(arr1)); } } catch (System.Exception ex) { UnityEngine.Debug.LogError("ex:" + message.toJsonString()); } BloodManagement.Instance.prizes = prize.ToArray(); }
public override void read(ErlKVMessage message) { ErlArray arr = message.getValue(KEY_ARGU) as ErlArray; string type = (message.getValue(KEY_TARGET) as ErlAtom).Value; Award[] awards = new Award[arr.Value.Length]; ErlArray arr1; try { for (int i = 0; i < awards.Length; i++) { arr1 = arr.Value [i] as ErlArray; awards [i] = new Award(); awards [i].type = (arr1.Value [0]).getValueString(); parse(arr1.Value [1] as ErlArray, awards [i]); } } catch (System.Exception ex) { UnityEngine.Debug.LogError("ex:" + message.toJsonString()); } // MonoBase.print ("awardType-------------------------" + type); AwardManagerment.Instance.addAwards(type, awards); }
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; }
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; }
public void parseKVMsg(ErlKVMessage message) { Log.Info(message.Cmd+"|"+ message.toJsonString()); }
override public void erlReceive(Connect connect, ErlKVMessage message) { if (!MiniConnectManager.IsRobot && Debug.isDebugBuild == true) { if (message.Cmd == "match") { Debug.Log("this is socketReceive! cmd=" + message.Cmd); } else { Debug.Log("this is socketReceive! cmd=" + message.Cmd + " jsonString " + message.toJsonString()); } } string cmd = message.Cmd; if (cmd == "r_ok" || cmd == "r_err") { int port = message.getPort(); // 获取流水号 ErlEntry entry = removeReciveFun(port); if (entry == null || entry.receiveFun == null) { return; } entry.receiveFun(connect, message); } else { // 服务器的广播消息 message.addValue("cmd", new ErlString(cmd)); // 为js服务的代码 defaultHandle(connect, message); } }