]> rtime.felk.cvut.cz Git - orte.git/blob - doc/ORTE.uml
Add shell.nix
[orte.git] / doc / ORTE.uml
1 @startuml
2
3 object sock_t {
4   int           fd
5   uint16_t      port
6 }
7
8 object MessageBuffer {
9   CDR_Codec     cdrCodec
10   CDR_Codec     *cdrCodecDirect
11   Boolean               needSend
12   Boolean               containsInfoReply
13 }
14
15 object TaskProp {
16   sock_t                        sock
17   pthread_t                     thread
18   Boolean                       terminate
19   MessageBuffer mb
20   ORTEDomain            *d
21 }
22
23 object TypeEntry {
24   gavl_cust_root_field_t        types
25   pthread_rwlock_t              lock
26 }
27
28 object TypeNode {
29   gavl_node_t           node
30   ORTETypeRegister      typeRegister
31 }
32
33 object PatternNode {
34   ul_list_node_t                                                node
35   PathName                                              topic
36   TypeName                                              type
37   ORTESubscriptionPatternCallBack               subscriptionCallBack
38   void                                                          *param
39 }
40
41 object PatternEntry {
42   ul_list_head_t                        patterns
43   ORTEPatternCheck              check
44   ORTEPatternMatch              match
45   void                                  *param
46   pthread_rwlock_t              lock
47 }
48
49 object AppParams {
50   HostId                        hostId
51   AppId                 appId
52   IPAddress             unicastIPAddressList[MAX_INTERFACES]
53   unsigned char         unicastIPAddressCount
54   IPAddress             metatrafficMulticastIPAddressList[MAX_INTERFACES]
55   unsigned char         metatrafficMulticastIPAddressCount
56   Port                          metatrafficUnicastPort
57   Port                          userdataUnicastPort
58   VendorId                      vendorId
59   ProtocolVersion       protocolVersion
60   NtpTime                       expirationTime
61   IPAddress             managerKeyList[MAX_INTERFACES]
62   unsigned char         managerKeyCount
63   SequenceNumber        vargAppsSequenceNumber
64 }
65
66 object "void EVH1(ORTEDomain *,ObjectEntryAID *,ul_htim_time_t *)" as EVH1
67
68 object HTimFncRootNode {
69   ul_htim_node_t        htim
70   const char            *name
71   EVH1                  *func
72   ObjectEntryAID        *objectEntryAID
73 }
74
75 object HTimNode {
76   ul_htim_queue_t       common
77   HTimFncRootNode       commonNode
78   ul_htim_queue_t       sendMetatraffic
79   HTimFncRootNode       sendMetatrafficNode
80   ul_htim_queue_t       sendUserData
81   HTimFncRootNode       sendUserDataNode
82 }
83
84 object "int EVH2(ORTEDomain *,void *)" as EVH2
85
86 object HTimFncUserNode {
87   ul_htim_node_t        htim
88   const char            *name
89   pthread_rwlock_t      *lock
90   EVH2                  *func
91   void                          *arg1
92 }
93
94 object ObjectEntryOID {
95   gavl_node_t                   oidNode
96   ObjectId                              oid
97   GUID_RTPS                     guid
98   ObjectEntryAID                *objectEntryAID
99   ObjectEntryHID                *objectEntryHID
100   void                                  *attributes
101   Boolean                               appMOM
102   Boolean                               privateCreated
103   HTimFncUserNode               expirationPurgeTimer
104   void                                  *instance
105   ORTERecvCallBack              recvCallBack
106   ORTESendCallBack              sendCallBack
107   void                                  *callBackParam
108   NtpTime                               sendCallBackDelay
109   HTimFncUserNode               sendCallBackDelayTimer
110   gavl_node_t                   psNode
111   ul_list_head_t                        multicastRemoteReaders
112   int                                   multicastPort
113 }
114
115 object ObjectEntryAID {
116   gavl_node_t                   aidNode
117   AppId                         aid
118   HTimNode                      htimUnicast
119   gavl_cust_root_field_t        oidRoot
120   ObjectEntryOID                *aobject
121 }
122
123 object ObjectEntryHID {
124   gavl_node_t                   hidNode
125   HostId                                hid
126   gavl_cust_root_field_t        aidRoot
127 }
128
129 object ObjectEntry {
130   gavl_cust_root_field_t        objRoot
131   pthread_rwlock_t              objRootLock
132   ul_htim_queue_t               htimRoot
133   pthread_rwlock_t              htimRootLock
134   pthread_cond_t                htimSendCond
135   pthread_mutex_t               htimSendMutex
136   int                                   htimSendCondValue
137   Boolean                               htimNeedWakeUp
138 }
139
140 object ParameterSequence {
141   ul_list_node_t                node
142   ParameterId           parameterID
143   ParameterLength       parameterLength
144   Parameter             parameterLocal
145   u_char                        *parameter
146 }
147
148 object "union parameter" as parameter {
149     u_char                              asStr[MAX_PARAMETER_LOCAL_LENGTH]
150     NtpTime                             asNtpTime
151     CORBA_unsigned_long asLong
152     VendorId                            asVendorId
153     ProtocolVersion             asProtocolVersion
154     SequenceNumber              asSequenceNumber
155     CORBA_octet                 asOctet
156     IPAddress                   asIPAddress
157     Port                                        asPort
158     uint32_t                            asUInt32
159     TypeChecksum                asTypeChecksum
160 }
161
162 object CSChange {
163   ul_list_node_t                nodeList
164   gavl_node_t           nodeGAVL
165   SequenceNumber        sn
166   GUID_RTPS             guid
167   Boolean                       alive
168   SequenceNumber        gapSN
169   ul_list_head_t                attributes
170   CDR_Codec             cdrCodec
171   ul_list_head_t                writerParticipants
172   int                           remoteReaderCount
173   int                           remoteReaderBest
174   int                           remoteReaderStrict
175   NtpTime                       remoteTimePublished
176   NtpTime                       localTimeReceived
177 }
178
179 object CSTWriterParams {
180   unsigned int  registrationRetries
181   NtpTime               registrationPeriod
182   NtpTime               waitWhileDataUnderwayTime
183   NtpTime               repeatAnnounceTime
184   NtpTime               delayResponceTime
185   NtpTime               refreshPeriod
186   unsigned int  HBMaxRetries
187   Boolean               fullAcknowledge
188 }
189
190 object CSChangeForReader {
191   gavl_node_t                           node
192   ul_list_node_t                                participantNode
193   CSTRemoteReader                       *cstRemoteReader
194   CSChange                              *csChange
195   StateMachineChFReader commStateChFReader
196   HTimFncUserNode                       waitWhileDataUnderwayTimer
197 }
198
199 object CSTRemoteReader {
200   gavl_node_t                   node
201   CSTWriter                     *cstWriter
202   ObjectEntryOID                *sobject
203   ObjectEntryOID                *pobject
204   GUID_RTPS                     guid
205   
206   gavl_cust_root_field_t        csChangeForReader
207   unsigned int                  csChangesCounter
208
209   StateMachineHB                commStateHB
210   StateMachineSend              commStateSend
211   unsigned int                  commStateToSentCounter
212
213   HTimFncUserNode               delayResponceTimer
214   HTimFncUserNode               repeatAnnounceTimer
215
216   unsigned int                  HBRetriesCounter
217   
218   NtpTime                               lastSentIssueTime
219   
220   ul_list_node_t                        multicastNode
221 }
222
223 object CSTWriter {
224   ORTEDomain                    *domain
225   gavl_node_t                   node
226   GUID_RTPS                     guid
227   ObjectEntryOID                *objectEntryOID
228
229   SequenceNumber                firstSN
230   SequenceNumber                lastSN
231
232   CSTWriterParams               params
233
234   ul_list_head_t                        csChanges
235   unsigned int                  csChangesCounter
236   gavl_cust_root_field_t        cstRemoteReader
237   unsigned int                  cstRemoteReaderCounter
238   pthread_rwlock_t              lock
239
240   HTimFncUserNode               refreshPeriodTimer
241
242   unsigned int                  registrationCounter
243   HTimFncUserNode               registrationTimer
244   
245   ORTETypeRegister              *typeRegister
246   
247   unsigned int                  strictReliableCounter
248   unsigned int                  bestEffortsCounter
249   pthread_cond_t                condCSChangeDestroyed
250   pthread_mutex_t               mutexCSChangeDestroyed
251   int                                   condValueCSChangeDestroyed
252 }
253
254 object CSTReaderParams {
255   NtpTime               delayResponceTimeMin
256   NtpTime               delayResponceTimeMax
257   NtpTime               repeatActiveQueryTime
258   Boolean               fullAcknowledge
259   unsigned int  ACKMaxRetries
260 }
261
262 object CSChangeFromWriter {
263   gavl_node_t                           node
264   CSChange                              *csChange
265   StateMachineChFWriter         commStateChFWriter
266 }
267
268 object CSTRemoteWriter {
269   gavl_node_t                   node
270   CSTReader                     *cstReader
271   ObjectEntryOID                *spobject
272   GUID_RTPS                     guid
273   
274   gavl_cust_root_field_t        csChangeFromWriter
275   unsigned int                  csChangesCounter
276   
277   SequenceNumber                sn
278   SequenceNumber                firstSN
279   SequenceNumber                lastSN
280
281   StateMachineACK               commStateACK
282
283   HTimFncUserNode               delayResponceTimer
284   HTimFncUserNode               repeatActiveQueryTimer
285
286   unsigned int                  ACKRetriesCounter
287 }
288
289 object CSTReader {
290   ORTEDomain                    *domain
291   gavl_node_t                   node
292   GUID_RTPS                     guid
293   ObjectEntryOID                *objectEntryOID
294
295   CSTReaderParams               params
296
297   ul_list_head_t                        csChanges
298   gavl_cust_root_field_t        cstRemoteWriter
299   unsigned int                  cstRemoteWriterCounter
300   pthread_rwlock_t              lock
301   
302   ORTETypeRegister              *typeRegister
303   
304   CSTRemoteWriter               *cstRemoteWriterSubscribed
305   HTimFncUserNode               deadlineTimer
306   HTimFncUserNode               persistenceTimer
307
308   unsigned int                  strictReliableCounter
309   unsigned int                  bestEffortsCounter
310   
311   Boolean                               createdByPattern
312 }
313
314 object CSTPublications {
315   gavl_cust_root_field_t        cstWriter
316   pthread_rwlock_t              lock
317   uint32_t                              counter
318 }
319
320 object CSTSubscriptions {
321   gavl_cust_root_field_t        cstReader
322   pthread_rwlock_t              lock
323   uint32_t                              counter
324 }
325
326 object PSEntry {
327   gavl_cust_root_field_t        publications
328   pthread_rwlock_t              publicationsLock
329   gavl_cust_root_field_t        subscriptions
330   pthread_rwlock_t              subscriptionsLock
331 }
332
333 object ORTEDomain {
334   uint32_t                                      domain
335   GUID_RTPS                             guid
336   AppParams                             *appParams
337   ObjectEntryOID                        *objectEntryOID
338   
339   TaskProp                                      taskRecvUnicastMetatraffic
340   TaskProp                                      taskRecvMulticastMetatraffic
341   TaskProp                                      taskRecvUnicastUserdata
342   TaskProp                                      taskRecvMulticastUserdata
343   TaskProp                                      taskSend
344
345   TypeEntry                             typeEntry
346   ObjectEntry                           objectEntry
347   PSEntry                                       psEntry
348   PatternEntry                          patternEntry
349
350   ORTEDomainProp                        domainProp
351   ORTEDomainAppEvents           domainEvents
352   
353   ORTEAppInfo                           appInfo
354   ORTEPubInfo                           pubInfo
355   ORTESubInfo                           subInfo
356
357   CSTWriter                             writerApplicationSelf
358   CSTReader                             readerManagers
359   CSTReader                             readerApplications
360   CSTWriter                             writerManagers
361   CSTWriter                             writerApplications
362   CSTWriter                             writerPublications
363   CSTReader                             readerPublications
364   CSTWriter                             writerSubscriptions
365   CSTReader                             readerSubscriptions
366
367   CSTPublications                       publications
368   CSTSubscriptions                      subscriptions
369 }
370
371 object CDR_Codec {
372   CDR_Endianness        host_endian
373   CDR_Endianness        data_endian
374   CORBA_octet           *buffer
375   unsigned int          buf_len
376   unsigned int          wptr_max
377   unsigned int          wptr
378   unsigned int          rptr
379   CORBA_boolean readonly
380   CORBA_boolean release_buffer
381 }
382
383 object ORTETypeRegister {
384   const char                    *typeName
385   ORTETypeSerialize             serialize
386   ORTETypeDeserialize   deserialize
387   ORTETypeGetMaxSize    getMaxSize
388   unsigned int                  maxSize
389 }
390
391 object ORTEDomainProp {
392   ORTETasksProp         tasksProp
393   ORTEIFProp                    IFProp[MAX_INTERFACES]
394   unsigned char                 IFCount
395   ORTEDomainBaseProp    baseProp
396   ORTEDomainWireProp    wireProp
397   ORTEMulticastProp             multicast
398   ORTEPublProp                  publPropDefault
399   ORTESubsProp          subsPropDefault
400   char                                  *mgrs
401   char                                  *keys
402   IPAddress                     appLocalManager
403   IPAddress                     listen
404   char                                  version[60]
405   int                                   recvBuffSize
406   int                                   sendBuffSize
407 }
408
409 object ORTEAppInfo {
410   HostId                        hostId
411   AppId                 appId
412   IPAddress             *unicastIPAddressList
413   unsigned char         unicastIPAddressCount
414   IPAddress             *metatrafficMulticastIPAddressList
415   unsigned char         metatrafficMulticastIPAddressCount
416   Port                          metatrafficUnicastPort
417   Port                          userdataUnicastPort
418   VendorId                      vendorId
419   ProtocolVersion       protocolVersion
420 }
421
422 object ORTEPubInfo {
423   const char    *topic
424   const char    *type
425   ObjectId              objectId
426 }
427
428 object ORTESubInfo {
429   const char    *topic
430   const char    *type
431   ObjectId              objectId
432 }
433
434 object ORTEIFProp {
435   int32_t               ifFlags
436   IPAddress     ipAddress
437 }
438
439 object ORTEDomainBaseProp {
440   unsigned int  registrationMgrRetries
441   NtpTime               registrationMgrPeriod
442   unsigned int  registrationAppRetries
443   NtpTime               registrationAppPeriod
444   NtpTime               expirationTime
445   NtpTime               refreshPeriod
446   NtpTime               purgeTime
447   NtpTime               repeatAnnounceTime
448   NtpTime               repeatActiveQueryTime
449   NtpTime               delayResponceTimeACKMin
450   NtpTime               delayResponceTimeACKMax
451   unsigned int  HBMaxRetries
452   unsigned int  ACKMaxRetries
453   NtpTime               maxBlockTime
454 }
455
456 object ORTEDomainWireProp {
457   unsigned int  metaBytesPerPacket
458   unsigned int  metaBytesPerFastPacket
459   unsigned int  metabitsPerACKBitmap
460   unsigned int  userBytesPerPacket
461 }
462
463 object ORTEPublProp {
464   PathName              topic
465   TypeName              typeName
466   TypeChecksum  typeChecksum
467   Boolean                       expectsAck
468   NtpTime                       persistence
469   uint32_t                      reliabilityOffered
470   uint32_t                      sendQueueSize
471   int32_t                       strength
472   uint32_t                      criticalQueueLevel
473   NtpTime                       HBNornalRate
474   NtpTime                       HBCQLRate
475   unsigned int          HBMaxRetries
476   NtpTime                       maxBlockTime
477 }
478
479 object ORTESubsProp {
480   PathName              topic
481   TypeName              typeName
482   TypeChecksum  typeChecksum
483   NtpTime                       minimumSeparation
484   uint32_t                      recvQueueSize
485   uint32_t                      reliabilityRequested
486   NtpTime                       deadline
487   uint32_t                      mode
488   IPAddress             multicast
489 }
490
491 TaskProp ..> sock_t
492 TaskProp ..> MessageBuffer
493 HTimNode ..> HTimFncRootNode
494 HTimFncRootNode --> EVH1
495 HTimFncUserNode --> EVH2
496 ObjectEntryOID ..> HTimFncUserNode
497 ObjectEntryAID --> ObjectEntryOID
498 ObjectEntryAID ..> HTimNode
499 ObjectEntryAID <-- HTimFncRootNode
500 HTimNode o-- HTimFncUserNode
501 HTimNode o-- HTimFncUserNode
502 HTimNode o-- HTimFncUserNode
503 ObjectEntryOID --> ObjectEntryHID
504 ObjectEntryOID --> ObjectEntryAID
505 ParameterSequence ..> parameter
506 CSChangeForReader --> CSChange
507 CSChangeForReader ..> HTimFncUserNode
508 CSChangeForReader --> CSTRemoteReader
509 CSTRemoteReader ..> HTimFncUserNode
510 CSTRemoteReader --> ObjectEntryOID
511 CSTRemoteReader --> CSTWriter
512 CSTRemoteReader o-- CSChangeForReader
513 CSTWriter ..> CSTWriterParams
514 CSTWriter --> ObjectEntryOID
515 CSTWriter --> ORTETypeRegister
516 CSTWriter ..> HTimFncUserNode
517 CSTWriter o-- CSChange
518 CSTWriter o-- CSTRemoteReader
519 CSChangeFromWriter --> CSChange
520 CSTRemoteWriter -- CSTReader
521 CSTRemoteWriter --> ObjectEntryOID
522 CSTRemoteWriter ..> HTimFncUserNode
523 CSTRemoteWriter o-- CSChangeFromWriter
524 CSTReader --> ObjectEntryOID
525 CSTReader ..> CSTReaderParams
526 CSTReader ..> HTimFncUserNode
527 CSTReader --> ORTETypeRegister
528 CSTReader o-- CSChange
529 CSTReader o-- CSTRemoteWriter
530 ORTEDomain --> ObjectEntryOID
531 ORTEDomain ..> TaskProp
532 ORTEDomain ..> TypeEntry
533 ORTEDomain ..> ObjectEntry
534 ORTEDomain ..> PSEntry
535 ORTEDomain ..> PatternEntry
536 ORTEDomain ..> CSTWriter
537 ORTEDomain ..> CSTReader
538 ORTEDomain ..> CSTPublications
539 ORTEDomain ..> CSTSubscriptions
540 ORTEDomain --> AppParams
541 ORTEDomain <-- CSTWriter
542 ORTEDomain <-- CSTReader
543 ORTEDomain ..> ORTEAppInfo
544 ORTEDomain ..> ORTEPubInfo
545 ORTEDomain ..> ORTESubInfo
546 MessageBuffer --> CDR_Codec
547 MessageBuffer ..> CDR_Codec
548 CSChange ..> CDR_Codec
549 CSChange o-- ParameterSequence
550 CSChange o-- CSChangeForReader
551 ORTEDomain <-- TaskProp
552 ORTEDomain ..> ORTEDomainProp
553 TypeNode ..> ORTETypeRegister
554 TypeEntry o-- TypeNode
555 PatternEntry o-- PatternNode
556 ORTEDomainProp --|> ORTEIFProp
557 ORTEDomainProp ..> ORTEDomainBaseProp
558 ORTEDomainProp ..> ORTEDomainWireProp
559 ORTEDomainProp ..> ORTEPublProp
560 ORTEDomainProp ..> ORTESubsProp
561 ObjectEntry o-- ObjectEntryHID
562 ObjectEntry o-- HTimFncRootNode
563 ObjectEntryHID o-- ObjectEntryAID
564 ObjectEntryAID o-- ObjectEntryOID
565 PSEntry o-- ObjectEntryOID
566 PSEntry o-- ObjectEntryOID
567 ObjectEntryOID o-- CSTRemoteReader
568 CSTPublications o-- CSTWriter
569 CSTSubscriptions o-- CSTReader
570
571 @enduml