-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
提供一个bundle服务端的例子用于对bundle进行管理 #1
Comments
任何捆绑包只要有上下文,都可以通过捆绑包上下文提供的接口来管理当前框架实例里面的捆绑包。比如 |
你是否可以看得到我的github上传的项目 |
static std::shared_ptr<celix::ServiceRegistration> createService(std::shared_ptr<celix::BundleContext>& ctx)
{
int seed = 42;
std::cout << "CommandProviderBundle register" << std::endl;
return ctx->registerService<ACEPHERE_RUNTIME::ICommand>(std::make_shared<ACEPHERE_RUNTIME::CommandImpl>(seed))
.addProperty("seed", seed)
.build();
} 创建 再比如,C++的例子 TEST_F(CxxBundleActivatorTestSuite, InstallUninstallBundleWithCmpAndTracker) {
//When I install and uninstall a bundle with a component and tracker combination without asan issues (use after free)
auto reg = ctx->registerService<TestInterface>(std::make_shared<TestImpl>()).build();
auto bndId = ctx->installBundle(CMP_TEST_BUNDLE_LOC);
EXPECT_GE(bndId, 0);
ctx->uninstallBundle(bndId);
} 测试用例都是现成Demo。 |
非常感谢你的帮助,我测试下来已经可以调用自己写的服务端接口加载bundle了,只需要通过ctx调用"celix\libs\framework\include\celix\BundleContext.h"中声明的接口即可。这也正是我的需求,通过抽象出这层bundle管理组件来负责管理bundle。 不过我还有一个问题,"lb"的实现这里怎么没有对应的接口呢?我需要用就只能通过每个bundle启动以后记录下bundle名字和对应的id进行管理? |
实际上框架支持的方式是通过捆绑包ID来管理。你现在记录的名字只是捆绑包的位置而已。 |
我需要写一个bundle服务端,里面可以对接实现celix对bundle操作的功能,例如"lb","install bundle"这些功能。我目前的难点在于,不知道这里面的install,lb这些指令的具体实现该如何做,其实就是以C++写一个文件,他对于那些来说就是消费端,套了一层实现之林的接口。对外,我就自己可以写一个客户端bundle来调用他。具体的一会我再提交一个例子可能更加清晰一点
The text was updated successfully, but these errors were encountered: