Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Source/DataSnap/uRODataSnapProviderManager.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10
- Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 14:06:19 +00:00

73 lines
2.0 KiB
ObjectPascal

unit uRODataSnapProviderManager;
interface
uses Contnrs, Provider,
uRODataSnapProviderPublisher, uRODataSnap_Intf;
type TProviderManager = class(TObjectList)
public
constructor Create();
procedure RegisterPublisher(iPublisher:TROCustomDataSnapProviderPublisher);
procedure UnregisterPublisher(iPublisher:TROCustomDataSnapProviderPublisher);
function GetProviderNames:TProviderNames;
function GetProviderByName(const iProviderName:string):TCustomProvider;
end;
var ProviderManager:TProviderManager;
implementation
uses SysUtils, Classes,
uRODataSnapRes;
{ TProviderManager }
constructor TProviderManager.Create;
begin
inherited Create(false);
end;
function TProviderManager.GetProviderByName(const iProviderName:string): TCustomProvider;
var i:integer;
begin
//ToDo: protect by CriticalSection;
result := nil;
for i := 0 to Count-1 do begin
result := (Items[i] as TRODataSnapProviderPublisher).GetProviderByName(iProviderName);
if Assigned(result) then break;
end; { for }
if not Assigned(result) then raise Exception.CreateFmt(sProviderNotExported,[iProviderName]);
end;
function TProviderManager.GetProviderNames: TProviderNames;
var i:integer;
begin
//ToDo: protect by CriticalSection;
result := TProviderNames.Create();
for i := 0 to Count-1 do begin
(Items[i] as TRODataSnapProviderPublisher).AddNamesToTProviderNames(result);
end; { for }
end;
procedure TProviderManager.RegisterPublisher(iPublisher: TROCustomDataSnapProviderPublisher);
begin
//ToDo: protect by CriticalSection;
if IndexOf(iPublisher) = -1 then Add(iPublisher);
end;
procedure TProviderManager.UnregisterPublisher(iPublisher: TROCustomDataSnapProviderPublisher);
var lIndex:integer;
begin
lIndex := IndexOf(iPublisher);
if IndexOf(iPublisher) <> -1 then Delete(lIndex);
end;
initialization
ProviderManager := TProviderManager.Create();
finalization
FreeAndNil(ProviderManager);
end.