Martin B.
2012-08-20 10:24:12 UTC
Our CORBA API currently has an interface like:
module XYZ {
...
enum DataType {
FloatingPointT,
IntegerT
};
// v 1.1
union Value switch (DataType) {
FloatingPointT : double dv;
IntegerT : long iv;
};
interface ... {
Value GetValue(....);
...
We now would like to extend this interface to allow for string values in
addition to the two existing types:
// v 1.2
enum DataType {
FloatingPointT,
IntegerT,
StringT
};
union Value switch (DataType) {
FloatingPointT : double dv;
IntegerT : long iv;
StringT: string;
};
and keep the interface the same otherwise.
Is a client compiled with v1-1.idl supposed to be able to talk to a
server compiled with v1-2.idl -- where the definition of the union (and
the enum) differ but are a pure addition to the existing interface?
Can a client correctly invoke GetValue() as long as this function
doesn't return a unknown datatype?
Is this covered by the CORBA spec at all?
Note: It *does* indeed work when I test it with omniORB 4.1.4 (both
client and server) but that doesn't tell me whether it'll work with all
possible client ORBs!
Thanks for any pointers!
cheers,
Martin
module XYZ {
...
enum DataType {
FloatingPointT,
IntegerT
};
// v 1.1
union Value switch (DataType) {
FloatingPointT : double dv;
IntegerT : long iv;
};
interface ... {
Value GetValue(....);
...
We now would like to extend this interface to allow for string values in
addition to the two existing types:
// v 1.2
enum DataType {
FloatingPointT,
IntegerT,
StringT
};
union Value switch (DataType) {
FloatingPointT : double dv;
IntegerT : long iv;
StringT: string;
};
and keep the interface the same otherwise.
Is a client compiled with v1-1.idl supposed to be able to talk to a
server compiled with v1-2.idl -- where the definition of the union (and
the enum) differ but are a pure addition to the existing interface?
Can a client correctly invoke GetValue() as long as this function
doesn't return a unknown datatype?
Is this covered by the CORBA spec at all?
Note: It *does* indeed work when I test it with omniORB 4.1.4 (both
client and server) but that doesn't tell me whether it'll work with all
possible client ORBs!
Thanks for any pointers!
cheers,
Martin