System
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
system -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 <upssec.hh>
#include <upscrbexception.h>
using namespace std;
static const CORBA::UShort CO_DroitLecture=1;
static const CORBA::UShort CO_DroitEcriture=2;
static const CORBA::UShort CO_DroitExecution=3;
static const CORBA::UShort CO_DroitLectureEcriture=4;
static const CORBA::UShort CO_DroitLectureExecution=5;
static const CORBA::UShort CO_DroitEcritureExecution=6;
static const CORBA::UShort CO_DroitLectureEcritureExecution=7;
static CORBA::ORB *pOrb;
static CORBA::BOA *pBoa;
static CORBA::Object *pObjet;
static IUpsKrn *pIUpsKrn;
static IUpsSys *pIUpsSys;
static IUpsSec *pIUpsSec;
static CORBA::Long NbAlarmes;
/****************************************************************/
static CORBA::Boolean MonAlarme(void)
/****************************************************************/
{
try
{
cout
<< "Date=" <<
pIUpsKrn->Caractere2CorbaString(pIUpsKrn->Caractere4(pIUpsSys->DateSysteme(),pIUpsKrn->CorbaString2Caractere("%HH:%Mi:%S")))
<< endl;
NbAlarmes=NbAlarmes+1;
if (NbAlarmes < 3)
else
}
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(FALSE);
}
/****************************************************************/
static IUpsKrnCaractere *EcrireEntree(void)
/****************************************************************/
{
try
{
return((IUpsKrnCaractere*)pIUpsKrn->ObjetNul());
}
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 void LireSortie(IUpsKrnCaractere *M)
/****************************************************************/
{
try
{
cout << pIUpsKrn->Caractere2CorbaString(M)<< 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;
}
}