2016-03-30 11 views
0

私はすべてのバスを介して信号を発表するアプリケーションの魔女を作成しようとしています。あなたはバスの特定のオブジェクトに接続する必要はないという考え。 私はインターフェイスがIntrospectableかもしれないが、バスに登録しているときにこのインターフェイスがバスオブジェクトに自動的に追加されているのを見て、 それでは、問題はバス上で信号を見えるようにすることです。公開されたシグナルalljoyn

インタフェース:

@BusInterface(name = Door.DOOR_INTF_NAME, announced = "true") 
public interface Door { 

    String DOOR_INTF_NAME = "com.example.Door"; 
    String PERSON_PASSED_THROUGH = "PersonPassedThrough"; 

    @BusSignal(name = PERSON_PASSED_THROUGH, sessionless = true) 
    void personPassedThrough(String person) throws BusException; 
} 

publushing:

private void doRegisterBusObject(Object obj) { 
    LocatableBusObject object = (LocatableBusObject) obj; 
    String location = object.getBusObjectLocation(); 
    if (!location.startsWith("/")) { 
     location = "/" + location; 
    } 
    // Register the object on the local bus 
    Status status = bus.registerBusObject(object, location); 
    if (Status.OK != status) { 
     return; 
    } 
    // Have About send a signal a new door is available. 
    aboutObj.announce(CONTACT_PORT, aboutData); 
} 

オブジェクトが可視であるが、信号がありません。

+0

'status = bus.addMatch(" sessionless = 't' ");' – Lino

+0

@Lino、BusAttachmentのルールに関する情報はどこにありますか?私が見るのはルールを追加することだけですが、何をしているのか、いくつかの例がありますか? – Lebedevsd

+0

'addMatch'はDBUSマッチングルールを追加するので、ここで見てください:https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-add-match – Lino

答えて

0

基本的に、インターフェイスorg.allseen.Introspectableは、@ BusInterfaceの説明を発表する場合にのみ、ルータによって追加されます。

これまでは、このインターフェイスはありません。

関連する問題