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 :

Problème avec le type 'Corba::Any_out'


Sujet :

CORBA

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème avec le type 'Corba::Any_out'
    Bonjour,

    J'ai un IDL de type :

    interface MyInterface {
    long test(out any myvar);
    };

    Après compilation de celle-ci je me trouve avec :

    CORBA::Long MyInterface::test(CORBA::Any_out _myvar)
    {
    // Rajout
    cout << "OK";
    return 1;
    }


    Comment dois je écrire le code du coté de mon client pour faire appel à ma methode "test"...

    Merci d'avance

    --
    Steven
    --
    Steven

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 125
    Points : 149
    Points
    149
    Par défaut
    Ton code est un peu bizarre mais je t'ai déjà répondu sur un autre thread. A propos du type any, tu devrais lire mon post http://www.developpez.net/forums/viewtopic.php?t=2678

    Pour le résultat que le compilateur te sort après la compilation, c'est surprenant. Normalement, un out any et sorti en out any * &
    http://info.borland.com/techpubs/boo...mer/chap12.htm

    De toutes les façons, si tu n'as qu'une valeur de retour, il faut mieux déclarer dans ton IDL que la fonction la renvoie avec un return, c'est plus simle, quitte à faire une structure si tu en as plusieurs.

    C'est quoi ton compilateur IDL ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Salut

    La signature des methodes avec _out à la fin est généré par les ORBS Iona Orbix 3 et 2000, et par d'autres telles que TAO et ORBacus.

    le suffixe _out est équivalent à *& qui est la sémantique du out en C++

    Pour l'appel, de ta fonction le plus simple est d'utiliser les classes générées var qui évite de faire des betises de gestions mémoires:

    coté client:


    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
    MyInterface_var myinterface=..; // depend de ta façon de recuperer ton objet Naming Service, fichier, ou par un autre objet CORBA.
    
    
    CORBA&#58;&#58;Any_var myany;
    myinterface->test&#40;myany.out&#40;&#41;&#41;;
    CORBA&#58;&#58;long mylong;
    if&#40;myany >>= mylong&#41;
    &#123;
      cout >> "L'any contient un long sa valeur est&#58;"<<mylong<<endl; 
    &#125;
    else ...
    
    // au retour, ton any est défini, attention ton implementation, n allouant pas l any, il y a de grande chance que ton programme core lors de l appel
    // l any retourné étant géré par myany qui est un Any_var, il sera detruit lors de la sortie du scope de myany 
    
    // exemple coté serveur
    
    CORBA&#58;&#58;Long MyInterface&#58;&#58;test&#40;CORBA&#58;&#58;Any_out _myvar&#41; 
    &#123; 
    
       _myvar=new CORBA&#58;&#58;Any&#40;&#41;;
       _myvar <<= 12345;
    
       return 12345; 
    &#125;
    // il faut garder à l esprit que ton any sera détruit par le squelette de MyInterface, donc il doit obligatoirement etre alloué dans le tas, et tu ne dois pas le detruire.
    Il ne faut pas confondre vitesse et precipitation....

Discussions similaires

  1. Problème avec le type variant
    Par fabrice001 dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/12/2005, 10h18
  2. Réponses: 1
    Dernier message: 25/11/2005, 20h40
  3. Problème avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    Réponses: 1
    Dernier message: 10/11/2005, 17h33
  4. problème avec le type timestamp
    Par aline dans le forum Oracle
    Réponses: 6
    Dernier message: 21/02/2005, 10h05
  5. [Débutant][Phppgadmin] problème avec les types
    Par PoY dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2004, 17h06

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