Type
Commande de compilation
- Dans le menu Project - Add Existing Item de Visual C++,
il faut ajouter la bibliothèque ${UPS_HOME}/upscrb/upscrb/upsvtm_sc.lib
pour que les méthodes statiques des classes soient disponibles.
- Dans le menu Project - Properties de Visual C++,
il faut spécifier que l'alignement des structures est de quatre octets via
l'option de compilation /ZP4.
Commande d'enregistrement des objets Corba
${MICO_HOME}/bin/ird -ORBIIOPAddr inet:localhost:8888 --db
${MICO_HOME}/db/db-ird
${MICO_HOME}/bin/micod -ORBIIOPAddr inet:localhost:9999 --db
${MICO_HOME}/db/db-micod.txt --forward
upsvtm Corba=Charger
Commande d'exécution
${MICO_HOME}/bin/ird -ORBIIOPAddr inet:localhost:8888 --db
${MICO_HOME}/db/db-ird
${MICO_HOME}/bin/micod -ORBIIOPAddr inet:localhost:9999 --db
${MICO_HOME}/db/db-micod.txt --forward
type -ORBIfaceRepoAddr inet:localhost:8888 -ORBImplRepoAddr
inet:localhost:9999 -ORBBindAddr local:
Fichier source
#include <CORBA.h>
#include <mico/string.h>
#include <upskrn.hh>
#include <upssys.hh>
#include <upscrbexception.h>
using namespace std;
static CORBA::ORB *pOrb;
static CORBA::BOA *pBoa;
static CORBA::Object *pObjet;
static IUpsKrn *pIUpsKrn;
static IUpsSys *pIUpsSys;
/****************************************************************/
int main(int argc, char *argv[])
/****************************************************************/
{
IUpsKrnEntier_var E;
IUpsKrnType_var T;
IUpsKrnObjet_var O;
IUpsKrnEntier_var Inutile;
pOrb=CORBA::ORB_init(argc,argv, "mico-local-orb");
if (!pOrb)
pBoa=pOrb->BOA_init(argc, argv, "mico-local-boa");
if (!pBoa)
pObjet=pOrb->bind("IDL:IUpsKrn:1.0");
if (!pObjet)
pIUpsKrn=IUpsKrn::_narrow(pObjet);
if (!pIUpsKrn)
pObjet=pOrb->bind("IDL:IUpsSys:1.0");
if (!pObjet)
pIUpsSys=IUpsSys::_narrow(pObjet);
if (!pIUpsSys)
try
{
T=(IUpsKrnType*)pIUpsKrn->Type()->EnumererObjets(pIUpsKrn->ObjetNul());
for
(;!pIUpsKrn->EstNul((IUpsKrnObjet *)&(*T));)
{
cout <<pIUpsKrn->Caractere2CorbaString(T->NomType())<< endl;
T=(IUpsKrnType*)pIUpsKrn->Type()->EnumererObjets((IUpsKrnObjet
*)&(*T));
}
cout
<< endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Binaire()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Caractere()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Date()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Entier()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Enumere()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Exception_()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsSys->Fichier()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Module_()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Objet()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Reel()->NomType())<<
endl;
cout <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Type()->NomType())<<
endl;
E=pIUpsKrn->CorbaLong2Entier(1);
Inutile=E->Incrementer(FALSE);
if
(pIUpsKrn->Booleen2CorbaBoolean(E->Egal(pIUpsKrn->CorbaLong2Entier(2))))
T=
pIUpsKrn->Caractere();
else
if
(pIUpsKrn->Booleen2CorbaBoolean(T->Egal(pIUpsKrn->Date())))
cout
<< "T==Date"
<< endl;
if
(pIUpsKrn->Booleen2CorbaBoolean(T->Different(pIUpsKrn->Date())))
cout
<< "T!=Date"
<< endl;
cout <<pIUpsKrn->Caractere2CorbaString(T->NomType())<<
endl;
E->Convertir(pIUpsKrn->Entier()->NouvelObjet());
cout << pIUpsKrn->Entier2CorbaLong(E)<< endl;
E->Convertir(pIUpsKrn->Exception_()->NouvelObjet());
cout << pIUpsKrn->Entier2CorbaLong(E)<< endl;
}
catch (UpsCrbException *E)
{
cout
<< Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source
'" << E->NomSourceEnErreur<< "' :" << endl;
cout
<< E->MessageErreur<< endl;
return(1);
}
catch (CORBA::Exception &e)
{
cout
<< "Erreur Mico : L'exception suivante a été envoyée :"
<< endl;
cout <<
e << endl;
return(1);
}
E=NULL;
T=NULL;
O=NULL;
Inutile=NULL;
CORBA::release(pIUpsSys);
pIUpsSys=NULL;
CORBA::release(pIUpsKrn);
pIUpsKrn=NULL;
delete pBoa;
delete pOrb;
return(0);
}