Search in sources :

Example 6 with IRemoteServiceRegisteredEvent

use of org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent in project ecf by eclipse.

the class R_OSGiRemoteServiceContainer method addRemoteServiceListener.

/**
 * add a remote service listener. This method accepts an ECF remote service
 * listener and registers a R-OSGi listener service as an adapter.
 *
 * @param listener
 *            the ECF remote service listener.
 *
 * @see org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter#addRemoteServiceListener(org.eclipse.ecf.remoteservice.IRemoteServiceListener)
 */
public void addRemoteServiceListener(final IRemoteServiceListener listener) {
    Assert.isNotNull(listener);
    final RemoteServiceListener l = new RemoteServiceListener() {

        public void remoteServiceEvent(final RemoteServiceEvent event) {
            switch(event.getType()) {
                case RemoteServiceEvent.REGISTERED:
                    listener.handleServiceEvent(new IRemoteServiceRegisteredEvent() {

                        IRemoteServiceReference reference = new RemoteServiceReferenceImpl(createRemoteServiceID(event.getRemoteReference()), event.getRemoteReference());

                        public String[] getClazzes() {
                            return event.getRemoteReference().getServiceInterfaces();
                        }

                        public ID getContainerID() {
                            return getReference().getContainerID();
                        }

                        public IRemoteServiceReference getReference() {
                            return reference;
                        }

                        public String toString() {
                            // $NON-NLS-1$ //$NON-NLS-2$
                            return "RemoteServiceRegisteredEvent(" + containerID + "," + getReference();
                        }

                        public ID getLocalContainerID() {
                            return getID();
                        }
                    });
                    return;
                case RemoteServiceEvent.UNREGISTERING:
                    listener.handleServiceEvent(new IRemoteServiceUnregisteredEvent() {

                        IRemoteServiceReference reference = new RemoteServiceReferenceImpl(createRemoteServiceID(event.getRemoteReference()), event.getRemoteReference());

                        public String[] getClazzes() {
                            return event.getRemoteReference().getServiceInterfaces();
                        }

                        public ID getContainerID() {
                            return containerID;
                        }

                        public IRemoteServiceReference getReference() {
                            return reference;
                        }

                        public String toString() {
                            // $NON-NLS-1$ //$NON-NLS-2$
                            return "RemoteServiceUnregisteredEvent(" + containerID + "," + getReference();
                        }

                        public ID getLocalContainerID() {
                            return getID();
                        }
                    });
                    return;
            }
        }
    };
    // register the listener as a service (whiteboard pattern)
    final ServiceRegistration reg = context.registerService(RemoteServiceListener.class.getName(), l, null);
    // keep track of the listener so that it can be removed when requested.
    remoteServiceListeners.put(listener, reg);
}
Also used : IRemoteServiceUnregisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent) IRemoteServiceRegisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)

Example 7 with IRemoteServiceRegisteredEvent

use of org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent in project ecf by eclipse.

the class RpcRemoteServiceAdapterTest method testRemoteServiceRegisteredEvent.

public void testRemoteServiceRegisteredEvent() {
    IRemoteServiceClientContainerAdapter adapter = getRemoteServiceClientContainerAdapter();
    adapter.addRemoteServiceListener(new IRemoteServiceListener() {

        public void handleServiceEvent(IRemoteServiceEvent event) {
            assertTrue(event instanceof IRemoteServiceRegisteredEvent);
        }
    });
    createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);
}
Also used : IRemoteServiceClientContainerAdapter(org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter) IRemoteServiceListener(org.eclipse.ecf.remoteservice.IRemoteServiceListener) IRemoteServiceEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent) IRemoteServiceRegisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)

Example 8 with IRemoteServiceRegisteredEvent

use of org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent in project ecf by eclipse.

the class RemoteServiceTest method testServiceListener.

public void testServiceListener() throws Exception {
    final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
    done = false;
    final Object lock = new Object();
    adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {

        public void handleServiceEvent(IRemoteServiceEvent event) {
            if (event instanceof IRemoteServiceRegisteredEvent) {
                IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
                IRemoteServiceReference ref = e.getReference();
                remoteService = adapters[1].getRemoteService(ref);
                assertNotNull(remoteService);
                synchronized (lock) {
                    done = true;
                    lock.notify();
                }
            }
        }
    });
    // Now register service on server (adapters[0]).  This should result in notification on client (adapters[1])
    // in above handleServiceEvent
    adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(), customizeProperties(null));
    // wait until block above called asynchronously
    int count = 0;
    synchronized (lock) {
        while (!done && count++ < 10) {
            try {
                lock.wait(1000);
            } catch (InterruptedException e) {
                fail();
            }
        }
    }
    assertTrue(done);
    if (remoteService == null)
        return;
    // We've got the remote service, so we're good to go
    assertTrue(remoteService != null);
    traceCallStart("callAsynchResult");
    final IFuture result = remoteService.callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
    traceCallEnd("callAsynch");
    assertNotNull(result);
    Thread.sleep(SLEEPTIME);
}
Also used : IRemoteServiceReference(org.eclipse.ecf.remoteservice.IRemoteServiceReference) IConcatService(org.eclipse.ecf.tests.remoteservice.IConcatService) IRemoteServiceContainerAdapter(org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter) IRemoteServiceListener(org.eclipse.ecf.remoteservice.IRemoteServiceListener) IRemoteServiceEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent) IFuture(org.eclipse.equinox.concurrent.future.IFuture) IRemoteServiceRegisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)

