IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CORBA Discussion :

Orbacus probleme arguments.


Sujet :

CORBA

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut Orbacus probleme arguments.
    Bonjour,

    Je dois programmer un système avec Orbacus et j'ai quelques soucis avec l'implémentation.

    En gros, j'ai un serveur, et un client qui s'y connecte. Le serveur a un objet CalendarManager qui s'occupe de l'informer sur l'heure (C'est un singleton). Je voudrais rendre cet objet disponible pour le client afin qu'il puisse se synchroniser avec le serveur.

    Voici mon IDL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    module bourse{
        module calendrier{
            interface Heure{
                string toString();
                boolean isBefore(in Heure h);
                boolean isAfter(in Heure h);
                boolean equals(in Heure h);
                long getHeure();
                long getMin();
                long getSec();
                long getSecDayCount();
            };
            interface PeriodeJournee{
                boolean isFixingEnable();
                boolean isFixingEnd();
                boolean isOrdreCreationEnable();
                Heure getHeureFin();
                Heure getHeureDebut();
                string getNom();
            };
            interface CalendarManager{
                    void init();
                    boolean isPeriodValid();
                    Heure getActualHeure();
                    PeriodeJournee getActualPeriod();
            };
        };
    };
    Dans la classe CalendarManager, j'ai deux objets qui sont des résultats de méthodes qui se retrouvent distribués alors qu'il n'y a pas de raison qu'ils le soient (Heure et PeriodeJournee). Cependant, je ne peux pas les retirer de l'IDL.

    Après avoir généré le code avec Jidl, j'ai implémenté les classes CalendarManager_impl ; Heure_impl et PeriodeJournee_impl qui sont l'implémentation des classes décrite dans l'IDL. (chaqu'une étend sonNomPOA).

    Du coté serveur, j'aimerais construire mon objet CalendarManager_impl. Pour cela, je dois instancier des objets PeriodeJournee. Dans PeriodeJournee, le constructeur a la signature suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public PeriodeJournee_impl(String nom, Heure heureDebut, Heure heureFin, boolean fixingEnable, boolean fixingEnd, boolean createOrdre)
    Mon soucis est le suivant : Je ne peux pas instancier des objets Heure, mais bien Heure_impl...

    Comment faire alors pour corriger le tout ?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 219
    Points : 302
    Points
    302
    Par défaut
    Bonjour,

    Si l'IDL ne peut pas être changé, alors pas le choix: les objets Heure, PeriodeJournee et CalandarManager sont des objets "distants" implémentés dans le serveur. Le client va faire appel au serveur à chaque opération sur un de ces objets.
    Les *_impl sont des servants. I.e. les classes d'implémentation des objets CORBA. Pour "transformer" un _impl en objet CORBA, il faut l'activer. Le plus simple pour l'activer, c'est d'appeler l'opération _this(org.omg.CORBA.ORB orb) qui renvoit l'objet CORBA activé.

    Dans ton cas, le code devrait donc ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Heure_impl debutImpl = new Heure_impl(...);
    Heure debut = debutImpl._this(orb);
    Heure_impl finImpl = new Heure_impl(...);
    Heure fin = finImpl._this(orb);
    PeriodeJournee_impl periodeImpl = new PeriodeJournee_impl("xxx", debut, fin, ...);
    Periode periode = periodeImpl._this(orb);
    Le gros inconvénient est la gestion du cycle de vie de tout ces objets créés. Qui va les détruire ? Normalement, ça devrait être le client quand il n'en a plus besoin. Mais je ne vois pas de méthode explicite prévue pour ça dans les interfaces (opération style destroy()).

Discussions similaires

  1. GTK Callback probleme argument et structure
    Par farfouillis92 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/02/2012, 10h08
  2. Probleme arguments de sorties matrices
    Par fuyo2004 dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/06/2009, 13h15
  3. getopt probleme arguments
    Par marty499 dans le forum POSIX
    Réponses: 6
    Dernier message: 15/04/2009, 14h40
  4. probleme sur le passage d'argument par adresse
    Par ghostdog dans le forum C
    Réponses: 4
    Dernier message: 23/11/2005, 15h50
  5. Réponses: 3
    Dernier message: 07/04/2003, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo