Skip to main content

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.

Jump to: navigation, search

ECF Remote Services

Scott has been fooling around with designing a remote OSGI services API.


Below are some ideas for an IRemoteServiceContainer...an adapter interface for registering, finding, and using remote service references.

See also the newly checked in (7/17/2006) org.eclipse.ecf.remoteservice plugin (see ecf dev resources to get CVS access to the code (in plugins module).

See also this project set (for anonymous CVS access...ECF committers should access via extssh protocol for read/write access):

<?xml version="1.0" encoding="UTF-8"?>
<psf version="2.0">
	<provider id="org.eclipse.team.cvs.core.cvsnature">
		<project reference="1.0,:pserver:dev.eclipse.org:/home/technology,org.eclipse.ecf/plugins/org.eclipse.ecf.remoteservice,org.eclipse.ecf.remoteservice"/>
	</provider>
</psf>

Here's a snapshot of an early version of the API ideas just to give you an idea of what I've been thinking. See the source for a current version of everything, though.


public interface IRemoteServiceContainer {
	
	public void addRemoteServiceListener(IRemoteServiceListener listener);
	public void removeRemoteServiceListener(IRemoteServiceListener listener);
	
	public IRemoteServiceRegistration registerRemoteService(String [] clazzes, Object service, Dictionary properties) throws ECFException;
	public IRemoteServiceReference[] getRemoteServiceReferences(ID [] idFilter, String clazz, String filter) throws ECFException;
	public IRemoteService getRemoteService(IRemoteServiceReference ref) throws ECFException;
	public boolean ungetRemoteService(IRemoteServiceReference ref);
	
}

public interface IRemoteServiceRegistration {
	public IRemoteServiceReference getReference();
	public void setProperties(Dictionary properties);
	public void unregister();
}

public interface IRemoteServiceReference {
	public ID getRemoteID();
	public Object getProperty(String key);
	public String [] getPropertyKeys();
}

public interface IRemoteService {
	public Object callSynch(IRemoteCallable call) throws ECFException;
	public AsynchResult callAsynch(IRemoteCallable call) throws ECFException;
	public void fire(IRemoteCallable call) throws ECFException;
}

public interface IRemoteCallable {
	public String getMethod();
	public Object [] getParameters();
	public Dictionary getProperties();
	public long getTimeout();
}

Back to the top