17 #ifndef CYBER_TRANSPORT_TRANSPORT_H_ 18 #define CYBER_TRANSPORT_TRANSPORT_H_ 24 #include "cyber/proto/transport_conf.pb.h" 48 using apollo::cyber::proto::OptionalMode;
58 const OptionalMode& mode = OptionalMode::HYBRID) ->
59 typename std::shared_ptr<Transmitter<M>>;
64 const OptionalMode& mode = OptionalMode::HYBRID) ->
65 typename std::shared_ptr<Receiver<M>>;
70 void CreateParticipant();
72 std::atomic<bool> is_shutdown_ = {
false};
84 const OptionalMode& mode) ->
85 typename std::shared_ptr<Transmitter<M>> {
86 if (is_shutdown_.load()) {
87 AINFO <<
"transport has been shut down.";
91 std::shared_ptr<Transmitter<M>> transmitter =
nullptr;
92 RoleAttributes modified_attr = attr;
93 if (!modified_attr.has_qos_profile()) {
94 modified_attr.mutable_qos_profile()->CopyFrom(
99 case OptionalMode::INTRA:
100 transmitter = std::make_shared<IntraTransmitter<M>>(modified_attr);
103 case OptionalMode::SHM:
104 transmitter = std::make_shared<ShmTransmitter<M>>(modified_attr);
107 case OptionalMode::RTPS:
109 std::make_shared<RtpsTransmitter<M>>(modified_attr,
participant());
114 std::make_shared<HybridTransmitter<M>>(modified_attr,
participant());
119 if (mode != OptionalMode::HYBRID) {
120 transmitter->Enable();
125 template <
typename M>
127 const RoleAttributes& attr,
129 const OptionalMode& mode) ->
typename std::shared_ptr<Receiver<M>> {
130 if (is_shutdown_.load()) {
131 AINFO <<
"transport has been shut down.";
135 std::shared_ptr<Receiver<M>> receiver =
nullptr;
136 RoleAttributes modified_attr = attr;
137 if (!modified_attr.has_qos_profile()) {
138 modified_attr.mutable_qos_profile()->CopyFrom(
143 case OptionalMode::INTRA:
145 std::make_shared<IntraReceiver<M>>(modified_attr, msg_listener);
148 case OptionalMode::SHM:
149 receiver = std::make_shared<ShmReceiver<M>>(modified_attr, msg_listener);
152 case OptionalMode::RTPS:
153 receiver = std::make_shared<RtpsReceiver<M>>(modified_attr, msg_listener);
157 receiver = std::make_shared<HybridReceiver<M>>(
163 if (mode != OptionalMode::HYBRID) {
173 #endif // CYBER_TRANSPORT_TRANSPORT_H_
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: rtps_dispatcher.h:48
auto CreateTransmitter(const RoleAttributes &attr, const OptionalMode &mode=OptionalMode::HYBRID) -> typename std::shared_ptr< Transmitter< M >>
Definition: transport.h:83
Definition: notifier_base.h:31
Definition: transport.h:50
auto CreateReceiver(const RoleAttributes &attr, const typename Receiver< M >::MessageListener &msg_listener, const OptionalMode &mode=OptionalMode::HYBRID) -> typename std::shared_ptr< Receiver< M >>
Definition: transport.h:126
Definition: intra_dispatcher.h:251
Definition: shm_dispatcher.h:45
#define DECLARE_SINGLETON(classname)
Definition: macros.h:52
static const QosProfile QOS_PROFILE_DEFAULT
Definition: qos_profile_conf.h:46
std::shared_ptr< Participant > ParticipantPtr
Definition: participant.h:37
ParticipantPtr participant() const
Definition: transport.h:67
std::function< void(const MessagePtr &, const MessageInfo &, const RoleAttributes &)> MessageListener
Definition: receiver.h:36
#define AINFO
Definition: log.h:42
#define RETURN_VAL_IF_NULL(ptr, val)
Definition: log.h:98