#ifndef OMG_DDS_TOPIC_DISCOVER_HPP_ #define OMG_DDS_TOPIC_DISCOVER_HPP_ /* Copyright 2010, Object Management Group, Inc. * Copyright 2010, PrismTech, Inc. * Copyright 2010, Real-Time Innovations, Inc. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace dds { namespace topic { /** * This operation gives access to an specific existing (or ready to exist) enabled * Topic, ContentFilteredTopic, MultiTopic, AnyTopic or TopicDescription based * on its topic_name. * * Topics that the application has indicated should be 'ignored' (by means of the * dds::topic::ignore operation) will not appear in this list (note: the ignore * feature is not yet supported). * * If a Topic of the same topic_name already exists, it gives access to this Topic. * Otherwise it waits (blocks the caller) until another mechanism creates it. This other * mechanism can be another thread, a configuration tool, or some other Data * Distribution Service utility. If after the specified timeout the Topic can still not be * found, the caller gets unblocked and the returned Topic will be dds::core::null. * * A Topic that is obtained by means of find_topic in a specific * DomainParticipant can only be used to create DataReaders and * DataWriters in that DomainParticipant. * * This operation usually results in network look-ups. * * For finding only locally created Topics, look * @link find(const dds::domain::DomainParticipant& dp, const std::string& topic_name) * here.@endlink * * @param dp the DomainParticipant * @param name the topic name to discover * @param timeout the time out * @throws dds::core::Error * An internal error has occurred. * @throws dds::core::NullReferenceError * The DomainParticipant was not properly created and references to dds::core::null. * @throws dds::core::AlreadyClosedError * The DomainParticipant has already been closed. * @throws dds::core::NotEnabledError * The DomainParticipant has not yet been enabled. * @throws dds::core::OutOfResourcesError * The Data Distribution Service ran out of resources to * complete this operation. * @throws dds::core::TimeoutError * No Topics of the given name found within the timeout. */ template TOPIC discover(const dds::domain::DomainParticipant& dp, const std::string& name, const dds::core::Duration& timeout = dds::core::Duration::infinite()); /** * This operation retrieves a list of Topics that have been discovered in the domain. * * If the max_size of the given list is large enough, all discovered Topics will be * present in that list. Otherwise, a random sub-set of max_size elements is returned. * * Topics that the application has indicated should be 'ignored' (by means of the * dds::topic::ignore operation) will not appear in this list (note: the ignore * feature is not yet supported). * * Because Topics of various different kinds can be retrieved, the list contains * AnyTopics. * * This operation usually results in network look-ups. * * @param dp the DomainParticipant * @param begin a forward iterator pointing to the beginning of a container * in which to insert the topics * @param max_size the maximum number of topics to return */ template uint32_t discover(const dds::domain::DomainParticipant& dp, FwdIterator begin, uint32_t max_size); /** * This operation retrieves a list of all Topics that have been discovered in the domain. * * Topics that the application has indicated should be 'ignored' (by means of the * dds::topic::ignore operation) will not appear in this list (note: the ignore * feature is not yet supported). * * Because Topics of various different kinds can be retrieved, the list contains * AnyTopics. * * This operation usually results in network look-ups. * * @param dp the DomainParticipant * @param begin a back inserting iterator pointing to the beginning of a container * in which to insert the topics */ template uint32_t discover_all(const dds::domain::DomainParticipant& dp, BinIterator begin); /** * This operation allows an application to instruct the Service to locally ignore * a remote domain participant. From that point onwards the Service will locally * behave as if the remote participant did not exist. This means it will ignore any * Topic, publication, or subscription that originates on that domain participant. * * This operation is not yet implemented. It is scheduled for a future release. * * @param dp the DomainParticipant * @param handle the handle of the DomainParticipant to ignore */ void OMG_DDS_API ignore(const dds::domain::DomainParticipant& dp, const dds::core::InstanceHandle& handle); /** * This operation allows an application to instruct the Service to locally ignore * a remote domain participant. From that point onwards the Service will locally * behave as if the remote participant did not exist. This means it will ignore any * Topic, publication, or subscription that originates on that domain participant. * * This operation is not yet implemented. It is scheduled for a future release. * * @param dp the DomainParticipant * @param begin a forward iterator pointing to the beginning of a sequence of * InstanceHandles to ignore * @param end a forward iterator pointing to the end of a sequence of * InstanceHandles to ignore */ template void ignore(const dds::domain::DomainParticipant& dp, FwdIterator begin, FwdIterator end); } } #include #endif /* OMG_DDS_TOPIC_DISCOVER_HPP_ */