Statistics
| Branch: | Revision:

urtware / doc / statediagrams / subscriber / urtSubscriberUnsubscribe.uml @ 509d44c4

History | View | Annotate | Download (1.575 KB)

1
/'
2
µRtWare is a lightweight publish/subscribe middleware for real-time
3
applications. It was developed as part of the software habitat for the
4
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well.
5

    
6
Copyright (C) 2018..2019  Thomas Schöpping et al.
7

    
8
This program is free software: you can redistribute it and/or modify
9
it under the terms of the GNU General Public License as published by
10
the Free Software Foundation, either version 3 of the License, or
11
(at your option) any later version.
12

    
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
GNU General Public License for more details.
17

    
18
You should have received a copy of the GNU General Public License
19
along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
'/
21

    
22
@startuml
23

    
24
title **µRtWare**\nurtSubscriberUnsubscribe()\n
25

    
26

    
27

    
28
start
29
if (Is HRT subscriber?) then (yes)
30
  :lock topic;
31
  fork
32
    :unregister event;
33
    note left
34
      must be within lock because of HRT counter
35
    endnote
36
  fork again
37
    :decrease topic HRT counter;
38
  fork again
39
    :remove self from topic list of HRT subscribers;
40
    if (Was most critical subscriber?) then (yes)
41
      :update QoS rate timer (@topic);
42
    else (no)
43
    endif
44
  fork again
45
    while (Unfetched messages left?) is (yes)
46
      :lock message;
47
      :decrease HRT counter;
48
      :unlock message;
49
    endwhile (no)
50
  endfork
51
  :unlock topic;
52
else (no)
53
  :unregister event;
54
endif
55
:reset members;
56
note left
57
  optional
58
end note
59
stop
60

    
61
@enduml