Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into mc
[simgrid.git] / src / bindings / java / org / simgrid / msg / Comm.java
index a085ed0..b4d2341 100644 (file)
@@ -1,13 +1,11 @@
+/* Copyright (c) 2012-2014. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
 package org.simgrid.msg;
-/**
-* Copyright (c) 2012-2013. The SimGrid Team.
-* All rights reserved.
-*
-* This program is free software; you can redistribute 
-* it and/or modify it under the terms of the license 
-* (GNU LGPL) which comes with this package.
-*
-*/
+
 /**
  * Communication action, representing an ongoing communication
  * between processes.
@@ -42,35 +40,33 @@ public class Comm {
        protected Comm() {
 
        }
-       /**
-        * Finalize the communication object, destroying it.
-        */
-       protected void finalize() throws Throwable {
-               destroy();
+       /** Destroy the C communication object, when the GC reclaims the java part. */
+       @Override
+       protected void finalize() {
+               try {
+                       nativeFinalize();
+               } catch (Throwable e) {
+                       e.printStackTrace();
+               }
        }
-       /**
-        * Unbind the communication object
-        */
-       protected native void destroy() throws NativeException;
+       protected native void nativeFinalize();
        /**
         * Returns if the communication is finished or not.
         * If the communication has finished and there was an error,
         * raise an exception.
         */
        public native boolean test() throws TransferFailureException, HostFailureException, TimeoutException ;
-       /**
-        * Wait for the complemetion of the communication for an indefinite time
-        */
+       /** Wait infinitely for the completion of the communication (infinite timeout) */
        public void waitCompletion() throws TransferFailureException, HostFailureException, TimeoutException {
                waitCompletion(-1);
        }
        /**
         * Wait for the completion of the communication.
         * Throws an exception if there were an error in the communication.
-        * @param timeout Time before giving up
+        * @param timeout Time before giving up (infinite time if negative)
         */
        public native void waitCompletion(double timeout) throws TransferFailureException, HostFailureException, TimeoutException;
-               
+
        /**
         * Returns the task associated with the communication.
         * if the communication isn't finished yet, will return null.