Пример #1
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;
            }
        }
    }
Пример #2
0
    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);
    }
Пример #3
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);
        }
    }
Пример #4
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;
        }
    }
Пример #5
0
    //解析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();
    }
Пример #6
0
    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);
    }
Пример #7
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;
    }
Пример #8
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;
        }*/
        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;
    }
Пример #9
0
 public void parseKVMsg(ErlKVMessage message)
 {
     Log.Info(message.Cmd+"|"+ message.toJsonString());
 }
Пример #10
0
    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);
        }
    }