]> rtime.felk.cvut.cz Git - frescor/frsh.git/blobdiff - fres/resmng/frm.idl
Implemented support for contract renegotiation
[frescor/frsh.git] / fres / resmng / frm.idl
index a508d9712e58eba407418488b5bb769ab6a04629..2775ac29690ec25da4a26f83150d5005e7bd9def 100644 (file)
+////////////////////////////////////////////////////////////////////////////
+// ---------------------------------------------------------------------- //
+// 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);
        };
 };