From 5940d94f2f6322073c3af97723df2b7d0248b1b3 Mon Sep 17 00:00:00 2001 From: yslmyr Date: Wed, 9 Oct 2024 23:10:08 +0800 Subject: [PATCH] add plugin manager --- README.md | 3 ++- packages/D12/OasisPluginFramework.dpk | 4 +++- packages/D12/OasisPluginFramework.dproj | 2 ++ src/DI/oasis.core.appsvrc.pas | 18 +++++++++++++++ src/PM/oasis.core.plugin.manager.pas | 29 +++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/DI/oasis.core.appsvrc.pas create mode 100644 src/PM/oasis.core.plugin.manager.pas diff --git a/README.md b/README.md index 714df05..b58a441 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # OasisPluginFramework -A plug-in library based on delphi bpl package,and include some base functionality package + +A plug-in library based on delphi bpl package,include some base functionality package,also has an IoC container. diff --git a/packages/D12/OasisPluginFramework.dpk b/packages/D12/OasisPluginFramework.dpk index 5e28b76..6ef7d62 100644 --- a/packages/D12/OasisPluginFramework.dpk +++ b/packages/D12/OasisPluginFramework.dpk @@ -32,6 +32,8 @@ requires rtl; contains - oasis.core.dependency in '..\..\src\DI\oasis.core.dependency.pas'; + oasis.core.dependency in '..\..\src\DI\oasis.core.dependency.pas', + oasis.core.appsvrc in '..\..\src\DI\oasis.core.appsvrc.pas', + oasis.core.plugin.manager in '..\..\src\PM\oasis.core.plugin.manager.pas'; end. diff --git a/packages/D12/OasisPluginFramework.dproj b/packages/D12/OasisPluginFramework.dproj index 2c5bbdf..4aa0646 100644 --- a/packages/D12/OasisPluginFramework.dproj +++ b/packages/D12/OasisPluginFramework.dproj @@ -131,6 +131,8 @@ + + Base diff --git a/src/DI/oasis.core.appsvrc.pas b/src/DI/oasis.core.appsvrc.pas new file mode 100644 index 0000000..90a3e74 --- /dev/null +++ b/src/DI/oasis.core.appsvrc.pas @@ -0,0 +1,18 @@ +unit oasis.core.appsvrc; + +interface + +uses + oasis.core.dependency; + +type + IAppServiceProvider = interface + ['{CBC6750F-7BCB-42AA-9B1B-DFBA1E1DE93E}'] + function GetContainer: IDependencyContainer; + property Container: IDependencyContainer read GetContainer; + + end; + +implementation + +end. diff --git a/src/PM/oasis.core.plugin.manager.pas b/src/PM/oasis.core.plugin.manager.pas new file mode 100644 index 0000000..0bb8267 --- /dev/null +++ b/src/PM/oasis.core.plugin.manager.pas @@ -0,0 +1,29 @@ +unit oasis.core.plugin.manager; + +interface + +uses + mormot.core.base, + mormot.core.collections; + +type + IOPlugin = interface; + + IOPluginManager = interface + ['{F7917846-7D71-4040-9A51-2BF77F96F256}'] + function LoadFile(const FileName: RawUtf8): IOPlugin; + procedure LoadFiles; + function GetPluginList: IList; + property Plugins: IList read GetPluginList; + + + end; + + IOPlugin = interface + ['{BFC9DFDA-1D20-4C22-AA97-6F0CAACFA82C}'] + + end; + +implementation + +end.