ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年10月26日 星期三

SocketListener, FrameworkListener & CommandListener

SocketListener | FrameworkListener | CommandListener Vold, Netd 各自implement 自己的 CommandListener.
filename 還都叫一樣的 CommandListener.cpp,h
但是在不同的 project (bin) ,所以同名沒關係。
像 interface 的東西.. FrameworkCommand | VoldCommand | DumpCmd, VolumeCmd, ShareCmd, AsecCmd, ObbCmd, StorageCmd, XwarpCmd
一樣,從 netd 來看
FrameworkCommand | NetdCommand | UsbCmd, SoftapCmd, InterfaceCmd, IpFwdCmd, TetherCmd, NatCmd, ListTtysCmd, PppdCmd, PanCmd 很有趣的是...這裡,各自 implement VoldCommand, NetCommand,結果內容是完全一樣的....
為甚摩不省略這一層,直接 繼承 FrameworkCommand 就好?


還有用到 Netlink SocketListener | NetlinkListener | NetlinkHandler 也是一樣,vold, netd 各自 implement 自己的 NetlinkHandler
這要的flow 寫在 SocketListener.
thread create, thread start,thread run.
runListener while(1) { FD_SET select( ) if( FD_IISSET( ) { c = accept( ) } do { for( i = clients->begin ~ end) { if(FD_ISSET(client(fd))) onDataAvailable(i) 就是標準的 FD_SET, select 動作,當有monitor 到 fd 變更,在一一check client 的 fd,把對應的 client 的 onDataAvailable( ) 執行一次

沒有留言:

標籤

網誌存檔