bool opt_daemon = false;
char *opt_pidfile = NULL;
- forb_orb wifi_orb;
+ forb_executor_t executor;
+ fres_resource_manager frm_ret;
+ struct frm_data frm_data;
+
wifi_agent_idl wai;
struct intern_data intern_data;
orb = forb_init(&argc, &argv, &attr);
if (!orb) error(1, errno, "forb_init");
-
- wifi_orb = forb_init(&argc, &argv, NULL);
- if (!wifi_orb) error(1, errno, "forb_init");
/* Cration of an object implementing myinterface */
- wai = forb_wifi_agent_idl_new(wifi_orb, &wifi_impl, &intern_data);
+ wai = forb_wifi_agent_idl_new(orb, &wifi_impl, &intern_data);
/* We can register our object under a name, so that other
* processes can use it. */
/* Initialize head of linked list */
ap_list_init_head(&priv.list_head);
+
+ //create executor and register 2 interfaces
+ ret = forb_executor_init(&executor);
+ if (ret) goto error;
+
+ //1. interface - forb_execute_object(wai); execute
+ ret = forb_executor_register_object(&executor, wai);
+ if (ret) goto destroy_and_error;
- /* Process incomming requests to this object */
- forb_execute_object(wai);
+ ret = forb_signal_server_ready(orb);
+ if (ret) goto destroy_and_error;
- //TODO: handle 2 parallel executions? (forb_execute_object <-> frm_register_and_run)
+ //2. interface - frm_register_and_run(orb, &frm); execute
+ fres_block_register_fwp();
- fres_block_register_fwp();
- ret = frm_register_and_run(orb, &frm);
+ frm_ret = frm_register(orb, &frm_data, &executor, &frm);
+ if (!frm_ret) {
+ ret = -1;
+ goto destroy_and_error;
+ }
+
+ forb_daemon_ready();
+
+ ret = forb_executor_run(&executor);
- if (ret != 0) {
- error(1, errno, "frm_generic_run");
- }
+destroy_and_error:
+ forb_executor_destroy(&executor);
+error:
+ error(1, errno, "frm_generic_run");
return 0;
}
+++ /dev/null
-/*
- * This file was generated by forb-idl - DO NOT EDIT!
- */
-
-#include "wifi_conditions_interface.h"
-#include <forb/cdr.h>
-#include <forb/object.h>
-
-CORBA_boolean struct_t_serialize(FORB_CDR_Codec *codec, const struct_t *ptr)
-{
- if (!CORBA_long_serialize(codec, &ptr->rate)) goto ser_exception;
- if (!CORBA_string_serialize(codec, &ptr->client_mac_ddr)) goto ser_exception;
- return CORBA_TRUE;
-ser_exception:
- return CORBA_FALSE;
-}
-
-CORBA_boolean struct_t_deserialize(FORB_CDR_Codec *codec, struct_t *ptr)
-{
- if (!CORBA_long_deserialize(codec, &ptr->rate)) goto ser_exception;
- if (!CORBA_string_deserialize(codec, &ptr->client_mac_ddr)) goto ser_exception;
- return CORBA_TRUE;
-ser_exception:
- return CORBA_FALSE;
-}
-
+++ /dev/null
-/*
- * This file was generated by forb-idl - DO NOT EDIT!
- */
-
-#include "wifi_conditions_interface.h"
-
-#include <forb/cdr.h>
-#include <forb/forb-internal.h>
-#include <forb/object.h>
-
-#define _wifi_conditions_interface_impl(obj) ((struct forb_wifi_conditions_interface_impl*)(obj)->implementation)
-
-static const struct forb_interface wifi_conditions_interface_interface;
-
-static void
-forb_skel_wifi_conditions_interface_add(FORB_CDR_Codec *cin, FORB_CDR_Codec *cout, wifi_conditions_interface _obj, struct forb_env *env)
-{
- if (_wifi_conditions_interface_impl(_obj) && _wifi_conditions_interface_impl(_obj)->add) {
- CORBA_long rate;
- CORBA_string client_mac_addr;
- CORBA_long _forb_ret;
- if (!CORBA_long_deserialize(cin, &rate)) {
- env->major = FORB_EX_MARSHAL; goto exception;
- }
- if (!CORBA_string_deserialize(cin, &client_mac_addr)) {
- env->major = FORB_EX_MARSHAL; goto exception;
- }
- _forb_ret = _wifi_conditions_interface_impl(_obj)->add(_obj, rate, client_mac_addr, env);
- if (forb_exception_occurred(env)) goto exception;
- CORBA_long_serialize(cout, &_forb_ret);
-exception:;
- forb_free(client_mac_addr);
- } else {
- env->major = FORB_EX_NO_IMPLEMENT;
- }
-}
-
-static void
-forb_skel_wifi_conditions_interface_get_last(FORB_CDR_Codec *cin, FORB_CDR_Codec *cout, wifi_conditions_interface _obj, struct forb_env *env)
-{
- if (_wifi_conditions_interface_impl(_obj) && _wifi_conditions_interface_impl(_obj)->get_last) {
- CORBA_long rate;
- CORBA_string client_mac_addr;
- _wifi_conditions_interface_impl(_obj)->get_last(_obj, &rate, &client_mac_addr, env);
- if (forb_exception_occurred(env)) goto exception;
- CORBA_long_serialize(cout, &rate);
- CORBA_string_serialize(cout, &client_mac_addr);
-exception:;
- forb_free(client_mac_addr);
- } else {
- env->major = FORB_EX_NO_IMPLEMENT;
- }
-}
-
-static const forb_skel_func wifi_conditions_interface_skeletons[2] = {
- forb_skel_wifi_conditions_interface_add,
- forb_skel_wifi_conditions_interface_get_last,
-};
-
-static const struct forb_interface wifi_conditions_interface_interface = {
- .name = "wifi_conditions_interface",
- .num_methods = 2,
- .skeletons = wifi_conditions_interface_skeletons,
- .type_hash = 0 /* not implemented */
-};
-
-wifi_conditions_interface forb_wifi_conditions_interface_new(forb_orb orb, const struct forb_wifi_conditions_interface_impl *impl,void *instance_data)
-{
- wifi_conditions_interface obj = forb_object_new(orb, NULL, 0);
- if (obj) {
- obj->instance_data = instance_data;
- obj->implementation = impl;
- obj->interface = &wifi_conditions_interface_interface;
- }
- return obj;
-}
-
-
+++ /dev/null
-/*
- * This file was generated by forb-idl - DO NOT EDIT!
- */
-
-#ifndef wifi_conditions_interface_H
-#define wifi_conditions_interface_H 1
-#define FORB_IDL_SERIAL 0
-#include <forb/cdr_codec.h>
-#include <forb/object_type.h>
-#include <forb/basic_types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/** typedefs **/
-#if !defined(_struct_t_defined)
-#define _struct_t_defined 1
-typedef struct struct_t_type struct_t;
-struct struct_t_type {
-CORBA_long rate;
-CORBA_string client_mac_ddr;
-};
-CORBA_boolean struct_t_serialize(FORB_CDR_Codec *codec, const struct_t *ptr);
-CORBA_boolean struct_t_deserialize(FORB_CDR_Codec *codec, struct_t *ptr);
-#endif
-
-#if !defined(FORB_DECL_wifi_conditions_interface)
-#define FORB_DECL_wifi_conditions_interface 1
- #if !defined(_wifi_conditions_interface_defined)
- #define _wifi_conditions_interface_defined 1
- typedef forb_object wifi_conditions_interface;
- #endif
- #define wifi_conditions_interface_serialize(codec, obj) forb_object_serialize((codec), (obj))
- #define wifi_conditions_interface_deserialize(codec, obj) forb_object_deserialize((codec), (obj))
-struct forb_wifi_conditions_interface_impl {
- CORBA_long (*add)(wifi_conditions_interface _obj, const CORBA_long rate, const CORBA_char * client_mac_addr, CORBA_Environment *ev);
- void (*get_last)(wifi_conditions_interface _obj, CORBA_long* rate, CORBA_string* client_mac_addr, CORBA_Environment *ev);
-};
-
- wifi_conditions_interface forb_wifi_conditions_interface_new(forb_orb orb,
- const struct forb_wifi_conditions_interface_impl *impl,
- void *instance_data);
-
-#endif
-
-
-/** stub prototypes **/
-CORBA_long wifi_conditions_interface_add(wifi_conditions_interface _obj, const CORBA_long rate, const CORBA_char * client_mac_addr, CORBA_Environment *ev);
-void wifi_conditions_interface_get_last(wifi_conditions_interface _obj, CORBA_long* rate, CORBA_string* client_mac_addr, CORBA_Environment *ev);
-
-/** Method indices */
-
-#ifndef __wifi_conditions_interface__method_indices
-#define __wifi_conditions_interface__method_indices
-typedef enum {
- wifi_conditions_interface_add__method_index,
- wifi_conditions_interface_get_last__method_index
-} wifi_conditions_interface__method_indices;
-#endif /* __wifi_conditions_interface__method_indices */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-#undef FORB_IDL_SERIAL
bin_PROGRAMS = wifi_agent
-wifi_agent_SOURCES = wifi_agent.c #wifi_agent_idl-stubs.c wifi_agent_idl-common.c
+wifi_agent_SOURCES = wifi_agent.c
-include_HEADERS = nl80211.h #wifi_agent_idl.h
+include_HEADERS = nl80211.h
lib_LOADLIBES += forb fosa pthread rt ulut
PKG_CONFIG ?= pkg-config
endif
LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
-#lib_LOADLIBES += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
wifi_agent_CLIENT_IDL = wifi_agent_idl.idl