[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