це єдиний файл, що містить вищенаведене опис. Для файла з ім'ям, наприклад, SimpleIDL.idl будуть згенеровані файли SimpleIDL_c.hh, SimpleIDL_c.cpp (для використання на стороні клієнта) і SimpleIDL_s.hh, SimpleIDL_s.cpp. p align="justify"> Створення серверного програми
[4] Файли _s. * містять код, який дозволяє зв'язати серверний додаток з CORBA. Для нас найбільший інтерес представляє згенерований клас POA_MyInterface. Цей клас містить оголошення чисто віртуальної (абстрактної) функції Summa:
class POA_MyInterface: ...
{:
... CORBA :: Long Summa (CORBA :: Long _op1, :: Long _op2) (CORBA :: SystemException) = 0;
...
};
Оскільки клас POA_MyInterface є тільки основою для серверного додатка, його часто називають В«скелетомВ» або навіть В«скелетономВ» (skeleton).
Очевидно, що програмісту необхідно створити похідний від нього клас, в якому функція Summa була б визначена. Це можна зробити, наприклад, так:
class MyInterfaceImpl: public POA_MyInterface
{
public: () {} :: Long Summa (CORBA :: Long _op1, :: Long _op2) (CORBA :: SystemException);
}; :: Long MyInterfaceImpl :: Summa (CORBA :: Long _op1, :: Long _op2) (CORBA :: SystemException)
{_op1 + _op2;
}
Клас реалізацій MyInterfaceImpl часто створюється автоматично, наприклад, за допомогою експертів, що входять до складу Borland C + + Builder або Java Builder.
Тепер залишилося написати код функції main ():
# include
# include
# include "MyInterfaceImpl.h"
# pragma argsused (int argc, char * argv [])
{
{
// Ініціалізація взаємодії з CORBA :: ORB_var orb = CORBA :: ORB_init (argc, argv);
// Створення серванта майбутнього CORBA-об'єкта * servant = new MyInterfaceImpl;
// Створення тимчасового (transient)
// CORBA-об'єкта та отримання об'єктної посилання
CORBA :: Object_ptr oRef = servant-> _this ();
// Перетворення об'єктної посилання в рядок :: String_var str = orb-> object_to_string (oRef);
// Запис у файлoref_file ("MyORef.ior"); _file.write (str, strlen (str) +1); _file.close (); <<"Waiting for client requests ... ";
// Цикл очікування запитів клієнтів> run ();
} (const CORBA :: Exception & e)
{<
} 0;
}