Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "ECF Connection Creation and Management"
(→IContainer instance creation) |
(→IContainer instance creation) |
||
Line 19: | Line 19: | ||
</pre> | </pre> | ||
− | where factoryServiceTracker is a ServiceTracker that has been setup to get the org.eclipse.ecf.core.IContainerFactory service. Once a factory is available, IContainer instances can be created: | + | where factoryServiceTracker is a ServiceTracker that has been setup to get the org.eclipse.ecf.core.IContainerFactory service. Once a factory is available, IContainer instances can then be created: |
<pre> | <pre> | ||
Line 25: | Line 25: | ||
</pre> | </pre> | ||
+ | There are a number of createContainer methods on the IContainerFactory, to support a variety of cases for creating/configuring IContainer instances. | ||
+ | Once an IContainer instance has be created, it may be used to first create a target ID (address), and then connect to it: | ||
+ | |||
+ | <pre> | ||
+ | // Create targetID | ||
+ | ID targetID = IDFactory.getDefault().createID(container.getConnectNamespace(),"fliwatuet@ecf.eclipse.org"); | ||
+ | // Connect | ||
+ | container.connect(targetID,null); | ||
+ | </pre> | ||
+ | |||
+ | If the connect call completes successfully, the container is then connected. | ||
+ | |||
+ | Either before or after the connection, the client may wish to get an adapter from the IContainer in order to communicate in specific ways supported by the implementation. | ||
+ | |||
+ | <pre> | ||
+ | IDatashareContainerAdapter datashare = (IDatashareContainerAdapter) container.getAdapter(IDatashareContainerAdapter.class); | ||
+ | if (datashare != null) { | ||
+ | ...use | ||
+ | } else { | ||
+ | ...this provider does not implement this adapter | ||
+ | } | ||
+ | </pre> | ||
By way of introduction, here's a snippet that creat | By way of introduction, here's a snippet that creat |
Revision as of 14:37, 23 September 2008
Introduction
ECF's core API provides support for connection management...i.e. connection creation, connect, disconnect, entry point access to protocol-specific capabilities, platform-wide connection management, etc.
In ECF, connections are represented as implementations of the IContainer interface.
IContainer instance creation
IContainer instances are created via instances of IConnectionFactory.
IConnectionFactory instances can be accessed as an OSGi service, or statically:
IContainerFactory factory = ContainerFactory.getDefault(); or IContainerFactory factory = (IContainerFactory) factoryServiceTracker.getService();
where factoryServiceTracker is a ServiceTracker that has been setup to get the org.eclipse.ecf.core.IContainerFactory service. Once a factory is available, IContainer instances can then be created:
IContainer container = factory.createContainer("ecf.xmpp.smack");
There are a number of createContainer methods on the IContainerFactory, to support a variety of cases for creating/configuring IContainer instances.
Once an IContainer instance has be created, it may be used to first create a target ID (address), and then connect to it:
// Create targetID ID targetID = IDFactory.getDefault().createID(container.getConnectNamespace(),"fliwatuet@ecf.eclipse.org"); // Connect container.connect(targetID,null);
If the connect call completes successfully, the container is then connected.
Either before or after the connection, the client may wish to get an adapter from the IContainer in order to communicate in specific ways supported by the implementation.
IDatashareContainerAdapter datashare = (IDatashareContainerAdapter) container.getAdapter(IDatashareContainerAdapter.class); if (datashare != null) { ...use } else { ...this provider does not implement this adapter }
By way of introduction, here's a snippet that creat