Example 9 with IRemoteServiceRegisteredEvent

use of org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent in project ecf by eclipse.

the class SSLRemoteServiceTest method testServiceListener.

public void testServiceListener() throws Exception {
    final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
    done = false;
    final Object lock = new Object();
    adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {

        public void handleServiceEvent(IRemoteServiceEvent event) {
            if (event instanceof IRemoteServiceRegisteredEvent) {
                IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
                IRemoteServiceReference ref = e.getReference();
                remoteService = adapters[1].getRemoteService(ref);
                assertNotNull(remoteService);
                synchronized (lock) {
                    done = true;
                    lock.notify();
                }
            }
        }
    });
    // Now register service on server (adapters[0]).  This should result in notification on client (adapters[1])
    // in above handleServiceEvent
    adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(), customizeProperties(null));
    // wait until block above called asynchronously
    int count = 0;
    synchronized (lock) {
        while (!done && count++ < 10) {
            try {
                lock.wait(1000);
            } catch (InterruptedException e) {
                fail();
            }
        }
    }
    assertTrue(done);
    if (remoteService == null)
        return;
    // We've got the remote service, so we're good to go
    assertTrue(remoteService != null);
    traceCallStart("callAsynchResult");
    final IFuture result = remoteService.callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
    traceCallEnd("callAsynch");
    assertNotNull(result);
    Thread.sleep(SLEEPTIME);
}
Also used : IRemoteServiceReference(org.eclipse.ecf.remoteservice.IRemoteServiceReference) IConcatService(org.eclipse.ecf.tests.remoteservice.IConcatService) IRemoteServiceContainerAdapter(org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter) IRemoteServiceListener(org.eclipse.ecf.remoteservice.IRemoteServiceListener) IRemoteServiceEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent) IFuture(org.eclipse.equinox.concurrent.future.IFuture) IRemoteServiceRegisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)

Example 10 with IRemoteServiceRegisteredEvent

use of org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent in project ecf by eclipse.

the class SSLRemoteServiceTrackerTest method testServiceListener.

public void testServiceListener() throws Exception {
    final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
    done = false;
    final Object lock = new Object();
    adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {

        public void handleServiceEvent(IRemoteServiceEvent event) {
            if (event instanceof IRemoteServiceRegisteredEvent) {
                IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
                IRemoteServiceReference ref = e.getReference();
                remoteService = adapters[1].getRemoteService(ref);
                assertNotNull(remoteService);
                synchronized (lock) {
                    done = true;
                    lock.notify();
                }
            }
        }
    });
    // Now register service on server (adapters[0]). This should result in
    // notification on client (adapters[1])
    // in above handleServiceEvent
    adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(), customizeProperties(null));
    // wait until block above called asynchronously
    int count = 0;
    synchronized (lock) {
        while (!done && count++ < 10) {
            try {
                lock.wait(1000);
            } catch (InterruptedException e) {
                fail();
            }
        }
    }
    assertTrue(done);
    if (remoteService == null)
        return;
    // We've got the remote service, so we're good to go
    assertTrue(remoteService != null);
    traceCallStart("callAsynchResult");
    final IFuture result = remoteService.callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
    traceCallEnd("callAsynch");
    assertNotNull(result);
    Thread.sleep(SLEEPTIME);
}
Also used : IRemoteServiceReference(org.eclipse.ecf.remoteservice.IRemoteServiceReference) IConcatService(org.eclipse.ecf.tests.remoteservice.IConcatService) IRemoteServiceContainerAdapter(org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter) IRemoteServiceListener(org.eclipse.ecf.remoteservice.IRemoteServiceListener) IRemoteServiceEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent) IFuture(org.eclipse.equinox.concurrent.future.IFuture) IRemoteServiceRegisteredEvent(org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)

Aggregations

IRemoteServiceRegisteredEvent (org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent)10 IRemoteServiceListener (org.eclipse.ecf.remoteservice.IRemoteServiceListener)8 IRemoteServiceEvent (org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent)8 IRemoteServiceContainerAdapter (org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter)6 IRemoteServiceReference (org.eclipse.ecf.remoteservice.IRemoteServiceReference)6 IConcatService (org.eclipse.ecf.tests.remoteservice.IConcatService)6 IFuture (org.eclipse.equinox.concurrent.future.IFuture)6 IRemoteServiceClientContainerAdapter (org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter)2 ID (org.eclipse.ecf.core.identity.ID)1 IRemoteServiceUnregisteredEvent (org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent)1