Apollo 9.0
自动驾驶开放平台
transport.cc
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2018 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
18
20
21namespace apollo {
22namespace cyber {
23namespace transport {
24
25Transport::Transport() {
26 CreateParticipant();
28 intra_dispatcher_ = IntraDispatcher::Instance();
29 shm_dispatcher_ = ShmDispatcher::Instance();
30 rtps_dispatcher_ = RtpsDispatcher::Instance();
31 rtps_dispatcher_->set_participant(participant_);
32}
33
35
37 if (is_shutdown_.exchange(true)) {
38 return;
39 }
40
41 intra_dispatcher_->Shutdown();
42 shm_dispatcher_->Shutdown();
43 rtps_dispatcher_->Shutdown();
44 notifier_->Shutdown();
45
46 if (participant_ != nullptr) {
47 participant_->Shutdown();
48 participant_ = nullptr;
49 }
50}
51
52void Transport::CreateParticipant() {
53 std::string participant_name =
54 common::GlobalData::Instance()->HostName() + "+" +
55 std::to_string(common::GlobalData::Instance()->ProcessId());
56 participant_ = std::make_shared<Participant>(participant_name, 11512);
57}
58
59} // namespace transport
60} // namespace cyber
61} // namespace apollo
void set_participant(const ParticipantPtr &participant)
class register implement