void ComponentManager::deregisterContainer(const ObjectID& oid) { unsigned int index = oid.getIndex(); m_activeContainers.erase(index); m_containers[index] = 0; std::memset(&m_componentIDs[index * MAX_INTERFACES], 0, sizeof (ComponentID) * MAX_INTERFACES); m_containerIndices.free(index); //std::cout << "Object " << oid.getIndex() << " deregistered." << std::endl; }
MessageResult ComponentManager::sendMessage(const InterfaceTypeID& iid, const ObjectID& oid, MessageBase& msg) { const ComponentID& cid = getComponentID(iid, oid); if (cid.isValid()) { ComponentBase* component = getComponent(cid); if (component) { // write on envelope // this changes msg! msg.Addressee = oid; msg.Sender = ObjectID(); return component->handleMessage(msg); } std::cerr << "Component invalid in container " << oid.getIndex() << std::endl; return MR_ERROR; // failed to deliver } return MR_ERROR; // failed to deliver }