//解码器 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); }
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); }
//登录 //协议参数: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; }