0

すべてのバスを介して信号をアナウンスするアプリケーションの魔女を作成しようとしています。バス内の特定のオブジェクトに接続する必要がないという考え。インターフェイスが Introspectable になる可能性があることがわかりましたが、このインターフェイスがバスに登録されているときに、バス オブジェクトに自動的に追加されることがわかりました。問題は、バスで信号を可視化する方法です。

インターフェース:

@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;
}

発行:

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);
}

オブジェクトは表示されますが、信号は表示されません。

4

1 に答える 1

0

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

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

于 2016-04-07T07:25:48.407 に答える