hmbdc
simplify-high-performance-messaging-programming
Tips.hpp
1 #include "hmbdc/Copyright.hpp"
2 #pragma once
3 
4 #include "hmbdc/tips/Node.hpp"
5 #include "hmbdc/tips/Domain.hpp"
6 #include "hmbdc/tips/Messages.hpp"
7 
8 namespace hmbdc { namespace tips {
9 /**
10  * @brief TIPS stands for Type Inferred Pub / Sub
11  * It is a C++ Typed based (vs string topic based) messgage delivery
12  * system covers inter thread, inter process and network communication.
13  *
14  * Most - but not all - Message filterring decision is based
15  * on the compile time (through C++ template) Message type information.
16  *
17  * Runtime message filterring is provided through a special Message
18  * category inTagRange Message - where a message type could be associated
19  * with a runtime decided tag value - this enables the Message type
20  * filterring decision to be made on a runtime configured criteria.
21  * For example, an ImageFrame Message if defnined as inTagRange, it
22  * could be used by both the left camera and the right camera, and this Message
23  * could be filterred by TIPS depending on its origin (left vs right) by associate
24  * different tags to the Message runtime instances
25  *
26  **/
27 
28 /* LOGIC (concept) VIEW
29  +--------+
30  |Node |
31  XXXXXXXXXXX | |
32  +--------------------+ XXXXXX XXXXX +--+-----+
33  | Node | Nodes join XX XXXXXX |
34  |an OS thread +---------------------+XX +----+
35  +--------------------+ same domain receive X domain X
36  | (static) | pub / sub X +------+
37  | callback(Msg1) | messges. X X |
38  | ... | pub can happen XXXXX+XX XXXXXXXXXXXXXXXX +---+----+
39  | callback(MsgN) | anywhere through the | XXXXXX |Node |
40  | | domain handle | | |
41  +--------------------+ | +--------+
42  | | +-----+--+
43  | timers callbacks | |Nodes +-+
44  | (dynamic) | |pooled | +-+
45  | | +--------+ | |
46  | | +-----+ |
47  | | +---+
48  +--------------------+
49 
50  PHYSICAL (deployment) VIEW
51  +---------------------------+ +---------------------------------------------+
52  | +--------------------+ | | +-------------+ |
53  | | +--------+ | | | |process | +---------------+ |
54  | | |Node | | | | | +----------+ ipc transport | |
55  | | | | | | +---------+ | +-------+-------+ |
56  | | +--------+ | | | | | | | |
57  | | | | | | +---------+ | | |
58  | | | | | | ||Node | | | |
59  | | | | | | || | | +---------------------+ |
60  | | | | | | |---------+ | | +--------+ | |
61  | | | | | | +-------------+ | |Node | | |
62  | | +--------+ | | | | | | | | |
63  | | |Node | +-------+ | | | +--------+ | |
64  | | | | | | | | | | +--------+ | |
65  | | +--------+ | | | | | | |Node | | |
66  | | | | ++--++ | | | | | |
67  | | | | |net | | | +--------+ | |
68  | |process | | +-+--+ | | +--------+ | |
69  | +--------------------+ | | | | |Nodes +-+ | |
70  | | | | | |pooled | +-+ | |
71  | | +----------------------------+ +--------+ | | | |
72  | | | | +-----+ | | |
73  | | | |process +---+ | |
74  | | | +---------------------+ |
75  | host | | host |
76  +---------------------------+ +---------------------------------------------+
77 */
78 }}
Definition: Base.hpp:12