std::string
RTI13ObjectInstance::getName() const
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return std::string();
}
try {
- return ambassador->getObjectInstanceName(_handle);
+ return _ambassador->getObjectInstanceName(_handle);
} catch (RTI::ObjectNotKnown& e) {
SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not get object name: " << e._name << " " << e._reason);
return std::string();
}
void
-RTI13ObjectInstance::addToRequestQueue()
+RTI13ObjectInstance::deleteObjectInstance(const RTIData& tag)
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
- ambassador->addObjectInstanceForCallback(this);
-}
-
-void
-RTI13ObjectInstance::deleteObjectInstance(const RTIData& tag)
-{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
- SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
+ SGSharedPtr<RTI13Federate> federate = _ambassador->_federate.lock();
+ if (!federate.valid()) {
+ SG_LOG(SG_NETWORK, SG_WARN, "Error: Federate is zero.");
return;
}
try {
- ambassador->deleteObjectInstance(_handle, tag);
+ _ambassador->deleteObjectInstance(_handle, tag);
} catch (RTI::ObjectNotKnown& e) {
SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
} catch (RTI::DeletePrivilegeNotHeld& e) {
void
RTI13ObjectInstance::deleteObjectInstance(const SGTimeStamp& timeStamp, const RTIData& tag)
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
+ SGSharedPtr<RTI13Federate> federate = _ambassador->_federate.lock();
+ if (!federate.valid()) {
+ SG_LOG(SG_NETWORK, SG_WARN, "Error: Federate is zero.");
+ return;
+ }
+
try {
- ambassador->deleteObjectInstance(_handle, timeStamp, tag);
+ _ambassador->deleteObjectInstance(_handle, timeStamp, tag);
} catch (RTI::ObjectNotKnown& e) {
SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
} catch (RTI::DeletePrivilegeNotHeld& e) {
void
RTI13ObjectInstance::localDeleteObjectInstance()
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
+ SGSharedPtr<RTI13Federate> federate = _ambassador->_federate.lock();
+ if (!federate.valid()) {
+ SG_LOG(SG_NETWORK, SG_WARN, "Error: Federate is zero.");
+ return;
+ }
+
try {
- ambassador->localDeleteObjectInstance(_handle);
+ _ambassador->localDeleteObjectInstance(_handle);
} catch (RTI::ObjectNotKnown& e) {
SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
} catch (RTI::FederateOwnsAttributes& e) {
}
void
-RTI13ObjectInstance::reflectAttributeValues(const RTI::AttributeHandleValuePairSet& attributeValuePairSet, const RTIData& tag)
+RTI13ObjectInstance::reflectAttributeValues(RTI13AttributeHandleDataPairList& attributeHandleDataPairList, const RTIData& tag)
{
// Retrieve an empty update struct from the memory pool
- UpdateList updateList;
- getUpdateFromPool(updateList);
-
- RTI::ULong numAttribs = attributeValuePairSet.size();
- for (RTI::ULong i = 0; i < numAttribs; ++i) {
- unsigned index = getAttributeIndex(attributeValuePairSet.getHandle(i));
+ RTIIndexDataPairList indexDataPairList;
+ for (RTI13AttributeHandleDataPairList::iterator i = attributeHandleDataPairList.begin();
+ i != attributeHandleDataPairList.end(); ++i) {
+ unsigned index = getAttributeIndex(i->first);
// Get a RTIData from the data pool
- getDataFromPool(index, updateList.back()._indexDataPairList);
- RTI::ULong length = attributeValuePairSet.getValueLength(i);
- updateList.back()._indexDataPairList.back().second.resize(length);
- attributeValuePairSet.getValue(i, updateList.back()._indexDataPairList.back().second.data(), length);
- updateList.back()._tag = tag;
+ getDataFromPool(indexDataPairList);
+ indexDataPairList.back().first = index;
+ indexDataPairList.back().second.swap(i->second);
+ }
+
+ RTIObjectInstance::reflectAttributeValues(indexDataPairList, tag);
+
+ RTIIndexDataPairList::iterator j = indexDataPairList.begin();
+ for (RTI13AttributeHandleDataPairList::iterator i = attributeHandleDataPairList.begin();
+ i != attributeHandleDataPairList.end(); ++i, ++j) {
+ i->second.swap(j->second);
}
- RTIObjectInstance::reflectAttributeValues(updateList.front()._indexDataPairList, tag);
// Return the update data back to the pool
- putUpdateToPool(updateList);
+ putDataToPool(indexDataPairList);
}
void
-RTI13ObjectInstance::reflectAttributeValues(const RTI::AttributeHandleValuePairSet& attributeValuePairSet, const SGTimeStamp& timeStamp, const RTIData& tag)
+RTI13ObjectInstance::reflectAttributeValues(RTI13AttributeHandleDataPairList& attributeHandleDataPairList,
+ const SGTimeStamp& timeStamp, const RTIData& tag)
{
// Retrieve an empty update struct from the memory pool
- UpdateList updateList;
- getUpdateFromPool(updateList);
-
- RTI::ULong numAttribs = attributeValuePairSet.size();
- for (RTI::ULong i = 0; i < numAttribs; ++i) {
- unsigned index = getAttributeIndex(attributeValuePairSet.getHandle(i));
+ RTIIndexDataPairList indexDataPairList;
+ for (RTI13AttributeHandleDataPairList::iterator i = attributeHandleDataPairList.begin();
+ i != attributeHandleDataPairList.end(); ++i) {
+ unsigned index = getAttributeIndex(i->first);
// Get a RTIData from the data pool
- getDataFromPool(index, updateList.back()._indexDataPairList);
- RTI::ULong length = attributeValuePairSet.getValueLength(i);
- updateList.back()._indexDataPairList.back().second.resize(length);
- attributeValuePairSet.getValue(i, updateList.back()._indexDataPairList.back().second.data(), length);
- updateList.back()._tag = tag;
+ getDataFromPool(indexDataPairList);
+ indexDataPairList.back().first = index;
+ indexDataPairList.back().second.swap(i->second);
}
- scheduleUpdates(timeStamp, updateList);
+ RTIObjectInstance::reflectAttributeValues(indexDataPairList, timeStamp, tag);
+
+ RTIIndexDataPairList::iterator j = indexDataPairList.begin();
+ for (RTI13AttributeHandleDataPairList::iterator i = attributeHandleDataPairList.begin();
+ i != attributeHandleDataPairList.end(); ++i, ++j) {
+ i->second.swap(j->second);
+ }
+
+ // Return the update data back to the pool
+ putDataToPool(indexDataPairList);
}
void
RTI13ObjectInstance::requestObjectAttributeValueUpdate()
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
if (!attributeHandleSet->size())
return;
- ambassador->requestObjectAttributeValueUpdate(_handle, *attributeHandleSet);
+ _ambassador->requestObjectAttributeValueUpdate(_handle, *attributeHandleSet);
for (unsigned i = 0; i < numAttributes; ++i)
setRequestAttributeUpdate(i, false);
}
void
-RTI13ObjectInstance::provideAttributeValueUpdate(const RTI::AttributeHandleSet& attributes)
+RTI13ObjectInstance::provideAttributeValueUpdate(const std::vector<RTI::AttributeHandle>& attributeHandleSet)
{
// Called from the ambassador. Just marks some instance attributes dirty so that they are sent with the next update
- RTI::ULong numAttribs = attributes.size();
+ size_t numAttribs = attributeHandleSet.size();
for (RTI::ULong i = 0; i < numAttribs; ++i) {
- unsigned index = getAttributeIndex(attributes.getHandle(i));
+ unsigned index = getAttributeIndex(attributeHandleSet[i]);
setAttributeForceUpdate(index);
}
}
void
RTI13ObjectInstance::updateAttributeValues(const RTIData& tag)
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
if (!_attributeValuePairSet->size())
return;
- ambassador->updateAttributeValues(_handle, *_attributeValuePairSet, tag);
+ _ambassador->updateAttributeValues(_handle, *_attributeValuePairSet, tag);
for (unsigned i = 0; i < numAttributes; ++i) {
setAttributeUpdated(i);
}
} catch (RTI::ObjectNotKnown& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::AttributeNotDefined& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::AttributeNotOwned& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::FederateNotExecutionMember& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::ConcurrentAccessAttempted& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::SaveInProgress& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::RestoreInProgress& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::RTIinternalError& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
}
// That means clear()
void
RTI13ObjectInstance::updateAttributeValues(const SGTimeStamp& timeStamp, const RTIData& tag)
{
- SGSharedPtr<RTI13Ambassador> ambassador = _ambassador.lock();
- if (!ambassador.valid()) {
+ if (!_ambassador.valid()) {
SG_LOG(SG_NETWORK, SG_WARN, "Error: Ambassador is zero.");
return;
}
if (!_attributeValuePairSet->size())
return;
- ambassador->updateAttributeValues(_handle, *_attributeValuePairSet, timeStamp, tag);
+ _ambassador->updateAttributeValues(_handle, *_attributeValuePairSet, timeStamp, tag);
for (unsigned i = 0; i < numAttributes; ++i) {
setAttributeUpdated(i);
}
} catch (RTI::ObjectNotKnown& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::AttributeNotDefined& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::AttributeNotOwned& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::InvalidFederationTime& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::FederateNotExecutionMember& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::ConcurrentAccessAttempted& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::SaveInProgress& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::RestoreInProgress& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
} catch (RTI::RTIinternalError& e) {
- SG_LOG(SG_NETWORK, SG_WARN, "RTI: Could not delete object instance: " << e._name << " " << e._reason);
+ SG_LOG(SG_NETWORK, SG_WARN, "RTI: could not update attribute values object instance: " << e._name << " " << e._reason);
}
// That means clear()
}
void
-RTI13ObjectInstance::attributesInScope(const RTI::AttributeHandleSet& attributeHandleSet)
+RTI13ObjectInstance::attributesInScope(const std::vector<RTI::AttributeHandle>& attributeHandleSet)
{
- RTI::ULong numAttribs = attributeHandleSet.size();
+ size_t numAttribs = attributeHandleSet.size();
for (RTI::ULong i = 0; i < numAttribs; ++i) {
- RTI::AttributeHandle attributeHandle = attributeHandleSet.getHandle(i);
+ RTI::AttributeHandle attributeHandle = attributeHandleSet[i];
setAttributeInScope(getAttributeIndex(attributeHandle), true);
}
}
void
-RTI13ObjectInstance::attributesOutOfScope(const RTI::AttributeHandleSet& attributeHandleSet)
+RTI13ObjectInstance::attributesOutOfScope(const std::vector<RTI::AttributeHandle>& attributeHandleSet)
{
- RTI::ULong numAttribs = attributeHandleSet.size();
+ size_t numAttribs = attributeHandleSet.size();
for (RTI::ULong i = 0; i < numAttribs; ++i) {
- RTI::AttributeHandle attributeHandle = attributeHandleSet.getHandle(i);
+ RTI::AttributeHandle attributeHandle = attributeHandleSet[i];
setAttributeInScope(getAttributeIndex(attributeHandle), false);
}
}
void
-RTI13ObjectInstance::turnUpdatesOnForObjectInstance(const RTI::AttributeHandleSet& attributeHandleSet)
+RTI13ObjectInstance::turnUpdatesOnForObjectInstance(const std::vector<RTI::AttributeHandle>& attributeHandleSet)
{
- RTI::ULong numAttribs = attributeHandleSet.size();
+ size_t numAttribs = attributeHandleSet.size();
for (RTI::ULong i = 0; i < numAttribs; ++i) {
- RTI::AttributeHandle attributeHandle = attributeHandleSet.getHandle(i);
+ RTI::AttributeHandle attributeHandle = attributeHandleSet[i];
setAttributeUpdateEnabled(getAttributeIndex(attributeHandle), true);
}
}
void
-RTI13ObjectInstance::turnUpdatesOffForObjectInstance(const RTI::AttributeHandleSet& attributeHandleSet)
+RTI13ObjectInstance::turnUpdatesOffForObjectInstance(const std::vector<RTI::AttributeHandle>& attributeHandleSet)
{
- RTI::ULong numAttribs = attributeHandleSet.size();
+ size_t numAttribs = attributeHandleSet.size();
for (RTI::ULong i = 0; i < numAttribs; ++i) {
- RTI::AttributeHandle attributeHandle = attributeHandleSet.getHandle(i);
+ RTI::AttributeHandle attributeHandle = attributeHandleSet[i];
setAttributeUpdateEnabled(getAttributeIndex(attributeHandle), false);
}
}
void
-RTI13ObjectInstance::requestAttributeOwnershipAssumption(const RTI::AttributeHandleSet& attributes, const RTIData& tag)
+RTI13ObjectInstance::requestAttributeOwnershipAssumption(const std::vector<RTI::AttributeHandle>& attributes, const RTIData& tag)
{
}
void
-RTI13ObjectInstance::attributeOwnershipDivestitureNotification(const RTI::AttributeHandleSet& attributes)
+RTI13ObjectInstance::attributeOwnershipDivestitureNotification(const std::vector<RTI::AttributeHandle>& attributes)
{
}
void
-RTI13ObjectInstance::attributeOwnershipAcquisitionNotification(const RTI::AttributeHandleSet& attributes)
+RTI13ObjectInstance::attributeOwnershipAcquisitionNotification(const std::vector<RTI::AttributeHandle>& attributes)
{
}
void
-RTI13ObjectInstance::attributeOwnershipUnavailable(const RTI::AttributeHandleSet& attributes)
+RTI13ObjectInstance::attributeOwnershipUnavailable(const std::vector<RTI::AttributeHandle>& attributes)
{
}
void
-RTI13ObjectInstance::requestAttributeOwnershipRelease(const RTI::AttributeHandleSet& attributes, const RTIData& tag)
+RTI13ObjectInstance::requestAttributeOwnershipRelease(const std::vector<RTI::AttributeHandle>& attributes, const RTIData& tag)
{
}
void
-RTI13ObjectInstance::confirmAttributeOwnershipAcquisitionCancellation(const RTI::AttributeHandleSet& attributes)
+RTI13ObjectInstance::confirmAttributeOwnershipAcquisitionCancellation(const std::vector<RTI::AttributeHandle>& attributes)
{
}