1 // Copyright (C) 2009 - 2010 Mathias Froehlich - Mathias.Froehlich@web.de
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Library General Public
5 // License as published by the Free Software Foundation; either
6 // version 2 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Library General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #include "RTI13Federate.hxx"
20 #include "RTI13Ambassador.hxx"
24 RTI13Federate::RTI13Federate(const std::list<std::string>& stringList) :
26 _ambassador(new RTI13Ambassador)
28 if (stringList.empty()) {
29 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Ignoring non empty connect arguments while connecting to an RTI13 federation!");
33 RTI13Federate::~RTI13Federate()
38 RTI13Federate::createFederationExecution(const std::string& federationName, const std::string& objectModel)
41 _ambassador->createFederationExecution(federationName, objectModel);
43 } catch (RTI::FederationExecutionAlreadyExists& e) {
45 } catch (RTI::CouldNotOpenFED& e) {
46 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not create federation execution: " << e._name << " " << e._reason);
48 } catch (RTI::ErrorReadingFED& e) {
49 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not create federation execution: " << e._name << " " << e._reason);
51 } catch (RTI::ConcurrentAccessAttempted& e) {
52 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not create federation execution: " << e._name << " " << e._reason);
54 } catch (RTI::RTIinternalError& e) {
55 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not create federation execution: " << e._name << " " << e._reason);
61 RTI13Federate::destroyFederationExecution(const std::string& federation)
64 _ambassador->destroyFederationExecution(federation);
66 } catch (RTI::FederatesCurrentlyJoined& e) {
68 } catch (RTI::FederationExecutionDoesNotExist& e) {
70 } catch (RTI::ConcurrentAccessAttempted& e) {
71 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not destroy federation execution: " << e._name << " " << e._reason);
73 } catch (RTI::RTIinternalError& e) {
74 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not destroy federation execution: " << e._name << " " << e._reason);
80 RTI13Federate::join(const std::string& federateType, const std::string& federationName)
83 _federateHandle = _ambassador->joinFederationExecution(federateType, federationName);
84 SG_LOG(SG_NETWORK, SG_INFO, "RTI: Joined federation \""
85 << federationName << "\" as \"" << federateType << "\"");
86 setFederateType(federateType);
87 setFederationName(federationName);
89 } catch (RTI::FederateAlreadyExecutionMember& e) {
90 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
92 } catch (RTI::FederationExecutionDoesNotExist& e) {
93 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
95 } catch (RTI::CouldNotOpenFED& e) {
96 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
98 } catch (RTI::ErrorReadingFED& e) {
99 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
101 } catch (RTI::ConcurrentAccessAttempted& e) {
102 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
104 } catch (RTI::SaveInProgress& e) {
105 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
107 } catch (RTI::RestoreInProgress& e) {
108 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
110 } catch (RTI::RTIinternalError& e) {
111 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not join federation execution: " << e._name << " " << e._reason);
117 RTI13Federate::resign()
120 _ambassador->resignFederationExecution();
121 SG_LOG(SG_NETWORK, SG_INFO, "RTI: Resigned from federation.");
122 _federateHandle = -1;
124 } catch (RTI::FederateOwnsAttributes& e) {
125 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
127 } catch (RTI::FederateNotExecutionMember& e) {
128 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
130 } catch (RTI::InvalidResignAction& e) {
131 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
133 } catch (RTI::ConcurrentAccessAttempted& e) {
134 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
136 } catch (RTI::RTIinternalError& e) {
137 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
143 RTI13Federate::registerFederationSynchronizationPoint(const std::string& label, const RTIData& tag)
146 _ambassador->registerFederationSynchronizationPoint(label, tag);
147 SG_LOG(SG_NETWORK, SG_INFO, "RTI: registerFederationSynchronizationPoint(" << label << ", tag )");
149 } catch (RTI::FederateNotExecutionMember& e) {
150 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not register federation synchronization point: " << e._name << " " << e._reason);
152 } catch (RTI::ConcurrentAccessAttempted& e) {
153 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not register federation synchronization point: " << e._name << " " << e._reason);
155 } catch (RTI::SaveInProgress& e) {
156 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not register federation synchronization point: " << e._name << " " << e._reason);
158 } catch (RTI::RestoreInProgress& e) {
159 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not register federation synchronization point: " << e._name << " " << e._reason);
161 } catch (RTI::RTIinternalError& e) {
162 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not register federation synchronization point: " << e._name << " " << e._reason);
168 RTI13Federate::waitForFederationSynchronizationPointAnnounced(const std::string& label)
170 while (!_ambassador->getFederationSynchronizationPointAnnounced(label)) {
171 _ambassador->tick(_tickTimeout, 0);
172 _ambassador->processQueues();
178 RTI13Federate::synchronizationPointAchieved(const std::string& label)
181 _ambassador->synchronizationPointAchieved(label);
182 SG_LOG(SG_NETWORK, SG_INFO, "RTI: synchronizationPointAchieved(" << label << ")");
184 } catch (RTI::SynchronizationPointLabelWasNotAnnounced& e) {
185 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
187 } catch (RTI::FederateNotExecutionMember& e) {
188 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
190 } catch (RTI::ConcurrentAccessAttempted& e) {
191 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
193 } catch (RTI::SaveInProgress& e) {
194 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
196 } catch (RTI::RestoreInProgress& e) {
197 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
199 } catch (RTI::RTIinternalError& e) {
200 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not signal synchronization point: " << e._name << " " << e._reason);
206 RTI13Federate::waitForFederationSynchronized(const std::string& label)
208 while (!_ambassador->getFederationSynchronized(label)) {
209 _ambassador->tick(_tickTimeout, 0);
210 _ambassador->processQueues();
216 RTI13Federate::enableTimeConstrained()
218 if (!_ambassador.valid()) {
219 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not enable time constrained at unconnected federate.");
223 if (_ambassador->getTimeConstrainedEnabled()) {
224 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Time constrained is already enabled.");
229 _ambassador->enableTimeConstrained();
230 } catch (RTI::TimeConstrainedAlreadyEnabled& e) {
231 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
233 } catch (RTI::EnableTimeConstrainedPending& e) {
234 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
236 } catch (RTI::TimeAdvanceAlreadyInProgress& e) {
237 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
239 } catch (RTI::ConcurrentAccessAttempted& e) {
240 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
242 } catch (RTI::FederateNotExecutionMember& e) {
243 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
245 } catch (RTI::SaveInProgress& e) {
246 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
248 } catch (RTI::RestoreInProgress& e) {
249 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
251 } catch (RTI::RTIinternalError& e) {
252 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
256 while (!_ambassador->getTimeConstrainedEnabled()) {
257 _ambassador->tick(_tickTimeout, 0);
258 _ambassador->processQueues();
265 RTI13Federate::disableTimeConstrained()
267 if (!_ambassador.valid()) {
268 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not disable time constrained at unconnected federate.");
272 if (!_ambassador->getTimeConstrainedEnabled()) {
273 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Time constrained is not enabled.");
278 _ambassador->disableTimeConstrained();
279 } catch (RTI::TimeConstrainedWasNotEnabled& e) {
280 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
282 } catch (RTI::FederateNotExecutionMember& e) {
283 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
285 } catch (RTI::ConcurrentAccessAttempted& e) {
286 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
288 } catch (RTI::SaveInProgress& e) {
289 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
291 } catch (RTI::RestoreInProgress& e) {
292 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
294 } catch (RTI::RTIinternalError& e) {
295 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
303 RTI13Federate::enableTimeRegulation(const SGTimeStamp& lookahead)
305 if (!_ambassador.valid()) {
306 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not enable time regulation at unconnected federate.");
310 if (_ambassador->getTimeRegulationEnabled()) {
311 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Time regulation already enabled.");
316 _ambassador->enableTimeRegulation(SGTimeStamp(), lookahead);
317 } catch (RTI::TimeRegulationAlreadyEnabled& e) {
318 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
320 } catch (RTI::EnableTimeRegulationPending& e) {
321 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
323 } catch (RTI::TimeAdvanceAlreadyInProgress& e) {
324 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
326 } catch (RTI::InvalidFederationTime& e) {
327 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
329 } catch (RTI::InvalidLookahead& e) {
330 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
332 } catch (RTI::ConcurrentAccessAttempted& e) {
333 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
335 } catch (RTI::FederateNotExecutionMember& e) {
336 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
338 } catch (RTI::SaveInProgress& e) {
339 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
341 } catch (RTI::RestoreInProgress& e) {
342 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
344 } catch (RTI::RTIinternalError& e) {
345 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
349 while (!_ambassador->getTimeRegulationEnabled()) {
350 _ambassador->tick(_tickTimeout, 0);
351 _ambassador->processQueues();
358 RTI13Federate::disableTimeRegulation()
360 if (!_ambassador.valid()) {
361 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not disable time regulation at unconnected federate.");
365 if (!_ambassador->getTimeRegulationEnabled()) {
366 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Time regulation is not enabled.");
371 _ambassador->disableTimeRegulation();
372 } catch (RTI::TimeRegulationWasNotEnabled& e) {
373 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
375 } catch (RTI::ConcurrentAccessAttempted& e) {
376 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
378 } catch (RTI::FederateNotExecutionMember& e) {
379 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
381 } catch (RTI::SaveInProgress& e) {
382 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
384 } catch (RTI::RestoreInProgress& e) {
385 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
387 } catch (RTI::RTIinternalError& e) {
388 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
396 RTI13Federate::timeAdvanceRequestBy(const SGTimeStamp& dt)
398 if (!_ambassador.valid()) {
399 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not disable time regulation at unconnected federate.");
403 SGTimeStamp fedTime = _ambassador->getCurrentLogicalTime() + dt;
404 return timeAdvanceRequest(fedTime);
408 RTI13Federate::timeAdvanceRequest(const SGTimeStamp& fedTime)
410 if (!_ambassador.valid()) {
411 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not disable time regulation at unconnected federate.");
416 _ambassador->timeAdvanceRequest(fedTime);
417 } catch (RTI::InvalidFederationTime& e) {
418 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
420 } catch (RTI::FederationTimeAlreadyPassed& e) {
421 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
423 } catch (RTI::TimeAdvanceAlreadyInProgress& e) {
424 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
426 } catch (RTI::EnableTimeRegulationPending& e) {
427 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
429 } catch (RTI::EnableTimeConstrainedPending& e) {
430 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
432 } catch (RTI::FederateNotExecutionMember& e) {
433 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
435 } catch (RTI::ConcurrentAccessAttempted& e) {
436 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
438 } catch (RTI::SaveInProgress& e) {
439 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
441 } catch (RTI::RestoreInProgress& e) {
442 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
444 } catch (RTI::RTIinternalError& e) {
445 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not resign federation execution: " << e._name << " " << e._reason);
449 while (_ambassador->getTimeAdvancePending()) {
450 _ambassador->tick(_tickTimeout, 0);
451 _ambassador->processQueues();
458 RTI13Federate::queryFederateTime(SGTimeStamp& timeStamp)
460 if (!_ambassador.valid()) {
461 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time.");
466 _ambassador->queryFederateTime(timeStamp);
467 } catch (RTI::FederateNotExecutionMember& e) {
468 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time: " << e._name << " " << e._reason);
470 } catch (RTI::ConcurrentAccessAttempted& e) {
471 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time: " << e._name << " " << e._reason);
473 } catch (RTI::SaveInProgress& e) {
474 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time: " << e._name << " " << e._reason);
476 } catch (RTI::RestoreInProgress& e) {
477 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time: " << e._name << " " << e._reason);
479 } catch (RTI::RTIinternalError& e) {
480 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query federate time: " << e._name << " " << e._reason);
487 RTI13Federate::modifyLookahead(const SGTimeStamp& timeStamp)
489 if (!_ambassador.valid()) {
490 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead.");
494 _ambassador->modifyLookahead(timeStamp);
495 } catch (RTI::InvalidLookahead& e) {
496 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
498 } catch (RTI::FederateNotExecutionMember& e) {
499 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
501 } catch (RTI::ConcurrentAccessAttempted& e) {
502 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
504 } catch (RTI::SaveInProgress& e) {
505 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
507 } catch (RTI::RestoreInProgress& e) {
508 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
510 } catch (RTI::RTIinternalError& e) {
511 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not modify lookahead: " << e._name << " " << e._reason);
518 RTI13Federate::queryLookahead(SGTimeStamp& timeStamp)
520 if (!_ambassador.valid()) {
521 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead.");
526 _ambassador->queryLookahead(timeStamp);
527 } catch (RTI::FederateNotExecutionMember& e) {
528 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead: " << e._name << " " << e._reason);
530 } catch (RTI::ConcurrentAccessAttempted& e) {
531 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead: " << e._name << " " << e._reason);
533 } catch (RTI::SaveInProgress& e) {
534 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead: " << e._name << " " << e._reason);
536 } catch (RTI::RestoreInProgress& e) {
537 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead: " << e._name << " " << e._reason);
539 } catch (RTI::RTIinternalError& e) {
540 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not query lookahead: " << e._name << " " << e._reason);
547 RTI13Federate::tick()
549 bool result = _ambassador->tick();
550 _ambassador->processQueues();
555 RTI13Federate::tick(const double& minimum, const double& maximum)
557 bool result = _ambassador->tick(minimum, maximum);
558 _ambassador->processQueues();
563 RTI13Federate::createObjectClass(const std::string& objectClassName, HLAObjectClass* hlaObjectClass)
566 return _ambassador->createObjectClass(objectClassName, hlaObjectClass);
567 } catch (RTI::NameNotFound& e) {
568 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
570 } catch (RTI::FederateNotExecutionMember& e) {
571 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
573 } catch (RTI::ConcurrentAccessAttempted& e) {
574 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
576 } catch (RTI::RTIinternalError& e) {
577 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
583 RTI13Federate::getObjectInstance(const std::string& objectInstanceName)
586 return _ambassador->getObjectInstance(objectInstanceName);
587 } catch (RTI::ObjectNotKnown& e) {
588 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
590 } catch (RTI::FederateNotExecutionMember& e) {
591 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
593 } catch (RTI::ConcurrentAccessAttempted& e) {
594 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);
596 } catch (RTI::RTIinternalError& e) {
597 SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object class: " << e._name << " " << e._reason);