Skip to content

Commit 07b49c4

Browse files
committed
发送加密功能重构中。。。
1 parent dbf442b commit 07b49c4

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

Quick.Protocol/QpChannel_Send.cs

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ private async Task writePackageBuffer(Stream stream,PipeReader currentReader, Qp
5858

5959
var readRet = await writeCompressPipe.Reader.ReadAsync().ConfigureAwait(false);
6060
packageBodyBuffer = readRet.Buffer;
61-
var packageBodyLength = Convert.ToInt32(packageBodyBuffer.Length);
61+
6262
//包总长度
63-
packageTotalLength = PACKAGE_TOTAL_LENGTH_LENGTH + packageBodyLength;
63+
packageTotalLength += PACKAGE_TOTAL_LENGTH_LENGTH;
6464
//准备包头
6565
writePackageTotalLengthToBuffer(sendHeadBuffer, 0, packageTotalLength);
6666
packageHeadMemory = new Memory<byte>(sendHeadBuffer, 0, PACKAGE_TOTAL_LENGTH_LENGTH);
@@ -105,21 +105,24 @@ private async Task writePackageBuffer(Stream stream,PipeReader currentReader, Qp
105105
finnalInLength = 1;
106106
}
107107
var finalData = dec.TransformFinalBlock(encryptBuffer1, 0, finnalInLength);
108-
finalData.CopyTo(encryptPipe.Writer.GetMemory(finalData.Length));
109-
encryptPipe.Writer.Advance(finalData.Length);
110-
packageTotalLength += finalData.Length;
108+
if (finalData.Length > 0)
109+
{
110+
finalData.CopyTo(encryptPipe.Writer.GetMemory(finalData.Length));
111+
encryptPipe.Writer.Advance(finalData.Length);
112+
packageTotalLength += finalData.Length;
113+
}
111114
}
112115
_ = Task.Run(async () =>
113116
{
114-
await encryptPipe.Writer.FlushAsync().ConfigureAwait(false);
115-
currentReader.AdvanceTo(packageBodyBuffer.End);
117+
await encryptPipe.Writer.FlushAsync().ConfigureAwait(false);
116118
});
117119

118120
var readRet = await encryptPipe.Reader.ReadAtLeastAsync(packageTotalLength).ConfigureAwait(false);
121+
currentReader.AdvanceTo(packageBodyBuffer.End);
122+
119123
packageBodyBuffer = readRet.Buffer;
120-
var packageBodyLength = Convert.ToInt32(packageBodyBuffer.Length);
121124
//包总长度
122-
packageTotalLength = PACKAGE_TOTAL_LENGTH_LENGTH + packageBodyLength;
125+
packageTotalLength += PACKAGE_TOTAL_LENGTH_LENGTH;
123126
//准备包头
124127
writePackageTotalLengthToBuffer(sendHeadBuffer, 0, packageTotalLength);
125128
packageHeadMemory = new Memory<byte>(sendHeadBuffer, 0, PACKAGE_TOTAL_LENGTH_LENGTH);
@@ -191,7 +194,7 @@ private async Task writePackageAsync(Func<PipeWriter, Task<Tuple<QpPackageType,
191194
{
192195
if (options.EnableNetstat)
193196
Interlocked.Increment(ref PackageSendQueueCount);
194-
await sendLock.WaitAsync().ConfigureAwait(false);
197+
await sendLock.WaitAsync(5000).ConfigureAwait(false);
195198
var stream = QpPackageHandler_Stream;
196199
if (stream == null)
197200
throw new IOException("Connection is disconnected.");
@@ -203,22 +206,20 @@ private async Task writePackageAsync(Func<PipeWriter, Task<Tuple<QpPackageType,
203206

204207
if (packageTotalLength < PACKAGE_HEAD_LENGTH)
205208
throw new IOException($"包大小[{packageTotalLength}]小于包头长度[{PACKAGE_HEAD_LENGTH}]");
206-
try
207-
{
208-
var readRet = await sendPipe.Reader.ReadAtLeastAsync(packageBodyLength).ConfigureAwait(false);
209-
var packageBuffer = readRet.Buffer;
210-
await writePackageBuffer(stream,
211-
sendPipe.Reader,
212-
packageType,
213-
packageBuffer,
214-
afterSendHandler).ConfigureAwait(false);
215-
lastSendPackageTime = DateTime.Now;
216-
}
217-
catch (Exception ex)
218-
{
219-
OnWriteError(ex);
220-
throw;
221-
}
209+
210+
var readRet = await sendPipe.Reader.ReadAtLeastAsync(packageBodyLength).ConfigureAwait(false);
211+
var packageBuffer = readRet.Buffer;
212+
await writePackageBuffer(stream,
213+
sendPipe.Reader,
214+
packageType,
215+
packageBuffer,
216+
afterSendHandler).ConfigureAwait(false);
217+
lastSendPackageTime = DateTime.Now;
218+
}
219+
catch (Exception ex)
220+
{
221+
OnWriteError(ex);
222+
throw;
222223
}
223224
finally
224225
{

0 commit comments

Comments
 (0)