summaryrefslogtreecommitdiff
path: root/TAO/tao/Endpoint.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Endpoint.h')
-rw-r--r--TAO/tao/Endpoint.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/TAO/tao/Endpoint.h b/TAO/tao/Endpoint.h
index b762595ef58..d89582e973e 100644
--- a/TAO/tao/Endpoint.h
+++ b/TAO/tao/Endpoint.h
@@ -29,6 +29,8 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+class TAO_ORB_Core;
+
/*
* Includes and forward decls for specializing TAO's
* endpoint implementation.
@@ -79,12 +81,29 @@ public:
*/
virtual CORBA::Boolean is_equivalent (const TAO_Endpoint *other_endpoint) = 0;
- /// Endpoints can be stringed in a list.
+ /// Endpoints can be linked in a list.
/**
* @return The next endpoint in the list, if any.
*/
virtual TAO_Endpoint *next (void) = 0;
+ /**
+ * Return the next endpoint in the list, but use protocol-specific
+ * filtering to constrain the value. The orb core is needed to supply
+ * any sort of filter arguments, and the root endpoint is needed in case
+ * the algorithm needs to rewind. If the supplied root is 0, then this
+ * is assumed to be the candidate next endpoint.
+ *
+ * To use this, the caller starts off the change with root == 0. This
+ * is a bit of a violation in logic, a more correct implementation would
+ * accept this == 0 and a non-null root.
+ * To do iteration using next_filtered, do:
+ * for (TAO_Endpoint *ep = root_endpoint->next_filtered (orb_core, 0);
+ * ep != 0;
+ * ep = ep->next_filtered(orb_core, root_endpoint)) { }
+ */
+ virtual TAO_Endpoint *next_filtered (TAO_ORB_Core *, TAO_Endpoint *root);
+
/// Return a string representation for the address.
/**
* The purpose of this method is to provide a general interface to