天天看点

MeeGo 中间件(middleware) 通信服务 之(一) 连接管理

            meego 中间件(middleware) 通信服务 之(一)连接管理

MeeGo 中间件(middleware) 通信服务 之(一) 连接管理

meego通信服务子系统主要向平台提供声音和数据通信,提供了用于管理无线服务、网络语音服务、数据通信的api,面向的技术包括3g、wifi、wimax以及蓝牙。

连接管理(connman)

connman给运行linux操作系统的设备提供一个守护进程,该进程用于管理网络连接。connman使系统模块化,使得系统网络模块易于扩展,3g,wifi,wimax以及蓝牙连接等很容易被添加到系统中去。网络可以通过dhcp进行配置,同时,应用程序也支持域名解析功能,而且还提供了航班模式。

connman比较小巧,占用资源少,可以很方便的被集成。对于一个模块化系统来说,有线和无线服务可以以插件的形式添加到系统。

MeeGo 中间件(middleware) 通信服务 之(一) 连接管理

上图中,main loop相当于一个消息循环,相关用法请参考glib的main loop资料.

下面贴出来的是connman的部分源代码

__connman_dbus_init(conn);

__connman_storage_init();

__connman_element_init(option_device, option_nodevice);

__connman_agent_init();

__connman_tethering_init();

__connman_counter_init();

__connman_ondemand_init();

__connman_manager_init(option_compat);

__connman_profile_init();

__connman_config_init();

__connman_resolver_init();

__connman_ipconfig_init();

__connman_rtnl_init();

__connman_udev_init();

__connman_task_init();

__connman_session_init();

__connman_timeserver_init();

__connman_plugin_init(option_plugin, option_noplugin);

__connman_element_start();

g_free(option_device);

g_free(option_plugin);

g_free(option_nodevice);

g_free(option_noplugin);

memset(&sa, 0, sizeof(sa));

sa.sa_handler = sig_term;

sigaction(sigint, &sa, null);

sigaction(sigterm, &sa, null);

g_main_loop_run(main_loop);

connman是基于dbus和glib库来实现的.

这些__connman_xxx_init函数是connman的核心,它们创建了一系列的哈希表和链表,例如服务server_list, driver_list.

这也就是为什么connman可以使meego系统模块化的原因.通过plugin的形式,将模块加入到系统中,就是通过这些链表和哈希表对设备包括设备信息设备驱动进行管理,这也是connman连接管理的作用.

版权申明:

转载文章请注明原文出处http://blog.csdn.net/feiyinzilgd/archive/2010/09/06/5866436.aspx

并请联系谭海燕本人或者前往谭海燕个人主页留言

继续阅读