Gazebo Sim

API Reference

9.0.0
ServerConfig.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 Open Source Robotics Foundation
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*/
17#ifndef GZ_SIM_SERVERCONFIG_HH_
18#define GZ_SIM_SERVERCONFIG_HH_
19
20#include <chrono>
21#include <list>
22#include <memory>
23#include <optional> // NOLINT(*)
24#include <string>
25#include <vector>
26#include <sdf/Element.hh>
27#include <sdf/Plugin.hh>
28#include <sdf/Root.hh>
29#include <gz/sim/config.hh>
30#include <gz/sim/Export.hh>
31
32namespace gz
33{
34 namespace sim
35 {
36 // Inline bracket to help doxygen filtering.
37 inline namespace GZ_SIM_VERSION_NAMESPACE {
38 // Forward declarations.
39 class ServerConfigPrivate;
40
45 class GZ_SIM_VISIBLE ServerConfig
46 {
48 public: enum class SourceType
49 {
50 // No source specified.
51 kNone,
52
53 // The source is an SDF Root object.
54 kSdfRoot,
55
56 // The source is an SDF file.
57 kSdfFile,
58
59 // The source is an SDF string.
60 kSdfString,
61 };
62
64 public: enum class SdfErrorBehavior
65 {
67 EXIT_IMMEDIATELY,
69 CONTINUE_LOADING
70 };
71
72 class PluginInfoPrivate;
79 public: class GZ_SIM_VISIBLE PluginInfo
80 {
82 public: PluginInfo();
83
85 public: ~PluginInfo();
86
95 public: PluginInfo(const std::string &_entityName,
96 const std::string &_entityType,
97 const sdf::Plugin &_plugin);
98
101 public: PluginInfo(const PluginInfo &_info);
102
106 public: PluginInfo &operator=(const PluginInfo &_info);
107
112 public: const std::string &EntityName() const;
113
118 public: void SetEntityName(const std::string &_entityName);
119
124 public: const std::string &EntityType() const;
125
130 public: void SetEntityType(const std::string &_entityType);
131
134 public: const sdf::Plugin &Plugin() const;
135
138 public: sdf::Plugin &Plugin();
139
142 public: void SetPlugin(const sdf::Plugin &_plugin) const;
143
146 };
147
149 public: ServerConfig();
150
153 public: ServerConfig(const ServerConfig &_config);
154
156 public: ~ServerConfig();
157
165 public: bool SetSdfFile(const std::string &_file);
166
170 public: std::string SdfFile() const;
171
178 public: bool SetSdfString(const std::string &_sdfString);
179
183 public: std::string SdfString() const;
184
189 public: void SetSdfRoot(const sdf::Root &_root) const;
190
194 public: std::optional<sdf::Root> &SdfRoot() const;
195
198 public: void SetUpdateRate(const double &_hz);
199
203 public: std::optional<double> UpdateRate() const;
204
208 public: void SetInitialSimTime(const double &_initialSimTime) const;
209
212 public: double InitialSimTime() const;
213
216 public: bool UseLevels() const;
217
220 public: void SetUseLevels(const bool _levels);
221
226 public: bool UseDistributedSimulation() const;
227
234 public: void SetNetworkSecondaries(unsigned int _secondaries);
235
240 public: unsigned int NetworkSecondaries() const;
241
249 public: void SetNetworkRole(const std::string &_role);
250
256 public: std::string NetworkRole() const;
257
260 public: bool UseLogRecord() const;
261
264 public: void SetUseLogRecord(const bool _record);
265
268 public: const std::string LogRecordPath() const;
269
272 public: void SetLogRecordPath(const std::string &_recordPath);
273
276 public: std::chrono::steady_clock::duration LogRecordPeriod() const;
277
280 public: void SetLogRecordPeriod(
281 const std::chrono::steady_clock::duration &_period);
282
285 public: void AddLogRecordTopic(const std::string &_topic);
286
289 public: void ClearLogRecordTopics();
290
295
298 public: const std::string LogPlaybackPath() const;
299
302 public: void SetLogPlaybackPath(const std::string &_playbackPath);
303
306 public: bool LogRecordResources() const;
307
310 public: void SetLogRecordResources(bool _recordResources);
311
315
318 public: void SetLogRecordCompressPath(const std::string &_path);
319
322 public: unsigned int Seed() const;
323
326 public: void SetSeed(unsigned int _seed);
327
331 public: std::optional<std::chrono::steady_clock::duration>
333
339 public: const std::string &ResourceCache() const;
340
346 public: void SetResourceCache(const std::string &_path);
347
350 public: const std::string &PhysicsEngine() const;
351
354 public: void SetPhysicsEngine(const std::string &_physicsEngine);
355
358 public: const std::string &RenderEngineServer() const;
359
362 public: const std::string &RenderEngineGui() const;
363
366 public: void SetHeadlessRendering(const bool _headless);
367
370 public: bool HeadlessRendering() const;
371
375 const std::string &_renderEngineServer);
376
381 const std::string &_apiBackend);
382
385
388 public: void SetRenderEngineGui(const std::string &_renderEngineGui);
389
394 const std::string &_apiBackend);
395
398
403
408
412 public: void AddPlugin(const PluginInfo &_info);
413
416 public: void AddPlugins(const std::list<PluginInfo> &_plugins);
417
426
431
435 public: const std::list<PluginInfo> &Plugins() const;
436
440 public: ServerConfig &operator=(const ServerConfig &_cfg);
441
448 Timestamp() const;
449
452 public: SourceType Source() const;
453
456 };
457
462 GZ_SIM_VISIBLE
464
469 GZ_SIM_VISIBLE
471
488 //
491 //
494 GZ_SIM_VISIBLE
495 loadPluginInfo(bool _isPlayback = false);
496 }
497 }
498}
499
500#endif