4 * Global mngt variables
7 fwp_participant_t *fwp_participant_this;
8 fwp_participant_t *fwp_participant_mngr;
10 /*fwp_endpoint_d_t fwp_mngt_repointd;*/
23 int fwp_mngt_send(fwp_msg_type_t type,fwp_msgb_t *msgb,
24 fwp_participant_t *source, fwp_participant_t *dest)
26 fwp_msgb_push(msgb, sizeof(struct fwp_msg_header));
27 fwp_msg_header_in(msgb->data, type, source->id);
29 fwp_send(dest->epointd, msgb->data, msgb->len);
34 int fwp_mngt_recv(fwp_msg_type_t *type, fwp_participant_id_t *participant_id,
39 fwp_msgb_reset_data(msgb);
40 size = fwp_recv(fwp_participant_this->epointd, msgb->data,
42 fwp_msgb_put(msgb, size);
44 fwp_msg_header_out(msgb->data, type, participant_id);
45 fwp_msgb_pull(msgb, sizeof(struct fwp_msg_header));
47 FWP_DEBUG("Received msg: type=%d from nodeid=%d appid=%d\n", *type,
48 participant_id->node_id, participant_id->app_id);
53 int fwp_mngt_service_vres_create(fwp_vres_d_t* fwp_service_vresd)
55 struct fwp_vres_params fwp_service_vparams;
57 /* TODO: Add to contract table */
58 /* create service vres */
59 fwp_service_vparams.ac_id = FWP_AC_BK;
60 fwp_service_vparams.budget = 100;
61 fwp_service_vparams.period_usec = 1000;
63 if ((fwp_vres_create(&fwp_service_vparams, fwp_service_vresd) < 0)) {
64 fprintf(stderr,"Unable to open service vres\n");
68 FWP_DEBUG("Service vres negotiated\n");
73 /* Launch discovery/connect process to
74 * introduce itself to fwp manager and get description of manager*/
75 void fwp_mngt_connect()
77 fwp_participant_info_t my_info, mngr_info;
78 fwp_participant_id_t participant_id;
80 fwp_msg_type_t msg_type;
83 /* prepare hello message */
84 msgb = fwp_msgb_alloc(sizeof(struct fwp_msg_header) +
85 sizeof(struct fwp_msg_hello));
86 fwp_msgb_reserve(msgb, sizeof(struct fwp_msg_header));
88 my_info.id = fwp_participant_this->id;
89 my_info.stream_id = fwp_participant_this->stream_id;
91 fwp_msg_hello_in(msgb->tail, &my_info);
92 fwp_msgb_put(msgb, sizeof(struct fwp_msg_hello));
94 /* Send hello to manager */
95 fwp_mngt_send(FWP_MSG_HELLO, msgb,
96 fwp_participant_this, fwp_participant_mngr);
99 /* receive hello from manager */
100 fwp_mngt_recv(&msg_type, &participant_id, msgb);
101 FWP_DEBUG("Received HELLO msg from nodeid= %d appid= %d\n",
102 participant_id.node_id, participant_id.app_id);
105 /* Process hello msg from manager */
106 fwp_msg_hello_out(msgb->data, &mngr_info);
107 fwp_participant_mngr->id = mngr_info.id;
108 fwp_participant_mngr->stream_id = mngr_info.stream_id;
109 FWP_DEBUG("Received HELLO msg contains nodeid= %d appid= %d\n",
110 mngr_info.id.node_id, mngr_info.id.app_id);
112 /* unbind and delete discovery mngr send endoint */
113 fwp_send_endpoint_unbind(fwp_participant_mngr->epointd);
114 /*fwp_endpoint_free(fwp_participant_mngr->epointd)*/
116 /* Create mngt send endpoint to manager */
117 fwp_send_endpoint_create(fwp_participant_mngr->id.node_id,
118 fwp_participant_mngr->stream_id, 0,
119 &fwp_participant_mngr->epointd);
120 FWP_DEBUG("Management send endpoint created\n");
121 fwp_send_endpoint_bind(fwp_participant_mngr->epointd,
122 fwp_participant_mngr->vresd);
127 fwp_participant_info_t my_info, mngr_info;
128 unsigned int node_id;
131 /* Create fwp_participant_this */
132 my_info.id.node_id = inet_addr("127.0.0.1");
133 my_info.id.app_id = getpid();
134 my_info.stream_id = 0;
136 fwp_participant_this = fwp_participant_create(&my_info);
137 fwp_receive_endpoint_create(0, 0, &fwp_participant_this->epointd);
139 fwp_endpoint_get_params(&(fwp_participant_this->id.node_id),
140 &fwp_participant_this->stream_id,
142 fwp_participant_this->epointd);
144 fwp_endpoint_get_params(&node_id,
145 &fwp_participant_this->stream_id,
147 fwp_participant_this->epointd);
148 FWP_DEBUG("Participant_this created node_id id= %d stream id= %d\n",
149 fwp_participant_this->id.node_id,
150 fwp_participant_this->stream_id);
152 /* Create fwp_participant_mngr */
153 mngr_info.id.node_id = inet_addr("127.0.0.1");
154 /*mngr_info.id.node_id = inet_addr("255.255.255.255");*/
155 mngr_info.id.app_id = getpid();
156 mngr_info.stream_id = FWP_MNGR_STREAM_ID;
158 fwp_participant_mngr = fwp_participant_create(&mngr_info);
160 /* Create discovery endpoint */
161 FWP_DEBUG("Service vres created\n");
162 fwp_mngt_service_vres_create(&fwp_participant_mngr->vresd);
164 FWP_DEBUG("Discovery send endpoint created\n");
165 fwp_send_endpoint_create(fwp_participant_mngr->id.node_id,
166 fwp_participant_mngr->stream_id,
167 0, &fwp_participant_mngr->epointd);
168 fwp_send_endpoint_bind(fwp_participant_mngr->epointd,
169 fwp_participant_mngr->vresd);