[saga-core-wg] Grid RPC data management & SAGA

Gaël Le Mahec gael.le.mahec at ens-lyon.fr
Thu Sep 24 17:47:56 CDT 2009


> Some suggested changes below:

>> [...]
>>
>> 	class buffer_parameter : extends parameter
>
> This one should then also inherit saga::buffer I guess.

For a C++ mapping, it is probably the easiest and cleanest way but if  
I remember well, SIDL does not allow multiple inheritance. So I  
avoided to use it. A solution is then to encapsulate a buffer object  
inside the buffer_parameter class.

>> [...]

> What would a container_parameter look like?  I am not sure I
> understood that one, yet.

Ooops, I forgot to give the container class.

class container_parameter : extends handle_parameter
{
	/* For a container, the dimension size is the size of the
	 * container which is increasing each time we add a data.
	 * And the data type is "Container".
	 *
	 * So, the constructor call its parent constructor like this:
	 * 	saga::rpc::handle_parameter([0], input_uris,
	 *							      output_uris,
	 *							      Container,
	 *							      data_modes);
	 */

	CONSTRUCTOR(in array<uri> input_uris,
					 in array<uri> output_uris,
					 in array<data_mode>
						 data_modes,
					 out container_parameter obj);

	// add a data into this data container
	set_data(in parameter data, in int rank);

	// get a data from this data container
	get_data(out parameter data, in int rank);

	// add a data at the end of this data container
	push_back(in parameter data);
	...

}

A container is then a "special" handle_parameter which contains a set  
of parameters (accessible using an index value or push/pop methods).  
We defined it in the Grid RPC data management document to manage sets  
of data.
(We have some use-cases where a service is called with a variable  
length set of input data and a variable length set of output).

By using the "parameter" class as the type a "container_parameter" can  
manage, all the different data types can be stored in the container.

Regards,

Gaël.




More information about the saga-core-wg mailing list