+////////////////////////////////////////////////////////////////////////////
+// ---------------------------------------------------------------------- //
+// 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>
+ * @date Sat Oct 25 21:57:56 2008
+ *
+ * @brief FORB interface of resource manager
+ *
+ *
+ */
#ifndef _FRM_IDL
#define _FRM_IDL
#include "../contract/fres_contract_idl.idl"
+/// FRES framework
module fres {
+ /** Resource manager */
interface resource_manager {
+ /**
+ * Executes admission test and if the contracts are
+ * accepted, they are put to "reserved" state.
+ *
+ * @todo If a contract is in the "reserved" state, and
+ * reserve_contracts() is called again with the same
+ * contract, the previously reserved contract should
+ * be replaced with the new one.
+ *
+ * @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,
+ * - one if admission test was not successfull and
+ * - negative error code if an error occured.
+ */
long reserve_contracts(in contract::ptr_seq contracts);
+
+ /**
+ * Puts contracts with given IDs to the "commited"
+ * state and sends back the changes to VRESes to reach
+ * the new state.
+ *
+ * @param[in] ids IDs of contracts to be commited.
+ *
+ * @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 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 contract_with_scheduler_data);
- void cancel_contracts(in contract::id_seq ids);
+ out contract::ptr_seq schedulable_contracts);
+
+ /**
+ * 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);
};
};