Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[win+java] fix the name of libwinpthread-1.dll
[simgrid.git] / src / bindings / java / org / simgrid / msg / Msg.java
1 /* JNI interface to C code for MSG. */
2
3 /* Copyright (c) 2006-2014. The SimGrid Team.
4  * All rights reserved.                                                     */
5
6 /* This program is free software; you can redistribute it and/or modify it
7  * under the terms of the license (GNU LGPL) which comes with this package. */
8
9 package org.simgrid.msg;
10 import org.simgrid.NativeLib;
11
12
13 public final class Msg {
14         /* Statically load the library which contains all native functions used in here */
15         static private boolean isNativeInited = false;
16         public static void nativeInit() {
17                 if (isNativeInited)
18                         return;
19                 
20                 if (System.getProperty("os.name").toLowerCase().startsWith("win"))
21                         NativeLib.nativeInit("winpthread-1");
22
23                 NativeLib.nativeInit("simgrid");
24                 NativeLib.nativeInit("simgrid-java");      
25                 isNativeInited = true;
26         }
27
28         static {
29                 nativeInit();
30         }
31
32         /** Retrieve the simulation time
33          * @return The simulation time.
34          */
35         public final static native double getClock();
36         /**
37          * Issue a debug logging message.
38          * @param s message to log.
39          */
40         public final static native void debug(String s);
41         /**
42          * Issue an verbose logging message.
43          * @param s message to log.
44          */
45         public final static native void verb(String s);
46
47         /** Issue an information logging message
48          * @param s
49          */
50         public final static native void info(String s);
51         /**
52          * Issue an warning logging message.
53          * @param s message to log.
54          */
55         public final static native void warn(String s);
56         /**
57          * Issue an error logging message.
58          * @param s message to log.
59          */
60         public final static native void error(String s);
61         /**
62          * Issue an critical logging message.
63          * @param s message to log.
64          */
65         public final static native void critical(String s);
66
67         /*********************************************************************************
68          * Deployment and initialization related functions                               *
69          *********************************************************************************/
70
71         /**
72          * The natively implemented method to initialize a MSG simulation.
73          *
74          * @param args            The arguments of the command line of the simulation.
75          */
76         public final static native void init(String[]args);
77
78         /**
79          * Run the MSG simulation.
80          *
81          * The simulation is not cleaned afterward (see  
82          * {@link #clean()} if you really insist on cleaning the C side), so you can freely 
83          * retrieve the informations that you want from the simulation. In particular, retrieving the status 
84          * of a process or the current date is perfectly ok. 
85          */
86         public final static native void run() ;
87
88         /** This function is useless nowadays, just stop calling it. */
89         @Deprecated
90         public final static void clean(){}
91
92         /**
93          * The native implemented method to create the environment of the simulation.
94          *
95          * @param platformFile    The XML file which contains the description of the environment of the simulation
96          *
97          */
98         public final static native void createEnvironment(String platformFile);
99
100         public final static native As environmentGetRoutingRoot();
101
102         /**
103          * The method to deploy the simulation.
104          *
105          *
106          * @param deploymentFile
107          */
108         public final static native void deployApplication(String deploymentFile);
109
110         /** Example launcher. You can use it or provide your own launcher, as you wish
111          * @param args
112          * @throws MsgException
113          */
114         static public void main(String[]args) throws MsgException {
115                 /* initialize the MSG simulation. Must be done before anything else (even logging). */
116                 Msg.init(args);
117
118                 if (args.length < 2) {
119                         Msg.info("Usage: Msg platform_file deployment_file");
120                         System.exit(1);
121                 }
122
123                 /* Load the platform and deploy the application */
124                 Msg.createEnvironment(args[0]);
125                 Msg.deployApplication(args[1]);
126                 /* Execute the simulation */
127                 Msg.run();
128         }
129 }