Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
java: rename an internal method
[simgrid.git] / src / bindings / java / org / simgrid / msg / VM.java
index b9becc6..867eed8 100644 (file)
@@ -51,13 +51,24 @@ public class VM extends Host {
                return null; 
        }
        
+       /** Shutdown and unref the VM. 
+        * 
+        * Actually, this strictly equivalent to shutdown().
+        * In C and in libvirt, the destroy function also releases the memory associated to the VM, 
+        * but this is not the way it goes in Java. The VM will only get destroyed by the garbage 
+        * collector when it is not referenced anymore by your variables. So, to see the VM really 
+        * destroyed, don't call this function but simply release any ref you have on it. 
+        */
        public void destroy() {
-               nativeFinalize();
+               shutdown();
+///            vms.remove(this);
        }
-       private native void nativeFinalize();
-
 
-       /* JNI / Native code */
+       /* Make sure that the GC also destroys the C object */
+       protected void finalize() throws Throwable {
+               nativeFinalize();
+       }
+       public native void nativeFinalize();
 
        /** Returns whether the given VM is currently suspended */      
        public native int isCreated();
@@ -97,17 +108,15 @@ public class VM extends Host {
         */
        public native void shutdown();
 
-       /** Invoke native migration routine */
-       public native void internalmig(Host destination) throws Exception; // TODO add throws DoubleMigrationException (i.e. when you call migrate on a VM that is already migrating);
-
-
+       /** native migration routine */
+       private native void nativeMigration(Host destination) throws Exception;
 
        /** Change the host on which all processes are running
         * (pre-copy is implemented)
         */     
        public void migrate(Host destination) throws HostFailureException{
                try {
-                       this.internalmig(destination);
+                       this.nativeMigration(destination);
                } catch (Exception e){
                  Msg.info("Migration of VM "+this.getName()+" to "+destination.getName()+" is impossible ("+e.getMessage()+")");
                  throw new HostFailureException();