2016-08-02 3 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 я получаю «Received» является необъявленным типом. Как я могу это исправить?

Спасибо.

ответ

1

Вы должны объявить интерфейс типа Receiver с операцией treatMessage так же, как вы объявили интерфейс типа Contract с операцией получения. Или сделать

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

Не означает ли это, что я буду предоставлять удаленный доступ к классу Receiver, если я объявлю его интерфейсом? Если да, я бы не хотел, чтобы это произошло – Doyin

+0

Да, в настоящий момент вы объявляете приемник как интерфейс, вы можете получить к нему доступ удаленно. –

+0

Я бы не хотел, чтобы это произошло в этом случае. – Doyin

Смежные вопросы