/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.notification.api; import java.util.List; import java.util.Map; import de.rcenvironment.core.notification.Notification; import de.rcenvironment.core.notification.NotificationSubscriber; import de.rcenvironment.core.utils.common.rpc.RemotableService; import de.rcenvironment.core.utils.common.rpc.RemoteOperationException; /** * Remote-accessible methods for notification management. * * @author Robert Mischke (extracted from {@link NotificationService}) */ @RemotableService public interface RemotableNotificationService { /** * Registers the specified {@link NotificationSubscriber} to receive {@link Notification}s represented by the given identifier. * * @param notificationId The identifier of the {@link Notification}s to receive. * @param subscriber The {@link NotificationSubscriber} for this {@link Notification}. <code>null</code> if local. * @return the edition number of the last notification, which was sent and missed by the new {@link NotificationSubscriber}. * @throws RemoteOperationException standard remote operation exception */ Map<String, Long> subscribe(String notificationId, NotificationSubscriber subscriber) throws RemoteOperationException; /** * Unregisters the specified {@link NotificationSubscriber} so it will no longer receive {@link Notification}s represented by the given * identifier. * * @param notificationId The identifier of the notification associated with the corresponding publisher. * @param subscriber The {@link NotificationSubscriber} to remove. <code>null</code> if local. * @throws RemoteOperationException standard remote operation exception */ void unsubscribe(String notificationId, NotificationSubscriber subscriber) throws RemoteOperationException; /** * Returns all stored {@link Notification}s represented by the given notification identifier. * * @param notificationId The notification identifier which represents the {@link Notification} to get the {@link NotificationHeader} * for. * @return the {@link Notification}s. * @throws RemoteOperationException standard remote operation exception */ Map<String, List<Notification>> getNotifications(String notificationId) throws RemoteOperationException; }