View Javadoc

1   package twcsckernel.projectbase.common;
2   
3   import java.io.IOException;
4   import java.rmi.Remote;
5   import java.rmi.RemoteException;
6   
7   import twcsckernel.projectbase.plugins.PluginDescriptor;
8   
9   /***
10   * Interfejs zdalny użytkownika.
11   * 
12   * @author VMD Group
13   * 
14   */
15  public interface User extends Remote {
16  
17  	/***
18  	 * Listowanie dostępnych pluginów dla klienta
19  	 * 
20  	 * @return tablica deskryptorów dostępnych pluginów
21  	 * @throws RemoteException
22  	 */
23  	public PluginDescriptor[] listClientPlugins() throws RemoteException;
24  
25  	/***
26  	 * Download klienckiego JARa plugina podanej nazwie pakietowej.
27  	 * 
28  	 * @param clientPackagePath -
29  	 *            nazwa pakietowa klienckiej części plugina
30  	 * @return - tablica bajtów pliku JAR lub <code>null</code> jeśli nie
31  	 *         znaleziono plugina o podanej nazwie
32  	 * @throws RemoteException
33  	 * @throws IOException -
34  	 *             wyjątek rzucany gdy wystąpił wyjątek podczas odczytu plugina
35  	 *             z dysku
36  	 */
37  	public byte[] downloadClientPlugin(String clientPackagePath)
38  			throws RemoteException, IOException;
39  
40  	/***
41  	 * Pobranie agenta sieciowego zdalnej części plugina o podanej klienckiej
42  	 * ścieżce pakietowej.
43  	 * 
44  	 * @param clientPackagePath -
45  	 *            nazwa pakietowa klienckiej części plugina
46  	 * @param clientCallback -
47  	 *            własny agent sieciowy
48  	 * @return - agent serwerowej części plugina
49  	 */
50  	public RemoteAgent getRemotePluginAgent(String clientPackagePath,
51  			RemoteAgent clientCallback) throws RemoteException;
52  
53  	/***
54  	 * Pobiera fabrykę plików danego użytkownika.
55  	 * 
56  	 * @return - fabryka plików
57  	 * @throws RemoteException
58  	 */
59  	public RemoteFileSystem getUserFileSystem() throws RemoteException;
60  
61  	/***
62  	 * Ustawia na serwerze listener zmian w systemie plików.
63  	 * 
64  	 * @param fsChangeListener -
65  	 *            listener zmian w systemie plików
66  	 * @throws RemoteException
67  	 */
68  	public void setFsChangeListener(FsChangeListener fsChangeListener)
69  			throws RemoteException;
70  
71  	/***
72  	 * Wylogowanie użytkownika z serwera.
73  	 * 
74  	 * @throws RemoteException
75  	 */
76  	public void logout() throws RemoteException;
77  
78  	/***
79  	 * Metoda służy do pingowania serwera w celu utrzymania aktywnego
80  	 * rejestracji użytkownika w serwerze RMI.
81  	 * 
82  	 * @throws RemoteException
83  	 */
84  	public void ping() throws RemoteException;
85  
86  	/***
87  	 * Metoda zwraca maksymalny czas przez jaki użytkownik może nie wykonywać
88  	 * żadnej metody na obiekcie <i>User</i>. Po przekroczeniu tego czasu
89  	 * serwer ma prawo wylogować klienta.
90  	 * 
91  	 * @return - maksymalny czas nieaktywności w milisekundach
92  	 * @throws RemoteException
93  	 */
94  	public long getActivityTimeout() throws RemoteException;
95  }