Dimitri,
Sorry, but then this is beyond was what requested yesterday.
Thanks for your contribution but we wont consider it.
Please read the minutes again and start from the OMG-IDL 3.5.
Best - Thomas
On 10/21/2014 02:26 PM, Dmitri Rubinstein wrote:
> 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