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 }