閱讀119 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MeeGo 中間件(middleware) 通信服務 之(一) 連接管理

            MeeGo 中間件(middleware) 通信服務 之(一)連接管理

 


       

 

MeeGo通信服務子係統主要向平台提供聲音和數據通信,提供了用於管理無線服務、網絡語音服務、數據通信的API,麵向的技術包括3G、wifi、WiMax以及藍牙。

 

連接管理(Connman)

ConnMan給運行linux操作係統的設備提供一個守護進程,該進程用於管理網絡連接。ConnMan使係統模塊化,使得係統網絡模塊易於擴展,3G,wifi,WiMax以及藍牙連接等很容易被添加到係統中去。網絡可以通過DHCP進行配置,同時,應用程序也支持域名解析功能,而且還提供了航班模式。

ConnMan比較小巧,占用資源少,可以很方便的被集成。對於一個模塊化係統來說,有線和無線服務可以以插件的形式添加到係統。

 

 

上圖中,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連接管理的作用.

 

 


版權申明:
轉載文章請注明原文出處https://blog.csdn.net/feiyinzilgd/archive/2010/09/06/5866436.aspx

並請聯係譚海燕本人或者前往譚海燕個人主頁留言

最後更新:2017-04-02 06:51:24

  上一篇:go 深入理解可重入與線程安全
  下一篇:go Findstr 命令