Use InterlockedExchangeAdd to get ConnectionCount

This commit is contained in:
Ondrej Pokorny 2021-08-14 07:39:34 +02:00 committed by Michaël Van Canneyt
parent 7ccdcd3d14
commit 964a9839d1

View File

@ -139,6 +139,7 @@ Type
FUseSSL: Boolean; FUseSSL: Boolean;
procedure DoCreateClientHandler(Sender: TObject; out AHandler: TSocketHandler); procedure DoCreateClientHandler(Sender: TObject; out AHandler: TSocketHandler);
function GetActive: Boolean; function GetActive: Boolean;
function GetConnectionCount: Integer;
function GetHostName: string; function GetHostName: string;
procedure SetAcceptIdleTimeout(AValue: Cardinal); procedure SetAcceptIdleTimeout(AValue: Cardinal);
procedure SetActive(const AValue: Boolean); procedure SetActive(const AValue: Boolean);
@ -188,7 +189,7 @@ Type
// Called when a connection encounters an unexpected error. Will call OnRequestError when set. // Called when a connection encounters an unexpected error. Will call OnRequestError when set.
procedure HandleRequestError(Sender: TObject; E: Exception); virtual; procedure HandleRequestError(Sender: TObject; E: Exception); virtual;
// Connection count // Connection count
Property ConnectionCount : Integer Read FConnectionCount; Property ConnectionCount : Integer Read GetConnectionCount;
public public
Constructor Create(AOwner : TComponent); override; Constructor Create(AOwner : TComponent); override;
Destructor Destroy; override; Destructor Destroy; override;
@ -684,6 +685,11 @@ begin
Result:=Assigned(FServer); Result:=Assigned(FServer);
end; end;
function TFPCustomHttpServer.GetConnectionCount: Integer;
begin
Result := InterlockedExchangeAdd(FConnectionCount, 0);
end;
procedure TFPCustomHttpServer.DoCreateClientHandler(Sender: TObject; out AHandler: TSocketHandler); procedure TFPCustomHttpServer.DoCreateClientHandler(Sender: TObject; out AHandler: TSocketHandler);
begin begin
AHandler:=GetSocketHandler(UseSSL); AHandler:=GetSocketHandler(UseSSL);