1 #ifndef _FWP_CONTRACT_H
2 #define _FWP_CONTRACT_H
6 #include "ul_gavlcust.h"
9 *typedef struct mfrsh_contract_ops{
10 * fwp_contract_d_t (*create)(fwp_contract_t *contract);
11 * int (*reserve)(fwp_contract_d_t contractd);
12 * int (*commit)(fwp_contract_d_t contractd);
13 *} mfrsh_contract_ops_t;
15 * typedef struct mfrsh_contract_d {
16 * mfrsh_resource_id_t resource_id;
17 * mfrsh_contract_id_t contract_id;
22 FWP_CONT_NOTNEGOTIATED = 0,
23 FWP_CONT_RESERVED = 1,
24 FWP_CONT_NEGOTIATED = 2
25 } fwp_contract_status_t;
27 /**< Contract Status */
30 FWP_CONT_REQUESTED = 1,
31 FWP_CONT_REJECTED = 2,
32 FWP_CONT_NEGOTIATED = 3,
34 } fwp_contract_status_t;*/
38 * It is an external representation of contract intented for application
44 int budget; /**< bytes per period */
45 int period_usec; /**< all time units are in microseconds */
48 typedef fwp_vres_id_t fwp_contract_id_t;
51 struct fwp_contract_data {
53 /**< contract specified by user */
54 fwp_contract_t contract;
55 /**< parameters from contract negotiated for vres */
56 fwp_vres_params_t vres_params;
57 /**< the address of agent from that the contract comes */
58 /*fwp_transaction_id_t trans_id;*/
59 /* pointer to fwp_vres or fwp_participant */
62 fwp_contract_status_t status;
64 ul_list_node_t list_node;
65 gavl_node_t tree_node;
66 } fwp_contract_data_t;
68 typedef fwp_contract_data_t* fwp_contract_d_t;
70 static inline fwp_contract_data_t* fwp_contract_data_new()
72 return memset(malloc(sizeof (fwp_contract_data_t)),'\0',
73 sizeof(fwp_contract_data_t));
76 static inline int fwp_contract_is_reserved(fwp_contract_d_t contract)
78 return (contract->status == FWP_CONT_RESERVED);
81 static inline int fwp_contract_is_negotiated(fwp_contract_d_t contract)
83 return (contract->status == FWP_CONT_NEGOTIATED);
86 fwp_contract_d_t fwp_contract_create(fwp_contract_t *contract);
87 int fwp_contract_reserve(fwp_contract_d_t contractd);
88 int fwp_contract_commit(fwp_contract_d_t contractd);
90 int fwp_contract_negotiate(fwp_contract_d_t contract, fwp_vres_d_t *vresdp);
92 #endif /*_FWP_CONTRACT_H */