/// =========================================================================== /// PIB DDS BASE DEFINITIONS /// =========================================================================== /// /// File: pib_dds_base.idl /// /// Copyright � 2013 and beyond by Consequor Consulting AG, Germany. /// All rights reserved. /// /// DO NOT COPY, USE, DISTRIBUTE IN ANY FORM WITHOUT WRITTEN /// PERMISSION BY CONSEQUOR CONSULTING AG. /// /// --------------------------------------------------------------------------- /// /// Usable with RTI's rtiddsgen. For more information on rtiddsgen see /// /// --------------------------------------------------------------------------- /// $Header$ /// /// $Log$ /// --------------------------------------------------------------------------- #if !defined( __PIB_DDS_BASE_IDL__ ) #define __PIB_DDS_BASE_IDL__ #include "pib_dds_idl_version_info.idl" module pib_dds { // ------------------------------------------------------------------------ // Global Type Definitions // ------------------------------------------------------------------------ const unsigned short UUID_LEN = 36; typedef string< UUID_LEN > uuid; // ------------------------------------------------------------------------ // Time and date // ------------------------------------------------------------------------ const unsigned short TIMESTAMP_DATETIME_LEN = 64; const unsigned short TIMESTAMP_TIMEZONE_LEN = 64; const unsigned short TIMESTAMP_FORMAT_LEN = 32; struct timestamp { wstring< TIMESTAMP_DATETIME_LEN > datetime; //@key wstring< TIMESTAMP_TIMEZONE_LEN > timezone; wstring< TIMESTAMP_FORMAT_LEN > format; }; // ------------------------------------------------------------------------ // Text related stuff // ------------------------------------------------------------------------ enum lang_coding { LANG_CODING_ISO_639_1, LANG_CODING_ISO_639_2 }; const unsigned short LANG_DESIGNATION_LEN = 16; struct lang { wstring< LANG_DESIGNATION_LEN > designation; //@key // e.g."en", "de", "en_UK" lang_coding coding; // e.g. "ISO 639-1", "ISO 639-2" }; enum text_encoding { TEXT_ENCODING_ASCII, TEXT_ENCODING_UTF8, TEXT_ENCODING_UTF16, TEXT_ENCODING_UTF32 }; struct text { wstring text; //@key lang lang; //@key text_encoding coding; }; const unsigned long TEXT_MAX_NR_DESIGNATIONS = 192; struct multi_lang_text { sequence< text, TEXT_MAX_NR_DESIGNATIONS > texts; }; // ------------------------------------------------------------------------ // Node and network related stuff // ------------------------------------------------------------------------ const unsigned short NODE_HOSTNAME_LEN = 255; const unsigned short NODE_OS_LEN = 255; struct node { wstring< NODE_HOSTNAME_LEN > hostname; wstring< NODE_OS_LEN> os; }; // ------------------------------------------------------------------------ // Participant Info // ------------------------------------------------------------------------ const unsigned short PARTICIPANT_INFO_NAME_LEN = 255; const unsigned short PARTICIPANT_INFO_PROCESS_ID_LEN = 64; const unsigned short PARTICIPANT_INFO_THREAD_ID_LEN = 64; struct participant_info { uuid uuid; //@key wstring< PARTICIPANT_INFO_NAME_LEN > name; uuid organization_uuid; // relation node node; uuid application_uuid; // relation wstring< PARTICIPANT_INFO_PROCESS_ID_LEN > process_id; wstring< PARTICIPANT_INFO_THREAD_ID_LEN > thread_id; }; // ------------------------------------------------------------------------ // Data model definitions // ------------------------------------------------------------------------ struct version_info { multi_lang_text info; uuid branch_uuid; // relation unsigned long long sequence_nr; }; struct object_base { uuid uuid; //@key wstring classname; version_info version_info; boolean is_versioned; uuid parent_uuid; timestamp valid_from; timestamp valid_until; }; struct branch { object_base header; multi_lang_text info; uuid object_uuid; // relation }; }; #endif