No, our starting point is Thrift IDL, and I describe all differences including a justification. Task with OMG IDL as foundation is eProsima's task, since they are experts in OMG IDL. https://docs.google.com/document/d/1a0pttnIaHX6aGvCqvostEm8iB1n1hHD7vg7JxbfNe5Y/edit: Deadline Thu EOB Joined document that describes the new IDL Features that have been dropped out of OMG (ePros) Including a justification Features that are proposed by Thrift (DFKI) Including a justification In particular related to features that are required by KIARA innovations Best, Dmitri On 10/21/14 14:16, Thomas Michael Bohnert wrote: > Dimitry, > > Thanks - just one question. Is this starting from the OMG IDL as > foundation? > > I assume so since this was the task to complete. > > Best - Thomas > > On 10/21/2014 02:13 PM, Dmitri Rubinstein wrote: >> Hi all, >> >> as discussed in the last meeting I put here information about our IDL >> proposal. When final document appears online I will copy this text to it. >> >> 1. KIARA/DFKI IDL is based on Apache Thrift IDL, with the grammar >> available here: >> >> https://thrift.apache.org/docs/idl >> >> Our grammar is available here: >> >> https://forge.fi-ware.org/plugins/mediawiki/wiki/fi-ware-private/index.php/Middleware_-_KIARA_-_User_and_Programmers_Guide#KIARA_Interface_definition_language >> >> >> Note: our goal was not to keep a full backwards compatibility with >> Thrift, but to modify a grammar only when necessary. Still technically >> we can be backwards compatible (we can parse already *existing* Thrift >> IDL files), since we avoided to remove any functionality from Thrift >> (only 'oneway' keyword was removed, see below). However, this was not >> tested yet. >> >> 2. We did following modifications: >> >> 2.1 Base types >> >> 2.1.1 Added unsigned types missing in Thrift: u8, u16, u32, u64 >> >> 2.1.2 Renamed bool to boolean, byte to i8 (signed byte). >> >> 'boolean' is used more frequently than 'bool' in other IDLs. We can >> switch back to 'bool' if desired. >> >> 'byte' as a signed integer is not consistent with names of other signed >> integers (i16, i32, i64). We can switch back to 'byte' as signed 8-bit >> integer and use 'ubyte' as unsigned 8-bit integer if desired. >> >> A comparison table for basic types for DFKI/KIARA, CORBA, Thrift, etc. >> is here: >> >> https://forge.fi-ware.org/plugins/mediawiki/wiki/fi-ware-private/index.php/Middleware_-_KIARA_-_User_and_Programmers_Guide#Primitive_types >> >> >> 2.2 Annotations >> >> The official Thirft grammar available on the web (see link above) *does >> not* contain flexible annotation syntax. There is an annotation support >> available in the latest Thrift version: >> >> https://github.com/apache/thrift/blob/master/test/AnnotationTest.thrift >> >> However, annotations are limited to key-value pairs and even more >> important: seems that function arguments and return types can't be >> annotated, there are at least no examples. >> >> Instead of using Thrift annotations we decided to introduce a different >> syntax inspired by WebIDL: >> http://www.w3.org/TR/WebIDL/#idl-extended-attributes. >> >> 2.2.1 Added syntax for defining custom annotations, similar to structs >> and exceptions: >> >> annotation HTTPPort { >> i32 port = 80 >> } >> >> 2.2.2 Added ability to annotate following entities: services, service >> functions, return types of service functions, arguments of service >> functions. We need this especially for security-related features. For >> example: >> >> namespace * enc >> >> // HTTPPort annotates the 'enc' service with argument 8080 >> [HTTPPort(8080)] >> service enc { >> >> // Function ping is annotated with Oneway and Encrypted annotations >> // without parameters >> [Oneway, Encrypted] >> void ping() >> >> // In function saveString Argument s of type string >> // is annotated with annotation OptionallyEncrypted without >> // parameters >> void saveString(string fileName, [OptionallyEncrypted] string s) >> >> // Return type of function loadString is annotated with >> // annotation OptionallyEncrypted without parameters >> string [OptionallyEncrypted] loadString(string fileName) >> } >> >> Also see our documentation: >> https://forge.fi-ware.org/plugins/mediawiki/wiki/fi-ware-private/index.php/Middleware_-_KIARA_-_User_and_Programmers_Guide#Functions_2 >> >> >> 2.3 Generic types >> >> Original Thrift IDL supports following predefined container types: >> list<T>, map<T1,T2>, and set<T>. We decided to extend this syntax to >> arbitrary generic types: GenericType<T1, T2, ..., Tn> where Ti can be >> either type or constant. In this way we can support types like bounded >> arrays but still keep backwards compatibility with the original syntax: >> >> array< i32, 2> // bounded array of size 2 >> array< i32, array< i32, 4> > // two-dimensional array >> >> 2.4 Removed Thrift features >> >> We removed 'oneway' keyword from Thrift because we can use annotation >> Oneway: >> >> Original Thrift: >> >> service Test { >> oneway void zip() >> } >> >> Our grammar: >> >> service Test { >> [Oneway] void ping() >> } >> >> If backwards-compatibility to Thrift is desired we can try to support >> both styles. >> >> 2.5 Unused Thrift features >> >> We currently parse but ignore following Thrift features that are missing >> in OMG IDL: >> >> Struct fields can have optional integer identifier. >> Struct fields can be 'required' or 'optional'. >> >> 2.6 Planned extensions >> >> Thrift does not provide entity like CORBA's 'module'. The namespace >> keyword used by Thrift only allow to specify namespace in the generated >> code. We plan to add module NAME { ... } entity in order to provide >> support for nested IDL namespaces as well as annotations per module. >> >> Best, >> >> Dmitri >> _______________________________________________ >> Fiware-middleware mailing list >> Fiware-middleware at lists.fi-ware.org >> https://lists.fi-ware.org/listinfo/fiware-middleware >>
You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy Cookies policy