@Override public Observable<Void> unregister(final String instanceId) { return delegate.unregister(instanceId) .doOnCompleted(new Action0() { @Override public void call() { replicationItems.add(new ReplicationItem(instanceId, ReplicationItem.Type.Unregister)); } }) .doOnError(new Action1<Throwable>() { @Override public void call(Throwable throwable) { failedReplicationItems.add(new ReplicationItem(instanceId, ReplicationItem.Type.Unregister)); } }); }
@Override public Observable<Void> call(ChangeNotification<InstanceInfo> notification) { switch (notification.getKind()) { case Add: return channel.register(notification.getData()); case Modify: return channel.register(notification.getData()); case Delete: return channel.unregister(notification.getData().getId()); default: logger.warn("Unrecognised notification kind {}", notification); return Observable.empty(); } } });