/// <summary> /// 設定Response的Padding部分 /// </summary> /// <param name="resMsgUility">Response Msg Parser</param> /// <param name="response">要寫入的response byte array</param> protected virtual void SetPadding(IMsgUtility resMsgUility, byte[] response) { // padding data byte[] spacePadding = CheckMacContainer.ByteWorker.Fill(resMsgUility.GetTag("DataPadding").Length, 0x20); resMsgUility.SetBytes(spacePadding, response, "DataPadding"); int length = response.Length; log.Debug(m => m("9.Response Padding End (array length:{0})", length)); }
/// <summary> /// Response物件轉換成byte[] /// </summary> /// <param name="msgUtility">Msg Parser Object</param> /// <param name="response">後端給的POCO</param> /// <param name="request">Origin Request byte array</param> /// <returns>response byte array</returns> protected virtual byte[] ParseResponse(IMsgUtility msgUtility, ALTxlog_Domain response, byte[] request) { log.Debug(m => m("5.轉換後台自動加值TxLog Response物件 => Byte[]")); byte[] rspResult = new byte[request.Length]; Buffer.BlockCopy(request, 0, rspResult, 0, request.Length);// // modify request to response msgUtility.SetStr("02", rspResult, "Communicate"); msgUtility.SetStr(response.TXLOG_RC, rspResult, "ReturnCode"); //取得資料部分的大小並設定 string sizeStr = CheckMacContainer.StrHelper.LeftPad(msgUtility.GetSize("DataVersion", "EndOfData"), msgUtility.GetTag("DecryptSize").Length, '0'); msgUtility.SetStr(sizeStr, rspResult, "DecryptSize"); msgUtility.SetStr(sizeStr, rspResult, "EncryptSize"); //寫入空白 msgUtility.SetBytes(CheckMacContainer.ByteWorker.Fill(msgUtility.GetTag("DataPadding").Length, 0x20), rspResult, "DataPadding"); //依據定義改變Response大小(因Request資料部分長度與Response資料部分長度不一樣) rspResult = CheckMacContainer.ByteWorker.SubArray(rspResult, 0, msgUtility.GetSize("HeaderVersion", "EndOfData")); log.Debug(m => m("6.轉換後台自動加值TxLog Response物件完畢")); return(rspResult); }
/// <summary> /// 設定Response的Padding部分 /// </summary> /// <param name="resMsgUility">Response Msg Parser</param> /// <param name="response">要寫入的response byte array</param> protected virtual void SetPadding(IMsgUtility resMsgUility, byte[] response) { // padding data byte[] spacePadding = CheckMacContainer.ByteWorker.Fill(resMsgUility.GetTag("DataPadding").Length, 0x20); resMsgUility.SetBytes(spacePadding, response, "DataPadding"); //log.Debug(m => m("9.Response Byte[]轉換完成, length:{0}", response.Length)); int length = response.Length; log.Debug(m => m("9.Response Padding End (array length:{0})", length)); }
/// <summary> /// Response物件轉換成byte[] /// </summary> /// <param name="msgUtility">Response Msg Parser</param> /// <param name="response">後端給的POCO</param> /// <param name="request">Origin Request byte array</param> /// <returns>response byte array</returns> protected virtual byte[] ParseResponse(IMsgUtility msgUtility, Txlog_Domain response, byte[] request) { log.Debug(m => m("5.轉換後台購貨取消TxLog Response物件 => Byte[]")); byte[] rspResult = new byte[request.Length]; Buffer.BlockCopy(request, 0, rspResult, 0, request.Length);// // modify request to response msgUtility.SetStr("02", rspResult, "Communicate"); msgUtility.SetStr(response.TXLOG_RC, rspResult, "ReturnCode"); //取得資料部分的大小並設定 string sizeStr = CheckMacContainer.StrHelper.LeftPad(msgUtility.GetSize("DataVersion", "EndOfData"), msgUtility.GetTag("DecryptSize").Length, '0'); msgUtility.SetStr(sizeStr, rspResult, "DecryptSize"); msgUtility.SetStr(sizeStr, rspResult, "EncryptSize"); //寫入空白 msgUtility.SetBytes(CheckMacContainer.ByteWorker.Fill(msgUtility.GetTag("DataPadding").Length, 0x20), rspResult, "DataPadding"); //依據定義改變Response大小(因Request資料部分長度與Response資料部分長度不一樣) rspResult = CheckMacContainer.ByteWorker.SubArray(rspResult, 0, msgUtility.GetSize("HeaderVersion", "EndOfData")); log.Debug(m => m("6.轉換後台購貨取消TxLog Response物件完畢")); return rspResult; }