Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Incorporate simgrid-java in simgrid-java/.
[simgrid.git] / simgrid-java / org / simgrid / msg / Host.java
1 /*
2  * Bindings to the MSG hosts
3  *
4  * Copyright 2006-2012 The SimGrid Team           
5  * All right reserved. 
6  *
7  * This program is free software; you can redistribute 
8  * it and/or modify it under the terms of the license 
9  *(GNU LGPL) which comes with this package. 
10  *
11  */  
12 package org.simgrid.msg;
13
14 /**
15  * A host object represents a location (any possible place) where a process may run. 
16  * Thus it is represented as a physical resource with computing capabilities, some 
17  * mailboxes to enable running process to communicate with remote ones, and some private 
18  * data that can be only accessed by local process. An instance of this class is always 
19  * binded with the corresponding native host. All the native hosts are automatically created 
20  * during the call of the method Msg.createEnvironment(). This method take as parameter a
21  * platform file which describes all elements of the platform (host, link, root..).
22  * You cannot create a host yourself.
23  *
24  * The best way to get an host instance is to call the static method 
25  * Host.getByName().
26  *
27  * For example to get the instance of the host. If your platform
28  * file description contains an host named "Jacquelin" :
29  *
30  * \verbatim
31 Host jacquelin;
32
33 try { 
34         jacquelin = Host.getByName("Jacquelin");
35 } catch(HostNotFoundException e) {
36         System.err.println(e.toString());
37 }
38 ...
39 \endverbatim
40  *
41  */ 
42 public class Host {
43
44         /**
45          * This attribute represents a bind between a java host object and
46          * a native host. Even if this attribute is public you must never
47          * access to it. It is set automatically during the call of the 
48          * static method Host.getByName().
49          *
50          * @see                         Host.getByName().
51          */ 
52         private long bind;
53         /**
54          * Host name
55          */
56         private String name;
57
58         /**
59          * User data.
60          */ 
61         private Object data;
62     /**
63      *
64      */
65     protected Host() {
66                 this.bind = 0;
67                 this.data = null;
68         };
69
70         /**
71          * This static method gets an host instance associated with a native
72          * host of your platform. This is the best way to get a java host object.
73          *
74          * @param name          The name of the host to get.
75          *
76      * @return
77      * @exception               HostNotFoundException if the name of the host is not valid.
78          *                                      NativeException if the native version of this method failed.
79          */ 
80         public native static Host getByName(String name) 
81         throws HostNotFoundException, NullPointerException;
82         /**
83          * This static method returns the count of the installed hosts.
84          *
85          * @return                      The count of the installed hosts.
86          */ 
87         public native static int getCount();
88
89         /**
90          * This static method return an instance to the host of the current process.
91          *
92          * @return                      The host on which the current process is executed.
93          */ 
94         public native static Host currentHost();
95
96         /**
97          * This static method returns all of the hosts of the installed platform.
98          *
99          * @return                      An array containing all the hosts installed.
100          *
101          */ 
102         public native static Host[] all();
103
104         /**
105          * This method returns the name of a host.
106          * @return                      The name of the host.
107          *
108          */ 
109         public String getName() {
110                 return name;
111         }
112         /**
113          * Sets the data of the host.
114      * @param data
115      */
116         public void setData(Object data) {
117                 this.data = data;
118         } 
119         /**
120          * Gets the d   ata of the host.
121      *
122      * @return
123      */
124         public Object getData() {
125                 return this.data;
126         }
127
128         /**
129          * Checks whether a host has data.
130      *
131      * @return
132      */
133         public boolean hasData() {
134                 return null != this.data;
135         }
136
137         /**
138          * This method returns the number of tasks currently running on a host.
139          * The external load is not taken in account.
140          *
141          * @return                      The number of tasks currently running on a host.
142          */ 
143         public native int getLoad();
144
145         /**
146          * This method returns the speed of the processor of a host,
147          * regardless of the current load of the machine.
148          *
149          * @return                      The speed of the processor of the host in flops.
150          *
151          */ 
152         public native double getSpeed();
153         /**
154          * @brief Returns the value of a given host property. 
155          */
156         public native String getProperty(String name);
157         /**
158          * @brief Change the value of a given host property. 
159          */
160         public native void setProperty(String name, String value);
161     /** This method tests if a host is avail.
162      * @return
163      */
164         public native boolean isAvail();
165         
166         /**
167          * Class initializer, to initialize various JNI stuff
168          */
169         public static native void nativeInit();
170         static {
171                 nativeInit();
172         }       
173