Connectable objects support the following features:
- outgoing interfaces, such as event sets;
- the ability to enumerate the types of the outgoing interfaces;
- the ability to connect and disconnect sinks to the object
for those outgoing types;
- the ability to enumerate the connections that exist to a
particular outgoing interface.
When to Implement?
To create a connectable object, you need to implement objects
that provide two related interfaces:
The XConnectionPointContainer interface is implemented
on the connectable object to indicate the existence of the outgoing
interfaces. It provides a sequence of sub-objects. It also provides
access to all the connection point sub-objects, each of which
implements the XConnectionPoint interface. The
XConnectionPoint interface provides a sequence of
sub-objects.
Each connection point is a separate sub-object to avoid circular
reference counting problems. A connection point controls how many
connections (one or more) it will allow in its implementation of
advise().
When to use?
A client can use the XConnectionPointContainer interface:
- to get a sequence of connection points for each outgoing type.
- to obtain access to connection point sub-objects with the
XConnectionPoint interface for each
outgoing type. Through the XConnectionPoint interface,
a client starts or terminates an advisory loop with the
connectable object and the client's own sink. The
client can also use the XConnectionPoint
interface to get a sequence of the connections that it
knows about.