From 8f9d5b6aad9459b61c0c4b1b80fa96b117e0f49a Mon Sep 17 00:00:00 2001 From: geby <geby@7c85be65-684b-0410-a082-b2ed4fbef004> Date: Wed, 16 Jun 2021 16:05:48 +0000 Subject: [PATCH] blcksock.pas - int64 for counters and TStream support (by Pepak) git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@226 7c85be65-684b-0410-a082-b2ed4fbef004 --- blcksock.pas | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/blcksock.pas b/blcksock.pas index 26ac333..d7e2bfb 100644 --- a/blcksock.pas +++ b/blcksock.pas @@ -312,8 +312,8 @@ type {$IFNDEF CIL} FFDSet: TFDSet; {$ENDIF} - FRecvCounter: Integer; - FSendCounter: Integer; + FRecvCounter: int64; + FSendCounter: int64; FSendMaxChunk: Integer; FStopFlag: Boolean; FNonblockSendTimeout: Integer; @@ -546,7 +546,7 @@ type occured.)} procedure RecvStreamRaw(const Stream: TStream; Timeout: Integer); virtual; {:Read requested count of bytes from socket to stream.} - procedure RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: Integer); + procedure RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: int64); {:Receive data to stream. It using @link(RecvBlock) method.} procedure RecvStream(const Stream: TStream; Timeout: Integer); virtual; @@ -765,11 +765,11 @@ type {:Return count of received bytes on this socket from begin of current connection.} - property RecvCounter: Integer read FRecvCounter; + property RecvCounter: int64 read FRecvCounter; {:Return count of sended bytes on this socket from begin of current connection.} - property SendCounter: Integer read FSendCounter; + property SendCounter: int64 read FSendCounter; published {:Return descriptive string for given error code. This is class function. You may call it without created object!} @@ -2508,15 +2508,16 @@ begin until FLastError <> 0; end; -procedure TBlockSocket.RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: Integer); +procedure TBlockSocket.RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: int64); var s: AnsiString; - n: integer; + n: int64; {$IFDEF CIL} buf: TMemory; {$ENDIF} begin - for n := 1 to (Size div FSendMaxChunk) do + n := Size div int64(FSendMaxChunk); + while n > 0 do begin {$IFDEF CIL} SetLength(buf, FSendMaxChunk); @@ -2530,8 +2531,9 @@ begin Exit; WriteStrToStream(Stream, s); {$ENDIF} + dec(n); end; - n := Size mod FSendMaxChunk; + n := Size mod int64(FSendMaxChunk); if n > 0 then begin {$IFDEF CIL}