Quoting [Ga?l Le Mahec] (Sep 22 2009):
But I have a question, to help me understand: so far I had the impression that rpc calls would, in the new model, also accept a mixture of the old style parameters and the new style data handles - is that the case?
Yes it is the case. We tried to preserve a maximum backward compatibility and in the ideal implementation the Grid RPC call should accept old style parameters as well as data handles.
If yes, then we would need to change the parameters for the rpc.call() method in a way that both are accepted.
A possible solution could be to modify the current saga::rpc::parameter class to be an abstract class which is "derived" into two different subclasses: the first one encapsulates a saga::buffer and is similar to the current saga::rpc::parameter and the second one implements the new data handle. But maybe there are other ways to proceed (using an interface ?) avoiding to change too deeply the current rpc::parameter class.
I think that this would be the cleanest solution. It may be useful to add some rudimentary means for inspection to the abstract class, like get_type() which would return an enum 'Buffer' or 'Handle' - what do you think? That would also simplify implementations which only support one type. Well, that would make the class concrete (i.e. not abstract), but so what? One could leave the constructor private, so that the user cannot accidentically create the base class itself... Just thinking out loud here... Best, Andre. -- Nothing is ever easy.