aboutsummaryrefslogtreecommitdiffstats
path: root/tools/domctl/src/uk/ac/cam/cl/xeno/domctl/CommandStop.java
blob: c6b4cadd6c58d4ec46f373a651521837eb1b3ec2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package uk.ac.cam.cl.xeno.domctl;

import java.io.*;
import java.net.*;

public class CommandStop extends Command
{
  public int doCommand(Defaults d, String args[])
  {
    Runtime r = Runtime.getRuntime ();
    int domain_id = getIntParameter(args, 'n', 0);
    int rc = 0;

    if (domain_id == 0) {
      System.err.println ("Expected -n<domain_id>");
      rc = -1;
      return rc;
    }

    try
      {
	Process stop_p;
	String stop_cmdarray[] = new String[2];
	int stop_rc;
	stop_cmdarray[0] = d.XIToolsDir + "xi_stop";
	stop_cmdarray[1] = "" + domain_id;

	if (Settings.TEST) {
	  reportCommand (stop_cmdarray);
	} else {
	  stop_p = r.exec (stop_cmdarray);
	  stop_rc = stop_p.waitFor ();
	  
	  if (stop_rc != 0) {
	    return reportXIError ("Could not stop domain", stop_cmdarray);
	  }
	}
      }
    catch (Exception e) 
      {
	System.err.println ("Could not stop new domain (" + e + ")");
	e.printStackTrace ();
	rc = -1;
      }

    return rc;
  }

  public String getName()
  {
    return "stop";
  }

  public String getUsage()
  {
    return "[-n<domain_id>]";
  }

  public String getHelpText()
  {
    return
      "Stop the specified domain.";
  }
}