2016-08-02 51 views
1

我是idl,corba的新手。我有一个java代码,我想通过它的一个方法来分发,并且这个方法需要另一个类的对象作为参数。请如何使用idl指定此场景。如何使用IDL传递对象作为参数

public void receive(Receiver rec, Message msg) { 
    rec.treatMessage(msg); 
} 

这就是我试图定义为我的IDL

module talk { 
    struct Message{ 
    string msg; 
    double time; 
    }; 
    typedef Received Receiver; 
    interface Contract{ 
    void receive(in Receiver rec, in Message msg); 
    }; 
}; 

我每次运行这个对IDLJ我不断收到“接收”是一个未声明的类型。 请问我该如何解决这个问题?

谢谢。

回答

1

您必须使用treatMessage声明一个类型为Receiver的接口,就像您声明了一个类型为Contract的接口并使用operation receive一样。或者做

module talk { 
    struct Message{ 
    string msg; 
    double time; 
    }; 
    interface Receiver{ 
    void receive(in Message msg); 
    }; 
}; 
+0

这并不意味着我将授予远程访问Receiver类,如果我将它声明为接口?如果是,我不希望发生这种情况 – Doyin

+0

是的,目前您将Receiver声明为接口,您可以远程访问它。 –

+0

我不希望在这种情况下发生这种情况。 – Doyin

相关问题