Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / urtHrtSubscriberFetchLatestMessage.uml @ ee83a495

History | View | Annotate | Download (2.45 KB)

1 7491c395 Thomas Schöpping
/'
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..2020  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
/'### INTRO ##################################################################'/
23
24
@startuml
25
26 ee83a495 Thomas Schöpping
title **µRtWare**\nurtHrtSubscriberFetchLatestMessage()\n
27 7491c395 Thomas Schöpping
28 ee83a495 Thomas Schöpping
/'### PARAMETERS & RETURN ####################################################'/
29 7491c395 Thomas Schöpping
30
note
31 ee83a495 Thomas Schöpping
  -- **subscriber** : urt_hrtsubscriber_t* --
32
  The HRT subscriber that shall fetch the message.
33 7491c395 Thomas Schöpping
  Must not be ""NULL"".
34 ee83a495 Thomas Schöpping
  -- **payload** : void* --
35
  Pointer where to copy the payload to.
36
  May be ""NULL"" for messages without payload.
37
  -- **bytes** : size_t --
38
  Payload size in bytes.
39
  -- **latency** : urt_delay_t* --
40
  The latency can be returned by reference.
41
  May be ""NULL"".
42
  ====
43
  -- **return** : urt_status_t --
44
  Returns ""URT_STATUS_OK"" on success.
45
  Returns ""URT_STATUS_ERROR"" if the subscriber is not associated to a topic.
46
endnote
47 7491c395 Thomas Schöpping
48
/'### PROCEDURE ##############################################################'/
49
50 ee83a495 Thomas Schöpping
start
51 7491c395 Thomas Schöpping
if (Associated to a topic?) then (yes)
52 ee83a495 Thomas Schöpping
  :lock topic;
53
  :access last read message;
54
  while (Timestamp of next message is younger?) is (yes)
55 7491c395 Thomas Schöpping
    fork
56 ee83a495 Thomas Schöpping
      :proceed to next message;
57 7491c395 Thomas Schöpping
    fork again
58 ee83a495 Thomas Schöpping
      :decrement next message's HRT counter;
59 7491c395 Thomas Schöpping
    endfork
60 ee83a495 Thomas Schöpping
  endwhile (no)
61
  fork
62
    !include fetchmessage.iuml
63
  fork again
64
    if (The HRT counter of any message became 0?) then (yes)
65
      :signal topic's condition variable;
66
    else (no)
67
    endif
68
  fork again
69
    :reset QoS delay timer;
70
  endfork
71
  :unlock topic;
72
  stop
73
  note
74
    Returns ""URT_STATUS_OK"".
75
  endnote
76 7491c395 Thomas Schöpping
else (no)
77 ee83a495 Thomas Schöpping
  stop
78
  note
79
    Returns ""URT_STATUS_ERROR"".
80
  endnote
81 7491c395 Thomas Schöpping
endif
82
83
/'### OUTRO ##################################################################'/
84
85
@enduml