Project

General

Profile

Statistics
| Revision:

sdis1819-t7g02 / service / Client.java @ 1

History | View | Annotate | Download (4.34 KB)

1
package service;
2

    
3
import java.rmi.registry.LocateRegistry;
4
import java.rmi.registry.Registry;
5

    
6
public class Client {
7

    
8
    private Client() {}
9

    
10
    public static void main(String[] args) { 
11

    
12
            System.out.println("CLIENT");
13
            try 
14
        {              
15
                int argc = args.length;
16

    
17
            if(argc < 2 || argc > 4)
18
            {
19
              print_usage();
20
              return;
21
            }
22
                
23
            
24
            String aux = args[0];
25
            
26
            String[] acess_point = aux.split(":");
27
            
28
            String ip = acess_point[0];
29
            String id = acess_point[1];
30
            
31
            String sub_protocol = args[1];
32
            
33
            Registry registry = LocateRegistry.getRegistry(ip);
34
            RMI rmi = (RMI) registry.lookup(id);
35
            
36
            String file_path;
37

    
38
            String response;
39
            
40
            switch(sub_protocol)
41
            {
42
              case "BACKUP":
43
                if(argc != 4)
44
                {
45
                        print_error_ops(sub_protocol);
46
                }
47
                
48
                
49
                file_path = args[2];
50
                int replication_degree = Integer.parseInt(args[3]);
51
               
52
                
53
                response = rmi.backup(file_path, replication_degree);
54
                System.out.println("response: " + response);
55
                break;
56

    
57
              case "RESTORE":
58
                if(argc != 3)
59
                {
60
                        print_error_ops(sub_protocol);
61
                }
62

    
63
                file_path = args[2];
64
                response = rmi.restore(file_path);
65
                System.out.println("response: " + response);
66
                break;
67

    
68
              case "DELETE":
69
                if(argc != 3)
70
                {
71
                        print_error_ops(sub_protocol);
72
                }
73

    
74
                
75
                file_path = args[2];
76
                response = rmi.delete(file_path);
77
                System.out.println("response: " + response);
78
                break;
79

    
80
              case "RECLAIM":
81
                if(argc != 3)
82
                {
83
                  print_error_ops(sub_protocol);
84
                }
85

    
86
                long disk_space = Long.parseLong(args[2]);
87
                response = rmi.reclaim(disk_space);
88
                System.out.println("response: " + response);
89
                break;
90

    
91
              case "STATE":
92
                if(argc != 2)
93
                {
94
                        print_error_ops(sub_protocol);
95
                }
96

    
97
                response = rmi.state();
98
                System.out.println("response: " + response);
99
                break;
100
            }
101

    
102
        } catch (Exception e) {
103
            System.err.println("Client exception: " + e.toString()); 
104
        }
105
    }
106
    
107
    public static void print_usage()
108
    {
109
      System.out.println("Usage: :\n");
110
      System.out.println("  java Client <peer_ap> <operation> <opnd_1> <opnd_2> \n");
111
      System.out.println("  - <peer_ap> -> peer's acess point\n");
112
      System.out.println("  - <operation> -> Subprotocol ops: BACKUP, RESTORE, DELETE, RECLAIM;  Enhancements: ops with ENH in the end. State: STATE \n");
113
      System.out.println("  - <opnd_1> -> path name of the file or in case of op RECLAIM the max amout of disk space\n");
114
      System.out.println("  - <opnd_2>* -> integer that specifies the desired replication degree\n");
115
    }
116
    
117
    public static void print_error_ops(String error)
118
    {
119
      switch(error)
120
      {
121
        case "BACKUP":
122
          System.out.println("ERROR on BACKUP format. Must be:\n");
123
          System.out.println("> BACKUP <file_path> <replication_degree>");
124
          break;
125

    
126
        case "RESTORE":
127
          System.out.println("ERROR on RESTORE format. Must be:\n");
128
          System.out.println("> RESTORE <file_path>");
129
          break;
130

    
131
        case "DELETE":
132
          System.out.println("ERROR on DELETE format. Must be:\n");
133
          System.out.println("> DELETE <file_path>");
134
          break;
135

    
136
        case "RECLAIM":
137
          System.out.println("ERROR on RECLAIM format. Must be:\n");
138
          System.out.println("> RECLAIM <disk_space>");
139
          break;
140

    
141
        case "STATE":
142
          System.out.println("ERROR on STATE format. Must be:\n");
143
          System.out.println("> RECLAIM <disk_space>");
144
          break;
145

    
146
         default:
147
           System.out.println("ERROR. Unkown op");
148
      }
149
    }
150
}