CORBA_long
allocate_transaction_vres(fres_contract_broker _obj,
+ const CORBA_char * name,
const CORBA_long id,
CORBA_Environment *ev)
{
- return FRSH_ERR_NOT_IMPLEMENTED;
+ struct fcb *fcb = o2fcb(_obj);
+ struct fcb_transaction *ft;
+ int ret;
+ char * const n = (char * const)&name;
+
+ ft = fcb_transaction_find(fcb, &n);
+ if (!ft) {
+ ret = FRES_ERR_TRANSACTION_NOT_FOUND;
+ goto err;
+ }
+ ret = 0;
+err:
+ return ret;
}
long negotiate_transaction(in transaction_t transaction);
long wait_transaction(in string name,
out transaction_t transaction);
- long allocate_transaction_vres(in long id);
+ long allocate_transaction_vres(in string name, in long id);
};
};
MSG(VRES_ALREADY_ALLOCATED);
MSG(VRES_PART_OF_TRANSACTION);
MSG(SPARE_CAPACITY_NOT_SUPPORTED);
+ MSG(TRANSACTION_NOT_FOUND);
}
if (s == NULL) return FRSH_ERR_BAD_ARGUMENT;
FRES_ERR_VRES_ALREADY_ALLOCATED,
FRES_ERR_VRES_PART_OF_TRANSACTION,
FRES_ERR_SPARE_CAPACITY_NOT_SUPPORTED,
+ FRES_ERR_TRANSACTION_NOT_FOUND,
};
int fres_strerror (int error, char *message, size_t size);
{
int ret;
struct forb_env env;
+
if (!trans || !*trans) {
ret = FRSH_ERR_BAD_ARGUMENT;
goto err;
int
frsh_transaction_alloc_vres(frsh_transaction_t *t,
- int id,
+ int index,
frsh_vres_id_t *vres)
{
- return FRSH_ERR_NOT_IMPLEMENTED;
+ int ret;
+ struct forb_env env;
+ ret = fres_contract_broker_allocate_transaction_vres(
+ frsh_forb_global.fcb, (*t)->name, index, &env);
+ if (forb_exception_occurred(&env)) {
+ ret = fres_forbex2err(&env);
+ goto err;
+ }
+err:
+ return ret;
}
WVFRSH(frsh_transaction_add_contract(&t, &contract[i], i));
}
+ //WVPASS(frsh_transaction_alloc_vres(&t, TEST_CONTRACT_1, &vres1) == FRES_ERR_TRANSACTION_NOT_FOUND);
WVFRSH(frsh_transaction_negotiate(&t));
-#if 0
+#if 0
WVFRSH(frsh_transaction_alloc_vres(&t, TEST_CONTRACT_1, &vres1));
WVFRSH(frsh_transaction_alloc_vres(&t, TEST_CONTRACT_2, &vres2));
/* TEST_CONTRACT_3 is allocated in trans_nego2.c */