33// See the LICENSE file in the project root for more information.
44// Maintainer: Argo Zhang([email protected] ) Website: https://www.blazor.zone 55
6- using System . Buffers ;
7-
86namespace BootstrapBlazor . Components ;
97
108/// <summary>
@@ -56,12 +54,9 @@ public virtual Task ReceiveAsync(Memory<byte> data)
5654 /// <param name="length">The length of the valid data within the buffer.</param>
5755 protected void HandlerStickyPackage ( Memory < byte > buffer , int length )
5856 {
59- var len = buffer . Length - length ;
60- if ( len > 0 )
57+ if ( buffer . Length > length )
6158 {
62- var memoryBlock = MemoryPool < byte > . Shared . Rent ( len ) ;
63- buffer [ length ..] . CopyTo ( memoryBlock . Memory ) ;
64- _lastReceiveBuffer = memoryBlock . Memory [ ..len ] ;
59+ _lastReceiveBuffer = buffer [ length ..] . ToArray ( ) . AsMemory ( ) ;
6560 }
6661 }
6762
@@ -82,17 +77,13 @@ protected Memory<byte> ConcatBuffer(Memory<byte> buffer)
8277 }
8378
8479 // 计算缓存区长度
85- var len = _lastReceiveBuffer . Length + buffer . Length ;
86-
87- // 申请缓存
88- var memoryBlock = MemoryPool < byte > . Shared . Rent ( len ) ;
89-
90- // 拷贝数据到缓存区
91- _lastReceiveBuffer . CopyTo ( memoryBlock . Memory ) ;
92- buffer . CopyTo ( memoryBlock . Memory [ _lastReceiveBuffer . Length ..] ) ;
80+ var total = _lastReceiveBuffer . Length + buffer . Length ;
81+ var merged = new byte [ total ] ;
82+ _lastReceiveBuffer . CopyTo ( merged ) ;
83+ buffer . CopyTo ( merged . AsMemory ( _lastReceiveBuffer . Length ) ) ;
9384
94- // 清空粘包缓存数据
85+ // Clear the sticky buffer
9586 _lastReceiveBuffer = Memory < byte > . Empty ;
96- return memoryBlock . Memory [ .. len ] ;
87+ return merged ;
9788 }
9889}
0 commit comments