Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge tag 'v3_9_90' into hypervisor
[simgrid.git] / src / bindings / java / org / simgrid / msg / Host.java
1 /*
2  * Bindings to the MSG hosts
3  *
4  * Copyright (c) 2006-2013. 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  * bound 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         protected 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         public String toString (){
71                 return this.name; 
72                 
73         }
74
75         /**
76          * This static method gets an host instance associated with a native
77          * host of your platform. This is the best way to get a java host object.
78          *
79          * @param name          The name of the host to get.
80          *
81          * @return              The host object with the given name.
82      * @exception               HostNotFoundException if the name of the host is not valid.
83          *                                      NativeException if the native version of this method failed.
84          */ 
85         public native static Host getByName(String name) 
86         throws HostNotFoundException, NullPointerException;
87         /**
88          * This static method returns the count of the installed hosts.
89          *
90          * @return                      The count of the installed hosts.
91          */ 
92         public native static int getCount();
93
94         /**
95          * This static method return an instance to the host of the current process.
96          *
97          * @return                      The host on which the current process is executed.
98          */ 
99         public native static Host currentHost();
100
101         /**
102          * This static method returns all of the hosts of the installed platform.
103          *
104          * @return                      An array containing all the hosts installed.
105          *
106          */ 
107         public native static Host[] all();
108
109     /** 
110      * This static method sets a mailbox to receive in asynchronous mode.
111      * 
112      * All messages sent to this mailbox will be transferred to 
113      * the receiver without waiting for the receive call. 
114      * The receive call will still be necessary to use the received data.
115      * If there is a need to receive some messages asynchronously, and some not, 
116      * two different mailboxes should be used.
117      *
118      * @param mailboxName The name of the mailbox
119      */
120     public static native void setAsyncMailbox(String mailboxName);
121
122
123         /**
124          * This method returns the name of a host.
125          * @return                      The name of the host.
126          *
127          */ 
128         public String getName() {
129                 return name;
130         }
131
132         /**
133          * Sets the data of the host.
134      * @param data
135      */
136         public void setData(Object data) {
137                 this.data = data;
138         } 
139         /**
140          * Gets the data of the host.
141      *
142      * @return The data object associated with the host.
143      */
144         public Object getData() {
145                 return this.data;
146         }
147
148         /**
149          * Checks whether a host has data.
150      *
151      * @return True if the host has an associated data object.
152      */
153         public boolean hasData() {
154                 return null != this.data;
155         }
156
157         /**
158          * This method start the host if it is off
159          */ 
160         public native void on();
161
162         /**
163          * This method stop the host if it is on
164          */ 
165         public native void off();
166
167
168         /**
169          * This method returns the number of tasks currently running on a host.
170          * The external load is not taken in account.
171          *
172          * @return                      The number of tasks currently running on a host.
173          */ 
174         public native int getLoad();
175
176         /**
177          * This method returns the speed of the processor of a host,
178          * regardless of the current load of the machine.
179          *
180          * @return                      The speed of the processor of the host in flops.
181          *
182          */ 
183         public native double getSpeed();
184
185         /**
186          * This method returns the number of core of a host.
187          *
188          * @return                      The speed of the processor of the host in flops.
189          *
190          */ 
191         public native double getCoreNumber();
192
193         /**
194          * Returns the value of a given host property. 
195          */
196         public native String getProperty(String name);
197         
198         /**
199          * Change the value of a given host property. 
200          */
201         public native void setProperty(String name, String value);
202     
203         /** This method tests if a host is available.
204      * @return True if the host is available.
205      */
206         public native boolean isAvail();
207         
208         /**
209          * Class initializer, to initialize various JNI stuff
210          */
211         public static native void nativeInit();
212         static {
213                 nativeInit();
214         }       
215