/*
- * simgrid.msg.Task.java 1.00 07/05/01
- *
- * Copyright 2006,2007 Martin Quinson, Malek Cherier
+ * Copyright 2006-2012 The SimGrid Team.
* All right 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.
+ * (GNU LGPL) which comes with this package.
*/
package org.simgrid.msg;
* a native task. Even if this attribute is public you must never
* access to it. It is set automatically during the build of the object.
*/
- public long bind = 0;
+ private long bind = 0;
+ /**
+ * Task name
+ */
+ protected String name;
+
+ private double messageSize;
+ static private Long idCpt = 0L;
+
+ private Long id;
/** Default constructor (all fields to 0 or null) */
public Task() {
create(null, 0, 0);
+ this.messageSize = 0;
+ setId(idCpt);
+ idCpt++;
}
/* * * *
*/
public Task(String name, double computeDuration, double messageSize) {
create(name, computeDuration, messageSize);
+ this.messageSize = messageSize;
+ setId(idCpt);
+ idCpt++;
}
/**
* Construct an new parallel task with the specified processing amount and amount for each host
* methods. This value has to be >= 0.
* @exception IllegalArgumentException if compute duration <0 or message size <0
*/
- final native void create(String name,
+ private final native void create(String name,
double computeDuration,
double messageSize)
throws IllegalArgumentException;
* @param messageSizes An array of doubles
*
*/
- final native void parallelCreate(String name,
+ private final native void parallelCreate(String name,
Host[]hosts,
double[]computeDurations,
double[]messageSizes)
/* * * *
* * Getters / Setters * *
* * * */
- /** Gets the name of a task
- * FIXME: Cache it.
- * @return
+ /**
+ * Gets the name of a task
*/
- public native String getName();
- /** Gets the sender of the task
+ public String getName() {
+ return name;
+ }
+ /**
+ * Gets the sender of the task
* Returns null if the task hasn't been sent yet
*/
public native Process getSender();
/** Gets the remaining computation of the task
*/
public native double getRemainingDuration();
+ /**
+ * Sets the name of the task
+ * @param name the new task name.c
+ */
+ public native void setName(String name);
/**
* This method sets the priority of the computation of the task.
* The priority doesn't affect the transfer rate. For example a
* @param priority The new priority of the task.
*/
public native void setPriority(double priority);
- /* * * *
- * * Communication-related * *
- * * * */
-
-
+ /**
+ * Set the computation amount needed to process the task
+ * @param computationAmount the amount of computation needed to process the task
+ */
+ public native void setComputeDuration(double computationAmount);
/* * * *
* * Computation-related * *
* * * */
* The natively implemented method to destroy a MSG task.
*/
protected native void destroy();
+ /* * * *
+ * * Communication-related * *
+ * * * */
/** Send the task asynchronously on the mailbox identified by the specified name,
* with no way to retrieve whether the communication succeeded or not
static {
nativeInit();
}
+
+ public double getMessageSize() {
+ return this.messageSize;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
}