正如AllJoyn C++ API文档所说,ajn::SessionListener是一个由alljoyn应用实现的类,并由AllJoyn调用给应用通知与会话有关的事件。进一步说,ajn::SessionListener::SessionMemberAdded由alljoyn总线调用以告知应用程序已经有一个成员加入到了多点会话中 因此,你需要查看以下几点: 你的应用是否做了相关工作以驻留一个会话和加入一个会话?我指的相关工作有alljoyn一端通过调用ajn::BusAttachment::BindSessionPort创建一个会话,而另一端调用ajn::BusAttachment::JoinSession加入一个会话 如果已经创建了会话,你是否保证了会话是属于多点会话?那意味着ajn::BusAttachment::BindSessionPort被调用时,参数ajn::SessionOpts的isMultiPoint 应该置true ajn::BusListener::NameOwnerChanged是当应用(准确说是名称)出现或离开时被调用的。这个回调与会话独立,即使应用没有创建或加入会话也能被调用 理论上来说,不使用会话来与另一个应用通信也是可以的。但我们不推荐这样做。会话可以通过SessionId提供通信的上下文信息,这使得用会话来管理通信变得更为容易 很明显,只有当一个监听对象被注册时回调才能发生。在你这种情况下,只有当SessionListener 被注册时,SessionMemberAdded 才会被调用 对每一个会话都有两端(不管是点对点还是多点)。一端是创建会话(在你的例子中就是服务),另一端就是加入会话(在你的例子中就是客户)。加入会话的一方可以通过给JoinSession API传入一个SessionListener 参数来注册它,创建会话的一方可通过SetSessionListener API来注册它 因此,如果你想要在服务端回调的话,你应该使用SetSessionListener 来注册一个监听,请检查你是否做了它。你可以在官方例子allseen/core/alljoyn/alljoyn_core/test/bbservice.cc中找到有关SetSessionListener 的使用
2,853
社区成员
5,758
社区内容
加载中
试试用AI创作助手写篇文章吧