begin process at 2012 05 30 15:49:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

GUI

 > 

retourner structure en corba


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

retourner structure en corba

jeudi 2 avril 2009 à 17:35:05 | retourner structure en corba

asari29

Bonjour à tous, je m'initie actuellement à corba non sans quelque difficultés.
Je dispose d'un client JAVA et d'un serveur C++.
Voilà à quoi ressemble mon idl:

struct NodeORB
{
    string name;
    sequence<AttribORB> listAttribORB;
};

interface Arbre
{
    long addNode(in string path, in NodeORB iNodeORB);
    long removeNode(in string path);
    NodeORB getNode(in string path);
    void setNode(in string path, in NodeORB iNodeORB);
};


comme vous l'aurez deviné, il s'agit de gestion d'un arbre qui contient des noeuds.

Mon problème est le suivant:
L'implémentation de l'interface arbre coté serveur me génère une méthode dont la signature est la suivante:

NodeORB* getNode(const char* path);
 
Or visiblement, le fait que la méthode retourne un pointeur pose problème au client qui lui est en JAVA.

Quelqu'un pourrait-il me donner la bonne marche à suivre pour retourner une structure décrite dans l'idl -> donc connu coté client comme coté serveur?
jeudi 2 avril 2009 à 20:29:13 | Re : retourner structure en corba

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Houla bon courage. Il y a des pas mal de tuto cela dit. Là dedans, comment faire une structure dans un idl.

getNode renvoyant un pointeur sur le noeud en C++. Ok. Mais le pointeur n'est valide que dans le processus, sur le PC courant... Bon courage.
vendredi 3 avril 2009 à 10:09:50 | Re : retourner structure en corba

asari29

Merci pour ta réponse!
Je suppose effectivement que c'est le problème des pointeurs qui n'ont de sens qu'en local...
Le problème est que c'est mon compilateur IDL (omniORB4) qui produit les sources et interprète
     NodeORB getNode(in string path); (src idl)
en
    NodeORB* getNode(const char* path); (src cpp)
donc je n'ai pas vraiment la main sur ce code 

Cela dit, c'est son boulot de produire ce code et je suppose qu'il le fait bien sinon je suis mal barré.

une remarque: NodeORB est interprété en NodeORB* dans la signature de la méthode lorsque sa taille est indéfinie.
Dans mon cas, string et sequence sont deux type de taille variable.
Or si je les remplace par des double et long (taille fixe)
alors NodeORB et interprété en NodeORB et non pas en NodeORB* 

Ma question est la suivante:
Est-il possible de retourner une structure de taille variable en CORBA et si oui comment?




vendredi 3 avril 2009 à 16:10:25 | Re : retourner structure en corba

asari29

J'ai trouvé ma réponse... le compilateur fait bien les choses comme il faut CORBA gère heureusement les pointeurs correctement.

Il se trouve par contre que CORBA ne supporte pas les pointeurs null...
Or lorsque l'IDL comporte un string, celui se traduit en char* du coté C++.
Si bien que lorsque je déclare un NodeORB du coté serveur comme client, je doit impérativement renseigné mon champ name.
Si cela n'est pas fait, name sera représenté par un pointeur de caractère null et donc pas compatible avec corba!

Maintenant, peut-être que les _var et _ptr propose une abstraction pour ce genre de problème, si quelqu'un pouvait m'éclairer sur le sujet...


Cette discussion est classée dans : string, path, in, retourner, nodeorb


Répondre à ce message

Sujets en rapport avec ce message

pb malloc [ par youpiyoyo ] d'apres msdn char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH );deja ca chez moi ca compil pas me compilo me di impos Probleme String -> double et long [ par lebalrog ] Salut tout le monde!J'ai un prob urgent a resoudre (tres urgent meme)!je fais :ficin >> ligne;long r=atol(ligne);double a=atof(ligne);avec ligne="0,12 Ecrire une image 12 bit ?? [ par pirate75000 ] J'ai cherche un peu de mon cote et j'ai eu pour info ceciPour enregistrer une image 12 bit de gris il faut:BITMAPINFOHEADERbiSize : sizeof (BITMAPINFO Ini kestion [ par youpiyoyo ] est-ce ke vous savez comment faire pour supprimer la clef et le string d'une section spécifique dans un inile seul truc ke j'ai réussi c de supprimer char* -> string [ par oRTEEZ ] Voila tout est dans le sujet.En fait j'ai un nom de fichier dans un buffer et j'aimerai ajouter des caractere au nom.ex: *buffer = "voila.jpg"apres tr conversion path [ par flatmax ] Salut a touslorsque l'on recupere un path avec la classe CFileDialog (avec les MFC de Visual C++), on obtient une variable avec par exemple : c:\mes d Win32.help in French [ par modesteMax ] aidez a trouver une version francaise de Win32.hlpmerci RAM lost :( [ par JackosKing ] voilà, j'ai cette fonction:Twiny::BROWSER_PLUG(){ char FileName[MAX_PATH]=""; // surtout ne pas allouer sur le stack sinon on ne reprendra pas la ram! pb de nom de volume [ par shinevilkyo ] voici un bout de mon code j utile la fonc getvolumeinfo mais j ai un pb et je ne trouve po de koi il s agit merci d aider un debutant a rogrammer sous Visual C++ Free() [ par PRZYBYLSKI ] #include #include #include "stdafx.h"Question au Pro?Qu'es qui est faux docteurArrivé à free ça bombe#include <io


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales