public ValueTask <HPacket> ReceiveAsync() { if (ReceiveFormat == null) { throw new NullReferenceException($"Cannot receive structued data while {nameof(ReceiveFormat)} is null."); } return(ReceiveFormat.ReceivePacketAsync(this)); }
public async ValueTask <short> ReceivePacketAsync(IBufferWriter <byte> writer, CancellationToken cancellationToken = default) { if (ReceiveFormat == null) { ThrowHelper.ThrowNullReferenceException(nameof(ReceiveFormat)); } short packetId = 0; await _packetReceiveSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); try { Memory <byte> buffer = writer.GetMemory(ReceiveFormat.MinBufferSize); int received = 0; do { received = await ReceiveAsync(buffer, cancellationToken).ConfigureAwait(false); }while (received == 0); if (received != buffer.Length) { return(0); } if (!ReceiveFormat.TryReadHeader(buffer.Span, out int length, out packetId, out _)) { return(0); } writer.Advance(received); int packetBytesLeft = length - ReceiveFormat.MinPacketLength; // TODO: Populate the writer... } finally { PacketsReceived++; _packetReceiveSemaphore.Release(); } return(packetId); }
/// <summary> /// 测试传入字典类 /// </summary> /// <param name="receiveFormat">接收参数实体</param> /// <returns></returns> public JObject PostByClassDictionary(ReceiveFormat receiveFormat) { string ActionType = receiveFormat.ActionType; Dictionary <string, string> dic = receiveFormat.Dic; JObject obj = new JObject(); bool IsSuccess = false; string ErrorCode = string.Empty, ErrorMessage = string.Empty; foreach (var item in dic) { ErrorCode = item.Key; ErrorMessage = item.Value; } obj.Add("IsSuccess", IsSuccess); obj.Add("ErrorCode", ErrorCode); obj.Add("ErrorMessage", ErrorMessage); return(obj); }
/// <summary> /// 测试根据传入字典构建存储过程参数化-执行 /// </summary> /// <param name="receiveFormat"></param> /// <returns></returns> public HttpResponseMessage Exec_ProceDure(ReceiveFormat receiveFormat) { string connstr = DBHelp.GetConnectString(); OracleConnection conn = new OracleConnection(); conn.ConnectionString = connstr; conn.Open(); OracleCommand comm = new OracleCommand(); comm.Connection = conn; comm.CommandType = CommandType.StoredProcedure; comm.CommandText = "PRO_GETUSERSBYORGID"; //参数 List <OracleParameter> ps = new List <OracleParameter>(); //传入参数 OracleParameter p1 = new OracleParameter("IN_ORGID", OracleDbType.Varchar2); p1.Direction = ParameterDirection.Input; p1.Value = "672"; ps.Add(p1); //传出参数 OracleParameter p2 = new OracleParameter("OUT_COUNT", OracleDbType.Decimal); p2.Direction = ParameterDirection.Output; ps.Add(p2); OracleParameter p3 = new OracleParameter("Out_Result", OracleDbType.RefCursor); p3.Direction = ParameterDirection.Output; ps.Add(p3); foreach (OracleParameter p in ps) { comm.Parameters.Add(p); } OracleDataAdapter da = new OracleDataAdapter(comm); DataSet Out_ds = new DataSet(); da.Fill(Out_ds); DataTable Out_dt = new DataTable(); da.Fill(Out_dt); int total = comm.ExecuteNonQuery(); decimal OUT_COUNT = Convert.ToDecimal(comm.Parameters["OUT_COUNT"].Value.ToString()); Oracle.ManagedDataAccess.Types.OracleRefCursor oracleRefCursor = (Oracle.ManagedDataAccess.Types.OracleRefCursor)comm.Parameters["Out_Result"].Value; #region 将oracleDataReader装DataTable OracleDataReader oracleDataReader = comm.ExecuteReader(); DataTable dt_oracleDataReader = new DataTable(); for (int i = 0; i < oracleDataReader.FieldCount; i++) { DataColumn column = new DataColumn { ColumnName = oracleDataReader.GetName(i), DataType = oracleDataReader.GetFieldType(i) }; dt_oracleDataReader.Columns.Add(column); } while (oracleDataReader.Read()) { DataRow dataRow = dt_oracleDataReader.NewRow(); for (int i = 0; i < oracleDataReader.FieldCount; i++) { dataRow[i] = oracleDataReader[i]; } dt_oracleDataReader.Rows.Add(dataRow.ItemArray); } #endregion #region 测试根据传入字典构建存储过程参数化 string ProcedureName = receiveFormat.ActionType; comm = new OracleCommand(); comm.Connection = conn; comm.CommandType = CommandType.StoredProcedure; comm.CommandText = ProcedureName; //参数 List <OracleParameter> ps_dic = new List <OracleParameter>(); foreach (var item in receiveFormat.Dic) { OracleParameter op = new OracleParameter(item.Key, OracleDbType.Varchar2); op.Value = 672; ps_dic.Add(op); } foreach (var item in ps_dic) { comm.Parameters.Add(item); } OracleDataAdapter da2 = new OracleDataAdapter(comm); DataTable Out_dt2 = new DataTable(); da2.Fill(Out_dt2); #endregion conn.Close(); conn.Dispose(); string a = JsonConvert.SerializeObject(Out_dt); string b = JsonConvert.SerializeObject(Out_ds); bool c = a == b; HttpResponseMessage responseMessage = DBHelp.ConvertToHttpResponseMessage(Out_dt); return(responseMessage); }