corba servants' specific data


Well, i have a small question : in this mail, i will refer to the code 
example given in the corba standard on page 19-38 in the idl to C mapping. 
This code example refers to the C mapping of teh servant structure.

We want to pass our implementation functions some application specific data 
but as their signature is fixed to be (PortableServant_Servant servant, ..., 
CORBA_Environment *ev), it is impossible to add data as a new parameter. 
They use the folowing:
typedef struct AppServant {
  POA_Counter base;
  CORBA_Long value;
} AppServant;

AppServant Myservant ={.....};

then, they call POA_Counter__init (&MyServant, &ev)

My pb is that the standard signature of POA_Counter__init is : 
POA_Counter_init (POA_Counter *servant, CORBA_Environment *ev)
and we pass something which does not look like the right type. So: i want to 
know if this implicitely assumes that the POA_Counter_init function must be 
modified from its automaticaly generated form .

Note that if they had called POA_Counter__init (*MyServant, &ev), i would 
have accepted this (this beeing an awfull yuky hack not worth beeing in a 
standard) as it happens that the first member of MyServant which is 
*MyServant  is a pointer to a POA_Counter structure ...

Any ideas on this strange thing are welcome. And please, i know: i should ask 
this on some corba related list but my aol account is really slow and i 
cannot afford to download one more list mail traffic. Thank you for your 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]