56a13de14924d02503bc9601979308abc4da3729
[idea/community.git] / platform / external-system-impl / src / com / intellij / openapi / externalSystem / service / internal / ExternalSystemTaskAware.java
1 package com.intellij.openapi.externalSystem.service.internal;
2
3 import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
4 import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType;
5 import org.jetbrains.annotations.NotNull;
6
7 import java.rmi.RemoteException;
8 import java.util.Map;
9 import java.util.Set;
10
11 /**
12  * Represents a service that exposes information about the tasks being processed. 
13  * 
14  * @author Denis Zhdanov
15  * @since 2/8/12 1:46 PM
16  */
17 public interface ExternalSystemTaskAware {
18
19   /**
20    * Allows to check if current service executes the target task.
21    *
22    * @param id  target task's id
23    * @return    <code>true</code> if a task with the given id is executed at the moment by the current service;
24    *            <code>false</code> otherwise
25    * @throws RemoteException      as required by RMI
26    */
27   boolean isTaskInProgress(@NotNull ExternalSystemTaskId id) throws RemoteException;
28
29   /**
30    * Allows to cancel the target task by the current service.
31    *
32    *
33    * @param id  target task's id
34    * @return    <code>true</code> if a task was successfully canceled;
35    *            <code>false</code> otherwise
36    * @throws RemoteException      as required by RMI
37    */
38   boolean cancelTask(@NotNull ExternalSystemTaskId id) throws RemoteException;
39
40   /**
41    * Allows to ask current service for all tasks being executed at the moment.  
42    *
43    * @return      ids of all tasks being executed at the moment grouped by type
44    * @throws RemoteException      as required by RMI
45    */
46   @NotNull
47   Map<ExternalSystemTaskType, Set<ExternalSystemTaskId>> getTasksInProgress() throws RemoteException;
48 }