+////////////////////////////////////////////////////////////////////////////
+// ---------------------------------------------------------------------- //
+// Copyright (C) 2006 - 2008 FRESCOR consortium partners: //
+// //
+// Universidad de Cantabria, SPAIN //
+// University of York, UK //
+// Scuola Superiore Sant'Anna, ITALY //
+// Kaiserslautern University, GERMANY //
+// Univ. Politécnica Valencia, SPAIN //
+// Czech Technical University in Prague, CZECH REPUBLIC //
+// ENEA SWEDEN //
+// Thales Communication S.A. FRANCE //
+// Visual Tools S.A. SPAIN //
+// Rapita Systems Ltd UK //
+// Evidence ITALY //
+// //
+// See http://www.frescor.org for a link to partners' websites //
+// //
+// FRESCOR project (FP6/2005/IST/5-034026) is funded //
+// in part by the European Union Sixth Framework Programme //
+// The European Union is not liable of any use that may be //
+// made of this code. //
+// //
+// //
+// based on previous work (FSF) done in the FIRST project //
+// //
+// Copyright (C) 2005 Mälardalen University, SWEDEN //
+// Scuola Superiore S.Anna, ITALY //
+// Universidad de Cantabria, SPAIN //
+// University of York, UK //
+// //
+// FSF API web pages: http:marte.unican.es/fsf/docs //
+// http:shark.sssup.it/contrib/first/docs/ //
+// //
+// This file is part of FORB (Frescor Object Request Broker) //
+// //
+// FORB is free software; you can redistribute it and/or modify it //
+// under terms of the GNU General Public License as published by the //
+// Free Software Foundation; either version 2, or (at your option) any //
+// later version. FORB is distributed in the hope that it will be //
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty //
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU //
+// General Public License for more details. You should have received a //
+// copy of the GNU General Public License along with FORB; see file //
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, //
+// Cambridge, MA 02139, USA. //
+// //
+// As a special exception, including FORB header files in a file, //
+// instantiating FORB generics or templates, or linking other files //
+// with FORB objects to produce an executable application, does not //
+// by itself cause the resulting executable application to be covered //
+// by the GNU General Public License. This exception does not //
+// however invalidate any other reasons why the executable file might be //
+// covered by the GNU Public License. //
+////////////////////////////////////////////////////////////////////////////
+
/**
* @file frm.idl
* @author Michal Sojka <sojkam1@fel.cvut.cz>
* contract, the previously reserved contract should
* be replaced with the new one.
*
- * @param contracts New contracts to be reserved.
+ * @param[in] contracts Contract(s) to negotiate,
+ * renegotiate or cancel. The operation on the
+ * contract is determined as follows:
+ * - cancel: contracts with an ID and without any block
+ *
+ * - neg: contracts with ID not present in current
+ * schedulability scenario.
+ *
+ * - reneg: contracts with ID present in current
+ * schedulability scenario.
*
* @return
* - Zero if reservation (admisson test) was successfull,
* @param[out] schedulable_contracts Schedulable
* contracts, for new or changed VRESes. These
* contract may be extened by one or more data blocks
- * for use by the scheduler. The scheduler receives
+ * for use by the allocator. The allocator receives
* the contracts in the same order as they are
* returned.
*/
void commit_contracts(in contract::id_seq ids,
out contract::ptr_seq schedulable_contracts);
- void cancel_contracts(in contract::id_seq ids);
+
+ /**
+ * Cancels not-commited reservations.
+ *
+ * @param ids ID's of reserved contracts to be rolled-back
+ * to the state before reservation.
+ */
+ void cancel_reservations(in contract::id_seq ids);
+ /**
+ * Returns the list of commited contracts
+ *
+ * @param contracts Commited contracts
+ *
+ * @param utilization Utilization in the range 0-100
+ * (for visualization) or -1 if utilization cannot be
+ * calculated.
+ */
+ void get_contracts(out contract::ptr_seq contracts, out long utilization);
};
};