]> rtime.felk.cvut.cz Git - frescor/fna.git/blobdiff - src_frescan/frescan_bwres_fna.c
add the infraestructure for storing the negotiated contracts and performing the analy...
[frescor/fna.git] / src_frescan / frescan_bwres_fna.c
index 10babf2bc21f031d55f58ed7f37478a0e8c2fdd2..2262ac68332a06e9c83a9bedf88dc0cc96266b56 100644 (file)
@@ -111,35 +111,39 @@ int frescan_fna_contract_negotiate
                  const frsh_contract_t *contract,
                  fna_vres_id_t *vres)
 {
-        int accepted;
+        int ret;
+        bool accepted;
         frescan_ss_t ss;
         frescan_contract_t frescan_contract;
 
         DEBUG(FRESCAN_FNA_ENABLE_DEBUG,
               "frsh contract->frescan contract\n");
 
-        // TODO: budget is stored as number of can frames in tv_sec
+        // NOTE: budget is stored as number of can frames in tv_sec
         frescan_contract.min_values.budget = contract->budget_min.tv_sec;
         frescan_contract.min_values.period = contract->period_max;
 
         frescan_contract.max_values.budget = contract->budget_max.tv_sec;
         frescan_contract.max_values.period = contract->period_min;
 
+        // TODO: put 0 if we want the sa module to assign the prios
         frescan_contract.prio = contract->preemption_level;
 
         DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "calling frescan_bwres_negotiate\n");
-        accepted = frescan_bwres_negotiate((frescan_network_t)resource_id,
-                                           &frescan_contract,
-                                           &ss); // TODO: associate the contract with the ss
+        ret = frescan_bwres_negotiate((frescan_network_t)resource_id,
+                                       &frescan_contract,
+                                       &ss,
+                                       &accepted);
+        if (ret != 0) return -1;
 
-        if (accepted == 0) {
+        if (accepted == true) {
                 DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "contract accepted\n");
                 *vres = (fna_vres_id_t)ss;
+                return 0;
         } else {
                 DEBUG(FRESCAN_FNA_ENABLE_DEBUG, "contract not accepted\n");
+                return -1; // TODO: change to constant FNA_REJECTED
         }
-
-        return accepted;
 }
 
 /**