]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
FCB initializes executor before registering itself
authorMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 30 Oct 2008 10:20:42 +0000 (11:20 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 30 Oct 2008 10:22:08 +0000 (11:22 +0100)
fres/cbroker/fcb.c

index f6a791aa2a2c6c887bc212df75b63e17b33dc763..5ce2fc8e9d5bffe545a2f304f68879f3016b9bd1 100644 (file)
@@ -341,6 +341,8 @@ int main(int argc, char *argv[])
        forb_orb orb;
        struct fcb fcb_data;
        fres_contract_broker fcb;
+       forb_executor_t executor;
+       int ret;
 
        orb = forb_init(&argc, &argv, "fcb");
        if (!orb) error(1, errno, "FORB initialization failed");
@@ -348,12 +350,22 @@ int main(int argc, char *argv[])
        fcb_resource_init_root_field(&fcb_data);
 
        fcb = forb_fres_contract_broker_new(orb, &impl, &fcb_data);
+       if (!fcb) error(1, errno, "forb_fres_contract_broker_new failed");
 
-       if (forb_register_reference(fcb, fres_contract_broker_reg_name) != 0) {
-               error(1, errno, "forb_register_reference() failed");
-       }
+       /* Prepare executor before we register the fcb reference,
+        * so that no reuqests are lost */
+       ret = forb_executor_init(&executor);
+       if (ret) error(1, errno, "forb_executor_init failed");
+       
+       ret = forb_executor_register_object(&executor, fcb);
+       if (ret) error(1, errno, "forb_executor_register_object failed");
+
+       ret = forb_register_reference(fcb, fres_contract_broker_reg_name);
+       if (ret) error(1, errno, "forb_register_reference() failed");
 
-       forb_execute_object(fcb);
+       ul_logmsg("Waiting for requests\n");
+       ret = forb_executor_run(&executor);
+       if (ret) error(1, errno, "forb_executor_run failed");
        
        return 0;
 }