|
|
@@ -120,6 +120,7 @@ type |
|
|
|
function Seek(const {%H-}Offset: Int64; {%H-}Origin: TSeekOrigin): Int64; override; overload; |
|
|
|
procedure BeginOperation; |
|
|
|
procedure EndOperation; |
|
|
|
procedure Clear; |
|
|
|
property LockFree: boolean read fLockFree; |
|
|
|
end; |
|
|
|
|
|
|
@@ -479,23 +480,9 @@ begin |
|
|
|
end; |
|
|
|
|
|
|
|
destructor TutlFIFOStream.Destroy; |
|
|
|
var |
|
|
|
p,q: PPage; |
|
|
|
begin |
|
|
|
BeginOperation; |
|
|
|
try |
|
|
|
fTotalSize:= 0; |
|
|
|
fReadPtr:= 0; |
|
|
|
fWritePtr:= 0; |
|
|
|
p:= fPageFirst; |
|
|
|
while p<>nil do begin |
|
|
|
q:= p; |
|
|
|
p:= p^.Next; |
|
|
|
Dispose(q); |
|
|
|
end; |
|
|
|
finally |
|
|
|
EndOperation; |
|
|
|
end; |
|
|
|
Clear; |
|
|
|
Dispose(fPageFirst); |
|
|
|
FreeAndNil(fDataLock); |
|
|
|
inherited Destroy; |
|
|
|
end; |
|
|
@@ -627,6 +614,25 @@ begin |
|
|
|
fDataLock.Release; |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TutlFIFOStream.Clear; |
|
|
|
var |
|
|
|
p: PPage; |
|
|
|
begin |
|
|
|
BeginOperation; |
|
|
|
try |
|
|
|
while fPageFirst<>fPageLast do begin |
|
|
|
p:= fPageFirst; |
|
|
|
fPageFirst:= fPageFirst^.Next; |
|
|
|
Dispose(p); |
|
|
|
end; |
|
|
|
fTotalSize:= 0; |
|
|
|
fReadPtr:= 0; |
|
|
|
fWritePtr:= 0; |
|
|
|
finally |
|
|
|
EndOperation; |
|
|
|
end; |
|
|
|
end; |
|
|
|
|
|
|
|
{ TutlBase64Decoder } |
|
|
|
|
|
|
|
function TutlBase64Decoder.{%H-}Read(var Buffer; Count: Longint): Longint; |
|
|
|