Lisp
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
lisp -ORBIfaceRepoAddr inet:localhost:8888 -ORBImplRepoAddr inet:localhost:9999 -ORBBindAddr local:
Fichier source
#include <CORBA.h>
#include <mico/string.h>
#include <upskrn.hh>
#include <upscrbexception.h>
using namespace std;
static const CORBA::UShort CO_ComparaisonAvant=1;
static const CORBA::UShort CO_ComparaisonEgal=2;
static const CORBA::UShort CO_ComparaisonApres=3;
static const CORBA::UShort CO_ComparaisonNul=4;
static CORBA::ORB *pOrb;
static CORBA::BOA *pBoa;
static CORBA::Object *pObjet;
static IUpsKrn *pIUpsKrn;
/****************************************************************/
static void P1(IUpsKrnCaractere *O)
/****************************************************************/
{
try
{
cout << pIUpsKrn->Caractere2CorbaString(O) << 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;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
}
/****************************************************************/
static void P2(IUpsKrnCaractere *O1, IUpsKrnEntier *O2)
/****************************************************************/
{
try
{
cout << pIUpsKrn->Caractere2CorbaString(O1->Additionner(pIUpsKrn->CorbaString2Caractere(" "))->Additionner(pIUpsKrn->Caractere5(O2))) << endl;
}
catch (CORBA::Exception &e)
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
}
/****************************************************************/
static IUpsKrnCaractere *F1(IUpsKrnCaractere *O)
/****************************************************************/
{
try
{
return(O->Majuscule());
}
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
return(NULL);
}
/****************************************************************/
static IUpsKrnCaractere *F2(IUpsKrnCaractere *O1, IUpsKrnEntier *O2)
/****************************************************************/
{
try
{
return(O1->Majuscule()->Additionner(pIUpsKrn->CorbaString2Caractere(" "))->Additionner(pIUpsKrn->Caractere5(O2)));
}
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
return(NULL);
}
/****************************************************************/
static IUpsKrnBooleen *F3(IUpsKrnCaractere *O1)
/****************************************************************/
{
try
{
return(O1->InferieurOuEgal(pIUpsKrn->CorbaString2Caractere("hello!!!")));
}
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
return(NULL);
}
/****************************************************************/
static CORBA::UShort F4(IUpsKrnCaractere *O1, IUpsKrnCaractere *O2)
/****************************************************************/
{
try
{
if (pIUpsKrn->EstNul((IUpsKrnObjet *)O1) || pIUpsKrn->EstNul((IUpsKrnObjet *)O2))
return(CO_ComparaisonNul);
else if (pIUpsKrn->Booleen2CorbaBoolean(O1->Inferieur(O2)))
return(CO_ComparaisonAvant);
else if (pIUpsKrn->Booleen2CorbaBoolean(O1->Superieur(O2)))
return(CO_ComparaisonApres);
else
return(CO_ComparaisonEgal);
}
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
return(0);
}
/****************************************************************/
static void EcrireListe(IUpsKrnListe *L)
/****************************************************************/
{
IUpsKrnCaractere_var C;
try
{
C=(IUpsKrnCaractere *)L->ParcoursAuDebut(0);
for (;;)
{
cout << pIUpsKrn->Caractere2CorbaString(C) << endl;
if (C->Identique(L->DernierElement()))
C=(IUpsKrnCaractere *)L->Suivant(0);
}
}
catch (UpsCrbException *E)
{
cout << "Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" << E->NomSourceEnErreur << "' :" << endl;
cout << E->MessageErreur << endl;
}
catch (CORBA::Exception &e)
{
cout << "Erreur Mico : L'exception suivante a été envoyée :" << endl;
cout << e << endl;
}
}