-
Notifications
You must be signed in to change notification settings - Fork 496
Expand file tree
/
Copy pathChannelSpec.h
More file actions
79 lines (70 loc) · 2.17 KB
/
ChannelSpec.h
File metadata and controls
79 lines (70 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
#ifndef O2_FRAMEWORK_CHANNELSPEC_H_
#define O2_FRAMEWORK_CHANNELSPEC_H_
#include <string>
namespace o2::framework
{
/// These map to zeromq connection
/// methods.
enum struct ChannelMethod {
Bind,
Connect
};
/// These map to zeromq types for the channels.
enum struct ChannelType {
Pub,
Sub,
Push,
Pull,
Pair
};
/// The kind of backend to use for the channels
enum struct ChannelProtocol {
Network,
IPC
};
/// This describes an input channel. Since they are point to
/// point connections, there is not much to say about them.
/// Notice that this should be considered read only once it
/// has been created.
struct InputChannelSpec {
std::string name;
enum ChannelType type;
enum ChannelMethod method;
std::string hostname;
unsigned short port;
ChannelProtocol protocol = ChannelProtocol::Network;
size_t rateLogging = 0;
size_t recvBufferSize = 1000;
size_t sendBufferSize = 1000;
std::string ipcPrefix = ".";
};
/// This describes an output channel. Output channels are semantically
/// different from input channels, because we use subChannels to
/// distinguish between different consumers. Notice that the number of
/// subchannels is actually determined by the number of time pipelined
/// consumers downstream.
struct OutputChannelSpec {
std::string name;
enum ChannelType type;
enum ChannelMethod method;
std::string hostname;
unsigned short port;
size_t listeners;
ChannelProtocol protocol = ChannelProtocol::Network;
size_t rateLogging = 0;
size_t recvBufferSize = 1000;
size_t sendBufferSize = 1000;
std::string ipcPrefix = ".";
};
} // namespace o2::framework
#endif // O2_FRAMEWORK_CHANNELSPEC_H_