Objet entrée sortie et propriété exécuter sur serveur

J’utilise souvent un objet comme paramètre entrée/sortie (E/S) ; exemple :

<code 4D>
//code appelant
c_objet($es_o)
$es_o:=new object()
$es_o.action:=“lire”
cacheInfo($es_o)
</code 4D>

<code 4D>
//cacheInfo ($objES)
$es_o:=$1
if($es_o.action=“lire”)
$es_o.cache:=Get cache size
end if
</code 4D>

Ça marche toujours bien, sauf que dans ce cas particulier, ma méthode “cacheInfo” doit avoir l’attribut “exécuter sur le serveur” et que, quand je l’exécute depuis un client, l’objet $es_o me revient inchangé.

C’est une limitation connue ?

note : en retournant mon objet “enrichit” par le serveur dans $0, ça marche, ce n’est pas une problème de faisabilité. J’aimerais juste comprendre pourquoi une méthode EoS (exécutée sur serveur) peut modifier un $1 pointeur mais pas un $1 objet ; ces deux $1 sont des références.

Bonjour Arnaud,

j’avoue que je n’ai toujours pas bien compris comment cela fonctionnait entre les 2. Du coup, j’y vais à la grosse cuillère (je sais pas bien):

<code 4D>
C_OBJECT(<>monObjet)
<>monObjet:=New object

SET PROCESS VARIABLE(-100;<>monObjet;<>monObjet)
faitCeQueTuAsaFaireIci
GET PROCESS VARIABLE(-100;<>monObjet;<>monObjet)
</code 4D>

le diamant est là car j’ai besoin d’y accéder dans différent process et ai pas encore 'poussé" le machin dans le Storage, mais ca viendra prochainement.

: Arnaud DE MONTARD

note : en retournant mon objet “enrichit” par le serveur dans $0, ça
marche, ce n’est pas une problème de faisabilité. J’aimerais juste
comprendre pourquoi une méthode EoS (exécutée sur serveur) peut
modifier un $1 pointeur mais pas un $1 objet ; ces deux $1 sont des
références.
Et avec un pointeur sur objet ? J’aime bien faire ça, ça permet de créer l’objet dans la méthode si pas besoin de paramètre en entrée…

: Eric TROTTA

Et avec un pointeur sur objet ? J’aime bien faire ça, ça permet de
créer l’objet dans la méthode si pas besoin de paramètre en entrée…
Je vais essayer (quoique… deux niveaux de référence, c’est le mal, je t’ai repéré, satanas)
Cela dit, si tu n’as pas besoin de paramètre en entrée, pourquoi ne pas faire $0 objet ?

ça y est, j’ai la preuve, Éric EST LE MAL : je viens de planter mon serveur.

Voilà, après un test non explosé en vol, le pointeur en surcouche ne marche pas. J’avais remarqué qu’il y a une limite aux pointeurs passés au serveur (1 “niveau de pointage”, pas plus), ça semble plus restrictif avec les objets. Bizarre, j’étais persuadé l’avoir déjà fait.

Tiens ça me rappelle https://forums.4d.com/Post/FR/28952708/0/0/un vieux post> :roll:

: Arnaud DE MONTARD
: Eric TROTTA

Et avec un pointeur sur objet ? J’aime bien faire ça, ça permet de
créer l’objet dans la méthode si pas besoin de paramètre en entrée…
Je vais essayer (quoique… deux niveaux de référence, c’est le mal,
je t’ai repéré, satanas)
Cela dit, si tu n’as pas besoin de paramètre en entrée, pourquoi ne
pas faire $0 objet ?
Je suis dans une méthode plus générale où j’ai un peu tous les cas possibles, en entrée, en sortie, l’un, l’autre, les 2 ou aucun des 2…

: Arnaud DE MONTARD

ça y est, j’ai la preuve, Éric EST LE MAL : je viens de planter mon
serveur.
Ah ah ah ah :twisted: