From: Michal Sojka Date: Mon, 9 Feb 2015 18:19:57 +0000 (+0100) Subject: Add relationship diagram of ORTE data structures X-Git-Url: http://rtime.felk.cvut.cz/gitweb/orte.git/commitdiff_plain/987838f7e0279204e882632ab4b4de052a7bcb31 Add relationship diagram of ORTE data structures Thanks to Martin Vajnar. --- diff --git a/doc/Makefile b/doc/Makefile index f4e9ca6..e6da076 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -44,3 +44,6 @@ clean: %.pdf: %.fig fig2dev -L pdf $^ $@ + +%.svg: %.uml + plantuml -tsvg $< diff --git a/doc/ORTE.svg b/doc/ORTE.svg new file mode 100644 index 0000000..399d4d1 --- /dev/null +++ b/doc/ORTE.svg @@ -0,0 +1 @@ +sock_tintfduint16_tportMessageBufferCDR_CodeccdrCodecCDR_Codec*cdrCodecDirectBooleanneedSendBooleancontainsInfoReplyTaskPropsock_tsockpthread_tthreadBooleanterminateMessageBuffermbORTEDomain*dTypeEntrygavl_cust_root_field_ttypespthread_rwlock_tlockTypeNodegavl_node_tnodeORTETypeRegistertypeRegisterPatternNodeul_list_node_tnodePathNametopicTypeNametypeORTESubscriptionPatternCallBacksubscriptionCallBackvoid*paramPatternEntryul_list_head_tpatternsORTEPatternCheckcheckORTEPatternMatchmatchvoid*parampthread_rwlock_tlockAppParamsHostIdhostIdAppIdappIdIPAddressunicastIPAddressList[MAX_INTERFACES]unsigned charunicastIPAddressCountIPAddressmetatrafficMulticastIPAddressList[MAX_INTERFACES]unsigned charmetatrafficMulticastIPAddressCountPortmetatrafficUnicastPortPortuserdataUnicastPortVendorIdvendorIdProtocolVersionprotocolVersionNtpTimeexpirationTimeIPAddressmanagerKeyList[MAX_INTERFACES]unsigned charmanagerKeyCountSequenceNumbervargAppsSequenceNumbervoid EVH1(ORTEDomain *,ObjectEntryAID *,ul_htim_time_t *)HTimFncRootNodeul_htim_node_thtimconst char*nameEVH1*funcObjectEntryAID*objectEntryAIDHTimNodeul_htim_queue_tcommonHTimFncRootNodecommonNodeul_htim_queue_tsendMetatrafficHTimFncRootNodesendMetatrafficNodeul_htim_queue_tsendUserDataHTimFncRootNodesendUserDataNodeint EVH2(ORTEDomain *,void *)HTimFncUserNodeul_htim_node_thtimconst char*namepthread_rwlock_t*lockEVH2*funcvoid*arg1ObjectEntryOIDgavl_node_toidNodeObjectIdoidGUID_RTPSguidObjectEntryAID*objectEntryAIDObjectEntryHID*objectEntryHIDvoid*attributesBooleanappMOMBooleanprivateCreatedHTimFncUserNodeexpirationPurgeTimervoid*instanceORTERecvCallBackrecvCallBackORTESendCallBacksendCallBackvoid*callBackParamNtpTimesendCallBackDelayHTimFncUserNodesendCallBackDelayTimergavl_node_tpsNodeul_list_head_tmulticastRemoteReadersintmulticastPortObjectEntryAIDgavl_node_taidNodeAppIdaidHTimNodehtimUnicastgavl_cust_root_field_toidRootObjectEntryOID*aobjectObjectEntryHIDgavl_node_thidNodeHostIdhidgavl_cust_root_field_taidRootObjectEntrygavl_cust_root_field_tobjRootpthread_rwlock_tobjRootLockul_htim_queue_thtimRootpthread_rwlock_thtimRootLockpthread_cond_thtimSendCondpthread_mutex_thtimSendMutexinthtimSendCondValueBooleanhtimNeedWakeUpParameterSequenceul_list_node_tnodeParameterIdparameterIDParameterLengthparameterLengthParameterparameterLocalu_char*parameterunion parameteru_charasStr[MAX_PARAMETER_LOCAL_LENGTH]NtpTimeasNtpTimeCORBA_unsigned_longasLongVendorIdasVendorIdProtocolVersionasProtocolVersionSequenceNumberasSequenceNumberCORBA_octetasOctetIPAddressasIPAddressPortasPortuint32_tasUInt32TypeChecksumasTypeChecksumCSChangeul_list_node_tnodeListgavl_node_tnodeGAVLSequenceNumbersnGUID_RTPSguidBooleanaliveSequenceNumbergapSNul_list_head_tattributesCDR_CodeccdrCodecul_list_head_twriterParticipantsintremoteReaderCountintremoteReaderBestintremoteReaderStrictNtpTimeremoteTimePublishedNtpTimelocalTimeReceivedCSTWriterParamsunsigned intregistrationRetriesNtpTimeregistrationPeriodNtpTimewaitWhileDataUnderwayTimeNtpTimerepeatAnnounceTimeNtpTimedelayResponceTimeNtpTimerefreshPeriodunsigned intHBMaxRetriesBooleanfullAcknowledgeCSChangeForReadergavl_node_tnodeul_list_node_tparticipantNodeCSTRemoteReader*cstRemoteReaderCSChange*csChangeStateMachineChFReadercommStateChFReaderHTimFncUserNodewaitWhileDataUnderwayTimerCSTRemoteReadergavl_node_tnodeCSTWriter*cstWriterObjectEntryOID*sobjectObjectEntryOID*pobjectGUID_RTPSguidgavl_cust_root_field_tcsChangeForReaderunsigned intcsChangesCounterStateMachineHBcommStateHBStateMachineSendcommStateSendunsigned intcommStateToSentCounterHTimFncUserNodedelayResponceTimerHTimFncUserNoderepeatAnnounceTimerunsigned intHBRetriesCounterNtpTimelastSentIssueTimeul_list_node_tmulticastNodeCSTWriterORTEDomain*domaingavl_node_tnodeGUID_RTPSguidObjectEntryOID*objectEntryOIDSequenceNumberfirstSNSequenceNumberlastSNCSTWriterParamsparamsul_list_head_tcsChangesunsigned intcsChangesCountergavl_cust_root_field_tcstRemoteReaderunsigned intcstRemoteReaderCounterpthread_rwlock_tlockHTimFncUserNoderefreshPeriodTimerunsigned intregistrationCounterHTimFncUserNoderegistrationTimerORTETypeRegister*typeRegisterunsigned intstrictReliableCounterunsigned intbestEffortsCounterpthread_cond_tcondCSChangeDestroyedpthread_mutex_tmutexCSChangeDestroyedintcondValueCSChangeDestroyedCSTReaderParamsNtpTimedelayResponceTimeMinNtpTimedelayResponceTimeMaxNtpTimerepeatActiveQueryTimeBooleanfullAcknowledgeunsigned intACKMaxRetriesCSChangeFromWritergavl_node_tnodeCSChange*csChangeStateMachineChFWritercommStateChFWriterCSTRemoteWritergavl_node_tnodeCSTReader*cstReaderObjectEntryOID*spobjectGUID_RTPSguidgavl_cust_root_field_tcsChangeFromWriterunsigned intcsChangesCounterSequenceNumbersnSequenceNumberfirstSNSequenceNumberlastSNStateMachineACKcommStateACKHTimFncUserNodedelayResponceTimerHTimFncUserNoderepeatActiveQueryTimerunsigned intACKRetriesCounterCSTReaderORTEDomain*domaingavl_node_tnodeGUID_RTPSguidObjectEntryOID*objectEntryOIDCSTReaderParamsparamsul_list_head_tcsChangesgavl_cust_root_field_tcstRemoteWriterunsigned intcstRemoteWriterCounterpthread_rwlock_tlockORTETypeRegister*typeRegisterCSTRemoteWriter*cstRemoteWriterSubscribedHTimFncUserNodedeadlineTimerHTimFncUserNodepersistenceTimerunsigned intstrictReliableCounterunsigned intbestEffortsCounterBooleancreatedByPatternCSTPublicationsgavl_cust_root_field_tcstWriterpthread_rwlock_tlockuint32_tcounterCSTSubscriptionsgavl_cust_root_field_tcstReaderpthread_rwlock_tlockuint32_tcounterPSEntrygavl_cust_root_field_tpublicationspthread_rwlock_tpublicationsLockgavl_cust_root_field_tsubscriptionspthread_rwlock_tsubscriptionsLockORTEDomainuint32_tdomainGUID_RTPSguidAppParams*appParamsObjectEntryOID*objectEntryOIDTaskProptaskRecvUnicastMetatrafficTaskProptaskRecvMulticastMetatrafficTaskProptaskRecvUnicastUserdataTaskProptaskRecvMulticastUserdataTaskProptaskSendTypeEntrytypeEntryObjectEntryobjectEntryPSEntrypsEntryPatternEntrypatternEntryORTEDomainPropdomainPropORTEDomainAppEventsdomainEventsORTEAppInfoappInfoORTEPubInfopubInfoORTESubInfosubInfoCSTWriterwriterApplicationSelfCSTReaderreaderManagersCSTReaderreaderApplicationsCSTWriterwriterManagersCSTWriterwriterApplicationsCSTWriterwriterPublicationsCSTReaderreaderPublicationsCSTWriterwriterSubscriptionsCSTReaderreaderSubscriptionsCSTPublicationspublicationsCSTSubscriptionssubscriptionsCDR_CodecCDR_Endiannesshost_endianCDR_Endiannessdata_endianCORBA_octet*bufferunsigned intbuf_lenunsigned intwptr_maxunsigned intwptrunsigned intrptrCORBA_booleanreadonlyCORBA_booleanrelease_bufferORTETypeRegisterconst char*typeNameORTETypeSerializeserializeORTETypeDeserializedeserializeORTETypeGetMaxSizegetMaxSizeunsigned intmaxSizeORTEDomainPropORTETasksProptasksPropORTEIFPropIFProp[MAX_INTERFACES]unsigned charIFCountORTEDomainBasePropbasePropORTEDomainWirePropwirePropORTEMulticastPropmulticastORTEPublProppublPropDefaultORTESubsPropsubsPropDefaultchar*mgrschar*keysIPAddressappLocalManagerIPAddresslistencharversion[60]intrecvBuffSizeintsendBuffSizeORTEAppInfoHostIdhostIdAppIdappIdIPAddress*unicastIPAddressListunsigned charunicastIPAddressCountIPAddress*metatrafficMulticastIPAddressListunsigned charmetatrafficMulticastIPAddressCountPortmetatrafficUnicastPortPortuserdataUnicastPortVendorIdvendorIdProtocolVersionprotocolVersionORTEPubInfoconst char*topicconst char*typeObjectIdobjectIdORTESubInfoconst char*topicconst char*typeObjectIdobjectIdORTEIFPropint32_tifFlagsIPAddressipAddressORTEDomainBasePropunsigned intregistrationMgrRetriesNtpTimeregistrationMgrPeriodunsigned intregistrationAppRetriesNtpTimeregistrationAppPeriodNtpTimeexpirationTimeNtpTimerefreshPeriodNtpTimepurgeTimeNtpTimerepeatAnnounceTimeNtpTimerepeatActiveQueryTimeNtpTimedelayResponceTimeACKMinNtpTimedelayResponceTimeACKMaxunsigned intHBMaxRetriesunsigned intACKMaxRetriesNtpTimemaxBlockTimeORTEDomainWirePropunsigned intmetaBytesPerPacketunsigned intmetaBytesPerFastPacketunsigned intmetabitsPerACKBitmapunsigned intuserBytesPerPacketORTEPublPropPathNametopicTypeNametypeNameTypeChecksumtypeChecksumBooleanexpectsAckNtpTimepersistenceuint32_treliabilityOffereduint32_tsendQueueSizeint32_tstrengthuint32_tcriticalQueueLevelNtpTimeHBNornalRateNtpTimeHBCQLRateunsigned intHBMaxRetriesNtpTimemaxBlockTimeORTESubsPropPathNametopicTypeNametypeNameTypeChecksumtypeChecksumNtpTimeminimumSeparationuint32_trecvQueueSizeuint32_treliabilityRequestedNtpTimedeadlineuint32_tmodeIPAddressmulticast \ No newline at end of file diff --git a/doc/ORTE.uml b/doc/ORTE.uml new file mode 100644 index 0000000..e0ce7f0 --- /dev/null +++ b/doc/ORTE.uml @@ -0,0 +1,571 @@ +@startuml + +object sock_t { + int fd + uint16_t port +} + +object MessageBuffer { + CDR_Codec cdrCodec + CDR_Codec *cdrCodecDirect + Boolean needSend + Boolean containsInfoReply +} + +object TaskProp { + sock_t sock + pthread_t thread + Boolean terminate + MessageBuffer mb + ORTEDomain *d +} + +object TypeEntry { + gavl_cust_root_field_t types + pthread_rwlock_t lock +} + +object TypeNode { + gavl_node_t node + ORTETypeRegister typeRegister +} + +object PatternNode { + ul_list_node_t node + PathName topic + TypeName type + ORTESubscriptionPatternCallBack subscriptionCallBack + void *param +} + +object PatternEntry { + ul_list_head_t patterns + ORTEPatternCheck check + ORTEPatternMatch match + void *param + pthread_rwlock_t lock +} + +object AppParams { + HostId hostId + AppId appId + IPAddress unicastIPAddressList[MAX_INTERFACES] + unsigned char unicastIPAddressCount + IPAddress metatrafficMulticastIPAddressList[MAX_INTERFACES] + unsigned char metatrafficMulticastIPAddressCount + Port metatrafficUnicastPort + Port userdataUnicastPort + VendorId vendorId + ProtocolVersion protocolVersion + NtpTime expirationTime + IPAddress managerKeyList[MAX_INTERFACES] + unsigned char managerKeyCount + SequenceNumber vargAppsSequenceNumber +} + +object "void EVH1(ORTEDomain *,ObjectEntryAID *,ul_htim_time_t *)" as EVH1 + +object HTimFncRootNode { + ul_htim_node_t htim + const char *name + EVH1 *func + ObjectEntryAID *objectEntryAID +} + +object HTimNode { + ul_htim_queue_t common + HTimFncRootNode commonNode + ul_htim_queue_t sendMetatraffic + HTimFncRootNode sendMetatrafficNode + ul_htim_queue_t sendUserData + HTimFncRootNode sendUserDataNode +} + +object "int EVH2(ORTEDomain *,void *)" as EVH2 + +object HTimFncUserNode { + ul_htim_node_t htim + const char *name + pthread_rwlock_t *lock + EVH2 *func + void *arg1 +} + +object ObjectEntryOID { + gavl_node_t oidNode + ObjectId oid + GUID_RTPS guid + ObjectEntryAID *objectEntryAID + ObjectEntryHID *objectEntryHID + void *attributes + Boolean appMOM + Boolean privateCreated + HTimFncUserNode expirationPurgeTimer + void *instance + ORTERecvCallBack recvCallBack + ORTESendCallBack sendCallBack + void *callBackParam + NtpTime sendCallBackDelay + HTimFncUserNode sendCallBackDelayTimer + gavl_node_t psNode + ul_list_head_t multicastRemoteReaders + int multicastPort +} + +object ObjectEntryAID { + gavl_node_t aidNode + AppId aid + HTimNode htimUnicast + gavl_cust_root_field_t oidRoot + ObjectEntryOID *aobject +} + +object ObjectEntryHID { + gavl_node_t hidNode + HostId hid + gavl_cust_root_field_t aidRoot +} + +object ObjectEntry { + gavl_cust_root_field_t objRoot + pthread_rwlock_t objRootLock + ul_htim_queue_t htimRoot + pthread_rwlock_t htimRootLock + pthread_cond_t htimSendCond + pthread_mutex_t htimSendMutex + int htimSendCondValue + Boolean htimNeedWakeUp +} + +object ParameterSequence { + ul_list_node_t node + ParameterId parameterID + ParameterLength parameterLength + Parameter parameterLocal + u_char *parameter +} + +object "union parameter" as parameter { + u_char asStr[MAX_PARAMETER_LOCAL_LENGTH] + NtpTime asNtpTime + CORBA_unsigned_long asLong + VendorId asVendorId + ProtocolVersion asProtocolVersion + SequenceNumber asSequenceNumber + CORBA_octet asOctet + IPAddress asIPAddress + Port asPort + uint32_t asUInt32 + TypeChecksum asTypeChecksum +} + +object CSChange { + ul_list_node_t nodeList + gavl_node_t nodeGAVL + SequenceNumber sn + GUID_RTPS guid + Boolean alive + SequenceNumber gapSN + ul_list_head_t attributes + CDR_Codec cdrCodec + ul_list_head_t writerParticipants + int remoteReaderCount + int remoteReaderBest + int remoteReaderStrict + NtpTime remoteTimePublished + NtpTime localTimeReceived +} + +object CSTWriterParams { + unsigned int registrationRetries + NtpTime registrationPeriod + NtpTime waitWhileDataUnderwayTime + NtpTime repeatAnnounceTime + NtpTime delayResponceTime + NtpTime refreshPeriod + unsigned int HBMaxRetries + Boolean fullAcknowledge +} + +object CSChangeForReader { + gavl_node_t node + ul_list_node_t participantNode + CSTRemoteReader *cstRemoteReader + CSChange *csChange + StateMachineChFReader commStateChFReader + HTimFncUserNode waitWhileDataUnderwayTimer +} + +object CSTRemoteReader { + gavl_node_t node + CSTWriter *cstWriter + ObjectEntryOID *sobject + ObjectEntryOID *pobject + GUID_RTPS guid + + gavl_cust_root_field_t csChangeForReader + unsigned int csChangesCounter + + StateMachineHB commStateHB + StateMachineSend commStateSend + unsigned int commStateToSentCounter + + HTimFncUserNode delayResponceTimer + HTimFncUserNode repeatAnnounceTimer + + unsigned int HBRetriesCounter + + NtpTime lastSentIssueTime + + ul_list_node_t multicastNode +} + +object CSTWriter { + ORTEDomain *domain + gavl_node_t node + GUID_RTPS guid + ObjectEntryOID *objectEntryOID + + SequenceNumber firstSN + SequenceNumber lastSN + + CSTWriterParams params + + ul_list_head_t csChanges + unsigned int csChangesCounter + gavl_cust_root_field_t cstRemoteReader + unsigned int cstRemoteReaderCounter + pthread_rwlock_t lock + + HTimFncUserNode refreshPeriodTimer + + unsigned int registrationCounter + HTimFncUserNode registrationTimer + + ORTETypeRegister *typeRegister + + unsigned int strictReliableCounter + unsigned int bestEffortsCounter + pthread_cond_t condCSChangeDestroyed + pthread_mutex_t mutexCSChangeDestroyed + int condValueCSChangeDestroyed +} + +object CSTReaderParams { + NtpTime delayResponceTimeMin + NtpTime delayResponceTimeMax + NtpTime repeatActiveQueryTime + Boolean fullAcknowledge + unsigned int ACKMaxRetries +} + +object CSChangeFromWriter { + gavl_node_t node + CSChange *csChange + StateMachineChFWriter commStateChFWriter +} + +object CSTRemoteWriter { + gavl_node_t node + CSTReader *cstReader + ObjectEntryOID *spobject + GUID_RTPS guid + + gavl_cust_root_field_t csChangeFromWriter + unsigned int csChangesCounter + + SequenceNumber sn + SequenceNumber firstSN + SequenceNumber lastSN + + StateMachineACK commStateACK + + HTimFncUserNode delayResponceTimer + HTimFncUserNode repeatActiveQueryTimer + + unsigned int ACKRetriesCounter +} + +object CSTReader { + ORTEDomain *domain + gavl_node_t node + GUID_RTPS guid + ObjectEntryOID *objectEntryOID + + CSTReaderParams params + + ul_list_head_t csChanges + gavl_cust_root_field_t cstRemoteWriter + unsigned int cstRemoteWriterCounter + pthread_rwlock_t lock + + ORTETypeRegister *typeRegister + + CSTRemoteWriter *cstRemoteWriterSubscribed + HTimFncUserNode deadlineTimer + HTimFncUserNode persistenceTimer + + unsigned int strictReliableCounter + unsigned int bestEffortsCounter + + Boolean createdByPattern +} + +object CSTPublications { + gavl_cust_root_field_t cstWriter + pthread_rwlock_t lock + uint32_t counter +} + +object CSTSubscriptions { + gavl_cust_root_field_t cstReader + pthread_rwlock_t lock + uint32_t counter +} + +object PSEntry { + gavl_cust_root_field_t publications + pthread_rwlock_t publicationsLock + gavl_cust_root_field_t subscriptions + pthread_rwlock_t subscriptionsLock +} + +object ORTEDomain { + uint32_t domain + GUID_RTPS guid + AppParams *appParams + ObjectEntryOID *objectEntryOID + + TaskProp taskRecvUnicastMetatraffic + TaskProp taskRecvMulticastMetatraffic + TaskProp taskRecvUnicastUserdata + TaskProp taskRecvMulticastUserdata + TaskProp taskSend + + TypeEntry typeEntry + ObjectEntry objectEntry + PSEntry psEntry + PatternEntry patternEntry + + ORTEDomainProp domainProp + ORTEDomainAppEvents domainEvents + + ORTEAppInfo appInfo + ORTEPubInfo pubInfo + ORTESubInfo subInfo + + CSTWriter writerApplicationSelf + CSTReader readerManagers + CSTReader readerApplications + CSTWriter writerManagers + CSTWriter writerApplications + CSTWriter writerPublications + CSTReader readerPublications + CSTWriter writerSubscriptions + CSTReader readerSubscriptions + + CSTPublications publications + CSTSubscriptions subscriptions +} + +object CDR_Codec { + CDR_Endianness host_endian + CDR_Endianness data_endian + CORBA_octet *buffer + unsigned int buf_len + unsigned int wptr_max + unsigned int wptr + unsigned int rptr + CORBA_boolean readonly + CORBA_boolean release_buffer +} + +object ORTETypeRegister { + const char *typeName + ORTETypeSerialize serialize + ORTETypeDeserialize deserialize + ORTETypeGetMaxSize getMaxSize + unsigned int maxSize +} + +object ORTEDomainProp { + ORTETasksProp tasksProp + ORTEIFProp IFProp[MAX_INTERFACES] + unsigned char IFCount + ORTEDomainBaseProp baseProp + ORTEDomainWireProp wireProp + ORTEMulticastProp multicast + ORTEPublProp publPropDefault + ORTESubsProp subsPropDefault + char *mgrs + char *keys + IPAddress appLocalManager + IPAddress listen + char version[60] + int recvBuffSize + int sendBuffSize +} + +object ORTEAppInfo { + HostId hostId + AppId appId + IPAddress *unicastIPAddressList + unsigned char unicastIPAddressCount + IPAddress *metatrafficMulticastIPAddressList + unsigned char metatrafficMulticastIPAddressCount + Port metatrafficUnicastPort + Port userdataUnicastPort + VendorId vendorId + ProtocolVersion protocolVersion +} + +object ORTEPubInfo { + const char *topic + const char *type + ObjectId objectId +} + +object ORTESubInfo { + const char *topic + const char *type + ObjectId objectId +} + +object ORTEIFProp { + int32_t ifFlags + IPAddress ipAddress +} + +object ORTEDomainBaseProp { + unsigned int registrationMgrRetries + NtpTime registrationMgrPeriod + unsigned int registrationAppRetries + NtpTime registrationAppPeriod + NtpTime expirationTime + NtpTime refreshPeriod + NtpTime purgeTime + NtpTime repeatAnnounceTime + NtpTime repeatActiveQueryTime + NtpTime delayResponceTimeACKMin + NtpTime delayResponceTimeACKMax + unsigned int HBMaxRetries + unsigned int ACKMaxRetries + NtpTime maxBlockTime +} + +object ORTEDomainWireProp { + unsigned int metaBytesPerPacket + unsigned int metaBytesPerFastPacket + unsigned int metabitsPerACKBitmap + unsigned int userBytesPerPacket +} + +object ORTEPublProp { + PathName topic + TypeName typeName + TypeChecksum typeChecksum + Boolean expectsAck + NtpTime persistence + uint32_t reliabilityOffered + uint32_t sendQueueSize + int32_t strength + uint32_t criticalQueueLevel + NtpTime HBNornalRate + NtpTime HBCQLRate + unsigned int HBMaxRetries + NtpTime maxBlockTime +} + +object ORTESubsProp { + PathName topic + TypeName typeName + TypeChecksum typeChecksum + NtpTime minimumSeparation + uint32_t recvQueueSize + uint32_t reliabilityRequested + NtpTime deadline + uint32_t mode + IPAddress multicast +} + +TaskProp ..> sock_t +TaskProp ..> MessageBuffer +HTimNode ..> HTimFncRootNode +HTimFncRootNode --> EVH1 +HTimFncUserNode --> EVH2 +ObjectEntryOID ..> HTimFncUserNode +ObjectEntryAID --> ObjectEntryOID +ObjectEntryAID ..> HTimNode +ObjectEntryAID <-- HTimFncRootNode +HTimNode o-- HTimFncUserNode +HTimNode o-- HTimFncUserNode +HTimNode o-- HTimFncUserNode +ObjectEntryOID --> ObjectEntryHID +ObjectEntryOID --> ObjectEntryAID +ParameterSequence ..> parameter +CSChangeForReader --> CSChange +CSChangeForReader ..> HTimFncUserNode +CSChangeForReader --> CSTRemoteReader +CSTRemoteReader ..> HTimFncUserNode +CSTRemoteReader --> ObjectEntryOID +CSTRemoteReader --> CSTWriter +CSTRemoteReader o-- CSChangeForReader +CSTWriter ..> CSTWriterParams +CSTWriter --> ObjectEntryOID +CSTWriter --> ORTETypeRegister +CSTWriter ..> HTimFncUserNode +CSTWriter o-- CSChange +CSTWriter o-- CSTRemoteReader +CSChangeFromWriter --> CSChange +CSTRemoteWriter -- CSTReader +CSTRemoteWriter --> ObjectEntryOID +CSTRemoteWriter ..> HTimFncUserNode +CSTRemoteWriter o-- CSChangeFromWriter +CSTReader --> ObjectEntryOID +CSTReader ..> CSTReaderParams +CSTReader ..> HTimFncUserNode +CSTReader --> ORTETypeRegister +CSTReader o-- CSChange +CSTReader o-- CSTRemoteWriter +ORTEDomain --> ObjectEntryOID +ORTEDomain ..> TaskProp +ORTEDomain ..> TypeEntry +ORTEDomain ..> ObjectEntry +ORTEDomain ..> PSEntry +ORTEDomain ..> PatternEntry +ORTEDomain ..> CSTWriter +ORTEDomain ..> CSTReader +ORTEDomain ..> CSTPublications +ORTEDomain ..> CSTSubscriptions +ORTEDomain --> AppParams +ORTEDomain <-- CSTWriter +ORTEDomain <-- CSTReader +ORTEDomain ..> ORTEAppInfo +ORTEDomain ..> ORTEPubInfo +ORTEDomain ..> ORTESubInfo +MessageBuffer --> CDR_Codec +MessageBuffer ..> CDR_Codec +CSChange ..> CDR_Codec +CSChange o-- ParameterSequence +CSChange o-- CSChangeForReader +ORTEDomain <-- TaskProp +ORTEDomain ..> ORTEDomainProp +TypeNode ..> ORTETypeRegister +TypeEntry o-- TypeNode +PatternEntry o-- PatternNode +ORTEDomainProp --|> ORTEIFProp +ORTEDomainProp ..> ORTEDomainBaseProp +ORTEDomainProp ..> ORTEDomainWireProp +ORTEDomainProp ..> ORTEPublProp +ORTEDomainProp ..> ORTESubsProp +ObjectEntry o-- ObjectEntryHID +ObjectEntry o-- HTimFncRootNode +ObjectEntryHID o-- ObjectEntryAID +ObjectEntryAID o-- ObjectEntryOID +PSEntry o-- ObjectEntryOID +PSEntry o-- ObjectEntryOID +ObjectEntryOID o-- CSTRemoteReader +CSTPublications o-- CSTWriter +CSTSubscriptions o-- CSTReader + +@enduml \ No newline at end of file