/// <summary> /// The add appErrorInfo. /// </summary> /// <param name="appErrorInfo"> /// The appErrorInfo. /// </param> /// <returns> /// The <see cref="Task" />. /// </returns> public async Task <IdResult> AddAppErrorInfo(AppErrorInfo appErrorInfo) { appErrorInfo.Id = Guid.NewGuid().ToString(); await Task.Factory.StartNew(() => _allAppErrorInfos.Add(appErrorInfo)); return(new IdResult(appErrorInfo.Id)); }
/// <summary> /// To the azure model. /// </summary> /// <param name="appErrorInfo">The application error information.</param> /// <returns>AppErrorInfoAzure.</returns> public static AppErrorInfoAzure ToAzureModel(this AppErrorInfo appErrorInfo) { var azureModel = new AppErrorInfoAzure(); appErrorInfo.CopyTo(azureModel); return(azureModel); }
/// <summary> /// Adds the appErrorInfo. /// </summary> /// <param name="appErrorInfo"> /// The appErrorInfo. /// </param> /// <returns> /// Task{AddResult}. /// </returns> public async Task <IdResult> AddAppErrorInfo(AppErrorInfo appErrorInfo) { appErrorInfo.Id = Guid.NewGuid().ToString("N"); var azureModel = appErrorInfo.ToAzureModel(); return(await _azureManager.AddEntityAsync(azureModel)); }
public AppErrorInfo Cancle() { AppErrorInfo ret = _server.ClientCancle(this); if ((CommunicationStates.Connected == _client.CommunicationState) && (AppErrorInfo.APP_SUCESS == ret)) { _client.Disconnect(); } return(ret); }
public AppErrorInfo CancleAll() { AppErrorInfo ret = AppErrorInfo.APP_SUCESS; foreach (BaseServerClient client in _memberClientList) { byte tmpOprCodec; ret |= this.Cancle(client, out tmpOprCodec); } return(ret); }
public AppErrorInfo ClientCancle(BaseServerClient client) { AppErrorInfo ret = AppErrorInfo.APP_SUCESS; if (_tokenClientMap.ContainsKey(client.Token)) { _tokenClientMap.Remove(client.Token); _detailClientMap.Remove(client.Detail); } ret |= this.GropClientCancle(client); return(ret); }
/// <summary> /// Froms the azure model. /// </summary> /// <param name="azureModel">The azure model.</param> /// <returns>AppErrorInfo.</returns> public static AppErrorInfo FromAzureModel(this AppErrorInfoAzure azureModel) { if (azureModel == null) { return(null); } var domainModel = new AppErrorInfo(); azureModel.CopyTo(domainModel); return(domainModel); }
public AppErrorInfo GropClientCancle(BaseServerClient client) { AppErrorInfo ret = AppErrorInfo.APP_SUCESS; foreach (Group gropInst in _groups) { if (gropInst.ContainClient(client)) { byte tmpOprFaildCodec; ret |= this.ExitGroup(client, gropInst.Token, out tmpOprFaildCodec); } } return(ret); }
public AppErrorInfo ExitGroup(BaseServerClient client, string groupToken, out byte oprFaildCodec) { if (false == _tokenGroupsMap.ContainsKey(groupToken)) { oprFaildCodec = (byte)ExitGroupFaildCodec.Group_INEXISTANCE; return(AppErrorInfo.APP_FAILD); } Group willCanleFromGroup = _tokenGroupsMap[groupToken] as Group; AppErrorInfo ret = AppErrorInfo.APP_SUCESS; ret |= willCanleFromGroup.Cancle(client, out oprFaildCodec); if (AppErrorInfo.APP_SUCESS != ret) { return(ret); } //若Group已清空则Release //if (0 == willCanleFromGroup.MemberCount) //{ // ret |= __RemoveGroup(willCanleFromGroup); //} return(ret); }
public async Task Create() { // Действие var appErrorInfo = new AppErrorInfo { UserId = "User1Id", CurrentViewName = "Mission", DeviceModel = "Passion", DevicePlatform = "Android", DeviceVersion = "4.3", AppVersion = "1.1", ErrorData = "Connection failed again and again", ErrorTime = DateTime.UtcNow }; var resultsNew = await _controller.Post(appErrorInfo); // Утверждение Assert.AreEqual(OperationResultStatus.Success, resultsNew.Status); var appErrorInfoAdded = await _repository.GetAppErrorInfo(resultsNew.Id); Assert.AreEqual(appErrorInfoAdded.ErrorData, "Connection failed again and again"); }
public AppErrorInfo SendRadioMessage(BaseServerClient srcClient, byte[] content, out byte oprFaildCodec) { if (_tokenClientMap.ContainsKey(srcClient.Token)) { if (_radiorBuff.Contains(srcClient)) { Server server = srcClient.Server; foreach (BaseServerClient dstClient in _listenerBuff) { if (false == dstClient.Token.Equals(srcClient.Token)) { byte tmpOprFaildCodec; string dstToken = dstClient.Token; //AppErrorInfo p2pSendRet = server.Send(srcClient.Token, dstToken, content, out tmpOprFaildCodec); AppErrorInfo p2pSendRet = server.GroupSend(srcClient.Token, this.Token, dstToken, content, out tmpOprFaildCodec); if (AppErrorInfo.APP_SUCESS != p2pSendRet) { //这里进行的是无责任分发,故不处理目标客户端的错误 //Try Log } } } oprFaildCodec = (byte)ClientHeadCodec.RadioTransport_ReplySucess; return(AppErrorInfo.APP_SUCESS); } else { oprFaildCodec = (byte)RadioTransportFaildCodec.Trans_FORBIDDEN; return(AppErrorInfo.APP_FAILD); } } else { oprFaildCodec = (byte)RadioTransportFaildCodec.Client_UNBELONG; return(AppErrorInfo.APP_FAILD); } }
protected virtual void Client_MessageRecevied(object sender, MessageEventArgs e) { string sourMessageid = e.Message.MessageId; byte oprCodec; Hashtable parmMap; ServerOprInfoFilter(((ScsRawDataMessage)e.Message).MessageData, out oprCodec, out parmMap); switch (oprCodec) { case (int)ServerOprCodec.P2pTransport: { byte oprFaildCodec; AppErrorInfo ret = _server.Send(_token, parmMap["Token"] as string, parmMap["Content"] as byte[], out oprFaildCodec); if (AppErrorInfo.APP_SUCESS == ret) { //Reply Suc byte[] sucReply = new byte[1]; sucReply[0] = (byte)ClientHeadCodec.P2pTransport_ReplySucess; _client.SendMessage(new ScsRawDataMessage(sucReply, sourMessageid)); string logInfo = "{" + "ret:" + "P2pTransport => APP_SUCESS" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "to_token:" + parmMap["Token"] + "}" + "}"; _server.__AddLogItem(logInfo); } else { switch (oprFaildCodec) { case (byte)P2pTransportFaildCodec.Target_UNCONNECT: { //向源头打回错误报文 byte[] erroReply = new byte[2]; erroReply[0] = (byte)ClientHeadCodec.P2pTransport_ReplyFaild; erroReply[1] = (byte)P2pTransportFaildCodec.Target_UNCONNECT; _client.SendMessage(new ScsRawDataMessage(erroReply, sourMessageid)); string logInfo = "{" + "ret:" + "P2pTransport => Target_UNCONNECT" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "to_token:" + parmMap["Token"] + "}" + "}"; _server.__AddLogItem(logInfo); break; } case (byte)P2pTransportFaildCodec.Token_UNPARSE: { //向源头打回错误报文 byte[] erroReply = new byte[2]; erroReply[0] = (byte)ClientHeadCodec.P2pTransport_ReplyFaild; erroReply[1] = (byte)P2pTransportFaildCodec.Token_UNPARSE; _client.SendMessage(new ScsRawDataMessage(erroReply, sourMessageid)); string logInfo = "{" + "ret:" + "P2pTransport => Token_UNPARSE" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "to_token:" + parmMap["Token"] + "}" + "}"; _server.__AddLogItem(logInfo); break; } default: { string logInfo = "{" + "ret:" + "P2pTransport => default:错误码分支未实现" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "to_token:" + parmMap["Token"] + "}" + "}"; _server.__AddLogItem(logInfo); return; } } } break; } case (int)ServerOprCodec.CreateGroup: { string gropDetail = parmMap["GroupDetail"] as string; if (false == string.IsNullOrEmpty(gropDetail)) { string token; byte oprFaildCodec; AppErrorInfo ret = _server.CreateGroup(gropDetail, out token, out oprFaildCodec); if (AppErrorInfo.APP_SUCESS == ret) { byte [] sucReply = new byte[1 + ConstData.tokenLength]; sucReply[0] = (byte)ClientHeadCodec.CreateGroup_ReplySucess; Buffer.BlockCopy(Encoding.ASCII.GetBytes(token), 0, sucReply, 1, ConstData.tokenLength); _client.SendMessage(new ScsRawDataMessage(sucReply, sourMessageid)); string logInfo = "{" + "ret:" + "CreateGroup => APP_SUCESS" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_detail:" + gropDetail + "group_token:" + token + "}" + "}"; _server.__AddLogItem(logInfo); } else { switch (oprFaildCodec) { case (byte)CreateGroupFaildCodec.Detail_REPEAT: { byte[] errorReply = new byte[2]; errorReply[0] = (byte)ClientHeadCodec.CreateGroup_ReplyFaild; errorReply[1] = (byte)CreateGroupFaildCodec.Detail_REPEAT; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); string logInfo = "{" + "ret:" + "CreateGroup => Detail_REPEAT" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_detail:" + gropDetail + "}" + "}"; _server.__AddLogItem(logInfo); break; } default: { string logInfo = "{" + "ret:" + "CreateGroup => default:错误码分支未实现" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_detail:" + gropDetail + "}" + "}"; _server.__AddLogItem(logInfo); return; } } } } else { //空名称视为非法detail byte[] errorReply = new byte[2]; errorReply[0] = (byte)ClientHeadCodec.CreateGroup_ReplyFaild; errorReply[1] = (byte)CreateGroupFaildCodec.Detail_REPEAT; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); string logInfo = "{" + "ret:" + "CreateGroup => Detail_NULL" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_detail:" + gropDetail + "}" + "}"; _server.__AddLogItem(logInfo); } break; } case (int)ServerOprCodec.JoinGroup: { string token = parmMap["Token"] as string; byte listOrRadioFlag = Byte.Parse(parmMap["ClientState"].ToString()); byte oprFaildCodec; AppErrorInfo ret = _server.JoinGroup(this, token, listOrRadioFlag, out oprFaildCodec); if (AppErrorInfo.APP_SUCESS == ret) { byte[] sucReply = new byte[1]; sucReply[0] = (byte)ClientHeadCodec.JoinGroup_ReplySucess; _client.SendMessage(new ScsRawDataMessage(sucReply, sourMessageid)); string logInfo = "{" + "ret:" + "JoinGroup => APP_SUCESS" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_token:" + token + "}" + "}"; _server.__AddLogItem(logInfo); } else { switch (oprFaildCodec) { case (byte)JoinGroupFaildCodec.Client_REPEAT: { break; } case (byte)JoinGroupFaildCodec.Group_INEXISTANCE: { break; } default: { string logInfo1 = "{" + "ret:" + "CreateGroup => default:错误码分支未实现" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_token:" + token + "}" + "}"; _server.__AddLogItem(logInfo1); return; } } byte[] errorReply = new byte[1 + 1]; errorReply[0] = (byte)ClientHeadCodec.JoinGroup_ReplyFaild; errorReply[1] = (byte)oprFaildCodec; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); string logInfo2 = "{" + "ret:" + "JoinGroup => JoinGroup_ReplyFaild" + " , " + "info:" + "{" + "from_detail:" + this.Detail + "from_token:" + this.Token + "," + "group_token:" + token + "}" + "}"; _server.__AddLogItem(logInfo2); } break; } case (int)ServerOprCodec.ExitGroup: { string token = parmMap["Token"] as string; byte oprFaildCodec; AppErrorInfo ret = _server.ExitGroup(this, token, out oprFaildCodec); if (AppErrorInfo.APP_SUCESS == ret) { byte [] sucReply = new byte [1]; sucReply[0] = (byte)ClientHeadCodec.ExitGroup_ReplySucess; _client.SendMessage(new ScsRawDataMessage(sucReply, sourMessageid)); } else { switch (oprFaildCodec) { case (byte)ExitGroupFaildCodec.Client_UNBELONG: { break; } case (byte)ExitGroupFaildCodec.Group_INEXISTANCE: { break; } default: { throw new NotImplementedException(); } } byte[] errorReply = new byte[1 + 1]; errorReply[0] = (byte)ClientHeadCodec.ExitGroup_ReplyFaild; errorReply[1] = (byte)oprFaildCodec; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); } break; } case (int)ServerOprCodec.RadioTransport: { List <string> tokens = parmMap["Tokens"] as List <string>; byte[] content = parmMap["Content"] as byte[]; foreach (string gropToken in tokens) { byte oprFaildCodec; AppErrorInfo ret = _server.SendRadioMessage(this, gropToken, content, out oprFaildCodec); if (AppErrorInfo.APP_SUCESS == ret) { byte[] sucReply = new byte[1]; sucReply[0] = (byte)ClientHeadCodec.RadioTransport_ReplySucess; _client.SendMessage(new ScsRawDataMessage(sucReply, sourMessageid)); } else { switch (oprFaildCodec) { case (byte)RadioTransportFaildCodec.Trans_FORBIDDEN: { break; } case (byte)RadioTransportFaildCodec.Client_UNBELONG: { break; } case (byte)RadioTransportFaildCodec.Group_INEXISTANCE: { break; } default: { throw new NotImplementedException(); } } byte[] errorReply = new byte[2]; errorReply[0] = (byte)ClientHeadCodec.RadioTransport_ReplyFaild; errorReply[1] = (byte)oprFaildCodec; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); } } break; } case (int)ServerOprCodec.GroupOnlineList: { List <Group> grops = Server.Groups; List <CSCommunicateClass.GroupInfo> jsonGrops = new List <CSCommunicateClass.GroupInfo>(); foreach (Group grop in grops) { string token = grop.Token; string detail = grop.Detail; CSCommunicateClass.GroupInfo gropInfoInst = new CSCommunicateClass.GroupInfo(token, detail); jsonGrops.Add(gropInfoInst); } byte[] bytJson = JsonSerializtionFactory.JSON <CSCommunicateClass.GroupInfo>(jsonGrops); byte [] replyInfo = new byte [1 + bytJson.Length]; replyInfo[0] = (byte)ClientHeadCodec.GetOnlineGroup_ReplySucess; Buffer.BlockCopy(bytJson, 0, replyInfo, 1, bytJson.Length); _client.SendMessage(new ScsRawDataMessage(replyInfo, sourMessageid)); break; } case (int)ServerOprCodec.GroupClientOnlineList: { string gropToken = parmMap["Token"] as string; Group gropInst; AppErrorInfo ret = _server.GetGroup(gropToken, out gropInst); if (AppErrorInfo.APP_SUCESS == ret) { byte oprFaildCodec; List <CSCommunicateClass.ClientInfo> jsonList; AppErrorInfo ret2 = gropInst.GetOnlineClient(_token, out oprFaildCodec, out jsonList); if (AppErrorInfo.APP_SUCESS == ret2) { byte[] bytJson = JsonSerializtionFactory.JSON <CSCommunicateClass.ClientInfo>(jsonList); byte [] replyInfo = new byte [1 + bytJson.Length]; replyInfo[0] = (byte)ClientHeadCodec.GetGroupClient_ReplySucess; Buffer.BlockCopy(bytJson, 0, replyInfo, 1, bytJson.Length); _client.SendMessage(new ScsRawDataMessage(replyInfo, sourMessageid)); } else { byte [] errorReply = new byte [2]; errorReply[0] = (byte)ClientHeadCodec.GetGroupClient_ReplyFaild; errorReply[1] = (byte)oprFaildCodec; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); } } else { if (null == gropInst) { byte [] errorReply = new byte [2]; errorReply[0] = (byte)ClientHeadCodec.GetGroupClient_ReplyFaild; errorReply[1] = (byte)GetGoupClientFaildCodec.Group_INEXISTENCE; _client.SendMessage(new ScsRawDataMessage(errorReply, sourMessageid)); } } break; } case (int)ServerOprCodec.ClientCancle: { byte[] sucReplyInfo = new byte[1]; sucReplyInfo[0] = (byte)ClientHeadCodec.ClientCancle_ReplySucess; _client.SendMessage(new ScsRawDataMessage(sucReplyInfo, sourMessageid)); this.Cancle(); break; } default: { break; } } }
/// <summary> /// Adds new AppErrorInfo. /// </summary> /// <param name="appErrorInfo">The AppErrorInfo.</param> /// <returns> /// The <see cref="Task" />. /// </returns> public Task <IdResult> AddNewAppErrorInfo(AppErrorInfo appErrorInfo) { return(_appErrorInfoRepository.AddAppErrorInfo(appErrorInfo)); }
/// <summary> /// Posts the specified application error information. /// </summary> /// <param name="appErrorInfo">The application error information.</param> /// <returns>Task{AddResult}.</returns> public Task <IdResult> Post([FromBody] AppErrorInfo appErrorInfo) { appErrorInfo.UserId = User.Identity.IsAuthenticated ? this.GetCurrentUserId() : null; return(_appErrorInfoService.AddNewAppErrorInfo(appErrorInfo.ConvertToDomain())); }