Use TByteDynArray instead of string for raw buffer

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@771 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2009-04-07 16:24:41 +00:00
parent d673332bf8
commit 8650ae4029
7 changed files with 92 additions and 168 deletions

View File

@ -111,7 +111,7 @@ procedure TTCPTransport.SendAndReceive(ARequest, AResponse: TStream);
Var
wrtr : IDataStore;
buffStream : TMemoryStream;
strBuff : TBinaryString;
binBuff : TByteDynArray;
bufferLen : LongInt;
i, j, c : PtrInt;
begin
@ -122,10 +122,10 @@ begin
wrtr.WriteAnsiStr(Target);
wrtr.WriteAnsiStr(ContentType);
wrtr.WriteAnsiStr(Self.Format);
SetLength(strBuff,ARequest.Size);
SetLength(binBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));
wrtr.WriteAnsiStr(strBuff);
ARequest.Read(binBuff[1],Length(binBuff));
wrtr.WriteBinary(binBuff);
buffStream.Position := 0;
wrtr.WriteInt32S(buffStream.Size-4);
@ -144,11 +144,11 @@ begin
i := 1024;
if ( i > bufferLen ) then
i := bufferLen;
SetLength(strBuff,i);
SetLength(binBuff,i);
repeat
j := FConnection.RecvBufferEx(@(strBuff[1]),i,DefaultTimeOut);
j := FConnection.RecvBufferEx(@(binBuff[1]),i,DefaultTimeOut);
FConnection.ExceptCheck();
AResponse.Write(strBuff[1],j);
AResponse.Write(binBuff[1],j);
Inc(c,j);
i := Min(1024,(bufferLen-c));
until ( i =0 ) or ( j <= 0 );