--- ibx/trunk/fbintf/client/FBServices.pas 2018/12/06 15:48:55 262 +++ ibx/trunk/fbintf/client/FBServices.pas 2018/12/06 15:55:01 263 @@ -40,7 +40,7 @@ unit FBServices; interface uses - Classes, SysUtils, IB, FBParamBlock, FBActivityMonitor; + Classes, SysUtils, IB, FBParamBlock, FBActivityMonitor, FBClientAPI; type @@ -57,10 +57,11 @@ type FSPB: ISPB; procedure InternalAttach(ConnectString: AnsiString); virtual; abstract; public - constructor Create(ServerName: AnsiString; Protocol: TProtocol; SPB: ISPB; Port: AnsiString = ''); + constructor Create(api: TFBClientAPI; ServerName: AnsiString; Protocol: TProtocol; SPB: ISPB; Port: AnsiString = ''); destructor Destroy; override; public {IServiceManager} + function getFirebirdAPI: IFirebirdAPI; function getSPB: ISPB; function getServerName: AnsiString; function getProtocol: TProtocol; @@ -75,7 +76,7 @@ type implementation -uses FBMessages, FBClientAPI, IBUtils; +uses FBMessages, IBUtils; { TFBServiceManager } @@ -85,11 +86,11 @@ begin IBError(ibxeServerNameMissing, [nil]); end; -constructor TFBServiceManager.Create(ServerName: AnsiString; +constructor TFBServiceManager.Create(api: TFBClientAPI; ServerName: AnsiString; Protocol: TProtocol; SPB: ISPB; Port: AnsiString); begin inherited Create; - FFirebirdAPI := FirebirdAPI; {Keep reference to interface} + FFirebirdAPI := api.getAPI; {Keep reference to interface} FProtocol := Protocol; FSPB := SPB; FServerName := ServerName; @@ -103,6 +104,11 @@ begin inherited Destroy; end; +function TFBServiceManager.getFirebirdAPI: IFirebirdAPI; +begin + Result := FFirebirdAPI; +end; + function TFBServiceManager.getSPB: ISPB; begin Result := FSPB; @@ -132,12 +138,12 @@ end; function TFBServiceManager.AllocateSRB: ISRB; begin - Result := TSRB.Create; + Result := TSRB.Create(FFirebirdAPI as TFBClientAPI); end; function TFBServiceManager.AllocateSQPB: ISQPB; begin - Result := TSQPB.Create; + Result := TSQPB.Create(FFirebirdAPI as TFBClientAPI); end; function TFBServiceManager.Query(Request: ISRB; RaiseExceptionOnError: boolean