Esempio n. 1
0
    //解码器
    public override ProtocolBase Decode(byte[] readbuff, int start, int length)
    {
        ProtocolJson protocol = new ProtocolJson();

        protocol.bytes = new byte[length];
        Array.Copy(readbuff, start, protocol.bytes, 0, length);
        return(protocol);
    }
Esempio n. 2
0
        private List <ProtocolJson> Convert(List <DispatchProtocol> dispatchProtocols)
        {
            var protocols = new List <ProtocolJson>();

            foreach (var dp in dispatchProtocols)
            {
                var protocol = new ProtocolJson();
                protocol.Id              = dp.DispatchProtocolId;
                protocol.DepartmentId    = dp.DepartmentId;
                protocol.Name            = dp.Name;
                protocol.Code            = dp.Code;
                protocol.IsDisabled      = dp.IsDisabled;
                protocol.Description     = dp.Description;
                protocol.ProtocolText    = dp.ProtocolText;
                protocol.CreatedOn       = dp.CreatedOn;
                protocol.CreatedByUserId = dp.CreatedByUserId;
                protocol.UpdatedOn       = dp.UpdatedOn;
                protocol.MinimumWeight   = dp.MinimumWeight;
                protocol.UpdatedByUserId = dp.UpdatedByUserId;
                protocol.State           = (int)dp.State;
                protocol.Triggers        = new List <ProtocolTriggerJson>();
                protocol.Attachments     = new List <ProtocolTriggerAttachmentJson>();
                protocol.Questions       = new List <ProtocolTriggerQuestionJson>();

                if (dp.Triggers != null && dp.Triggers.Any())
                {
                    foreach (var t in dp.Triggers)
                    {
                        var trigger = new ProtocolTriggerJson();
                        trigger.Id       = t.DispatchProtocolTriggerId;
                        trigger.Type     = t.Type;
                        trigger.StartsOn = t.StartsOn;
                        trigger.EndsOn   = t.EndsOn;
                        trigger.Priority = t.Priority;
                        trigger.CallType = t.CallType;
                        trigger.Geofence = t.Geofence;

                        protocol.Triggers.Add(trigger);
                    }
                }

                if (dp.Attachments != null && dp.Attachments.Any())
                {
                    foreach (var a in dp.Attachments)
                    {
                        var attachment = new ProtocolTriggerAttachmentJson();
                        attachment.Id       = a.DispatchProtocolAttachmentId;
                        attachment.FileName = a.FileName;
                        attachment.FileType = a.FileType;

                        protocol.Attachments.Add(attachment);
                    }
                }

                if (dp.Questions != null && dp.Questions.Any())
                {
                    foreach (var q in dp.Questions)
                    {
                        var question = new ProtocolTriggerQuestionJson();
                        question.Id       = q.DispatchProtocolQuestionId;
                        question.Question = q.Question;
                        question.Answers  = new List <ProtocolQuestionAnswerJson>();

                        foreach (var a in q.Answers)
                        {
                            var answer = new ProtocolQuestionAnswerJson();
                            answer.Id     = a.DispatchProtocolQuestionAnswerId;
                            answer.Answer = a.Answer;
                            answer.Weight = a.Weight;

                            question.Answers.Add(answer);
                        }

                        protocol.Questions.Add(question);
                    }
                }

                protocols.Add(protocol);
            }

            return(protocols);
        }
Esempio n. 3
0
    //登录
    //协议参数:str用户名,str密码
    //返回协议:-1表示失败 0表示成功
    public void MsgLogin(Conn conn, ProtocolBase protoBase)
    {
        //获取数值
        int           start     = 0;
        ProtocolBytes protocol  = (ProtocolBytes)protoBase;
        string        protoName = protocol.GetString(start, ref start);
        string        id        = protocol.GetString(start, ref start);
        string        pw        = protocol.GetString(start, ref start);
        string        strFormat = "[收到登录协议]" + conn.GetAdress();

        Console.WriteLine(strFormat + " 用户名:" + id + " 密码:" + pw);
        //构建返回协议
        ProtocolBytes protocolRet = new ProtocolBytes();

        protocolRet.AddString("Login");
        //验证
        if (!DataMgr.instance.CheckPassWord(id, pw))
        {
            protocolRet.AddInt(-1);
            conn.Send(protocolRet);
            return;
        }
        //是否已经登录
        ProtocolBytes protocolLogout = new ProtocolBytes();

        protocolLogout.AddString("Logout");
        if (!Player.KickOff(id, protocolLogout))
        {
            protocolRet.AddInt(-1);
            conn.Send(protocolRet);
            return;
        }

        //获取玩家数据
        PlayerData playerData = DataMgr.instance.GetPlayerData(id);

        if (playerData == null)
        {
            protocolRet.AddInt(-1);
            conn.Send(protocolRet);
            return;
        }
        conn.player      = new Player(id, conn);
        conn.player.data = playerData;
        //事件触发
        ServNet.instance.handlePlayerEvent.OnLogin(conn.player);

        // 正常返回
        //protocolRet.AddInt(0);
        //protocolRet.AddString(id);
        //conn.Send(protocolRet);

        // 测试 Json
        RspMsg msg = new RspMsg();

        msg.rspType = 0;
        msg.strTips = "登录成功!";
        TMsg tg = new TMsg();

        msg.strJsData = JsonMapper.ToJson(tg);

        ProtocolJson ptemp = new ProtocolJson();

        ptemp.SetKeyCode("Login");
        ptemp.PushContent <RspMsg>(msg);
        conn.Send(ptemp);

        //// 测试probuffer
        //ProtocolPB pb = new ProtocolPB();
        //pb.SetKeyCode("Login");
        //ChatMsg cm = new ChatMsg();
        //cm.sender = "习近平:";
        //cm.msg = "特朗普今日访华,拉出去宰了!!";
        //List<string> pData = new List<string>();
        //for (int i = 0; i < 10; i++)
        //{
        //    pData.Add(i.ToString());
        //}
        //cm.data = pData;
        //TMsg tm = new TMsg();
        //cm.content = tm;
        //pb.Serialize<ChatMsg>(cm);
        //conn.Send(pb);
        return;
    }