shill: Add "IO Ready" handler

For output sockets and for non-traditional "input" events we
need to trigger when an fd is ready, but we don't want GLib
to be in charge of the IO itself.  For this, we create a
"ready handler" which triggers a callback which is passed the
file descriptor which is ready.

BUG=chromium-os:21664
TEST=New unit tests

Change-Id: I4960658e6d0940d8db65ae6f77ff09679b3ef96a
Reviewed-on: http://gerrit.chromium.org/gerrit/10327
Reviewed-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
9 files changed
tree: eeb8740a3039b820af0a8fc8ef3339b2e8623c23
  1. dbus_bindings/
  2. accessor_interface.h
  3. adaptor_interfaces.h
  4. byte_string.cc
  5. byte_string.h
  6. byte_string_unittest.cc
  7. cellular.cc
  8. cellular.h
  9. cellular_service.cc
  10. cellular_service.h
  11. cellular_unittest.cc
  12. connection.cc
  13. connection.h
  14. connection_unittest.cc
  15. control_interface.h
  16. crypto_des_cbc.cc
  17. crypto_des_cbc.h
  18. crypto_des_cbc_unittest.cc
  19. crypto_interface.h
  20. crypto_provider.cc
  21. crypto_provider.h
  22. crypto_provider_unittest.cc
  23. crypto_rot47.cc
  24. crypto_rot47.h
  25. crypto_rot47_unittest.cc
  26. dbus_adaptor.cc
  27. dbus_adaptor.h
  28. dbus_adaptor_unittest.cc
  29. dbus_control.cc
  30. dbus_control.h
  31. dbus_properties.cc
  32. dbus_properties.h
  33. dbus_properties_proxy.cc
  34. dbus_properties_proxy.h
  35. dbus_properties_proxy_interface.h
  36. dbus_properties_unittest.cc
  37. default_profile.cc
  38. default_profile.h
  39. default_profile_unittest.cc
  40. device.cc
  41. device.h
  42. device_dbus_adaptor.cc
  43. device_dbus_adaptor.h
  44. device_info.cc
  45. device_info.h
  46. device_info_unittest.cc
  47. device_stub.h
  48. device_unittest.cc
  49. dhcp_config.cc
  50. dhcp_config.h
  51. dhcp_config_unittest.cc
  52. dhcp_provider.cc
  53. dhcp_provider.h
  54. dhcp_provider_unittest.cc
  55. dhcp_proxy_interface.h
  56. dhcpcd_proxy.cc
  57. dhcpcd_proxy.h
  58. endpoint.cc
  59. endpoint.h
  60. ephemeral_profile.cc
  61. ephemeral_profile.h
  62. error.cc
  63. error.h
  64. error_unittest.cc
  65. ethernet.cc
  66. ethernet.h
  67. ethernet_service.cc
  68. ethernet_service.h
  69. event_dispatcher.cc
  70. event_dispatcher.h
  71. glib.cc
  72. glib.h
  73. glib_io_input_handler.cc
  74. glib_io_input_handler.h
  75. glib_io_ready_handler.cc
  76. glib_io_ready_handler.h
  77. HACKING
  78. ieee80211.h
  79. io_handler.h
  80. ip_address.cc
  81. ip_address.h
  82. ip_address_unittest.cc
  83. ipconfig.cc
  84. ipconfig.h
  85. ipconfig_dbus_adaptor.cc
  86. ipconfig_dbus_adaptor.h
  87. ipconfig_unittest.cc
  88. key_file_store.cc
  89. key_file_store.h
  90. key_file_store_unittest.cc
  91. key_value_store.cc
  92. key_value_store.h
  93. LICENSE
  94. Makefile
  95. manager.cc
  96. manager.h
  97. manager_dbus_adaptor.cc
  98. manager_dbus_adaptor.h
  99. manager_unittest.cc
  100. mock_adaptors.cc
  101. mock_adaptors.h
  102. mock_control.cc
  103. mock_control.h
  104. mock_dbus_properties_proxy.cc
  105. mock_dbus_properties_proxy.h
  106. mock_device.cc
  107. mock_device.h
  108. mock_device_info.cc
  109. mock_device_info.h
  110. mock_dhcp_config.cc
  111. mock_dhcp_config.h
  112. mock_dhcp_provider.cc
  113. mock_dhcp_provider.h
  114. mock_dhcp_proxy.cc
  115. mock_dhcp_proxy.h
  116. mock_glib.cc
  117. mock_glib.h
  118. mock_ipconfig.cc
  119. mock_ipconfig.h
  120. mock_manager.cc
  121. mock_manager.h
  122. mock_modem_cdma_proxy.cc
  123. mock_modem_cdma_proxy.h
  124. mock_modem_gsm_card_proxy.cc
  125. mock_modem_gsm_card_proxy.h
  126. mock_modem_gsm_network_proxy.cc
  127. mock_modem_gsm_network_proxy.h
  128. mock_modem_manager_proxy.cc
  129. mock_modem_manager_proxy.h
  130. mock_modem_proxy.cc
  131. mock_modem_proxy.h
  132. mock_modem_simple_proxy.cc
  133. mock_modem_simple_proxy.h
  134. mock_profile.cc
  135. mock_profile.h
  136. mock_property_store.cc
  137. mock_property_store.h
  138. mock_resolver.cc
  139. mock_resolver.h
  140. mock_routing_table.cc
  141. mock_routing_table.h
  142. mock_rtnl_handler.cc
  143. mock_rtnl_handler.h
  144. mock_service.cc
  145. mock_service.h
  146. mock_sockets.cc
  147. mock_sockets.h
  148. mock_store.cc
  149. mock_store.h
  150. mock_supplicant_interface_proxy.cc
  151. mock_supplicant_interface_proxy.h
  152. mock_supplicant_process_proxy.cc
  153. mock_supplicant_process_proxy.h
  154. mock_wifi.cc
  155. mock_wifi.h
  156. modem.cc
  157. modem.h
  158. modem_cdma_proxy.cc
  159. modem_cdma_proxy.h
  160. modem_cdma_proxy_interface.h
  161. modem_gsm_card_proxy.cc
  162. modem_gsm_card_proxy.h
  163. modem_gsm_card_proxy_interface.h
  164. modem_gsm_network_proxy.cc
  165. modem_gsm_network_proxy.h
  166. modem_gsm_network_proxy_interface.h
  167. modem_info.cc
  168. modem_info.h
  169. modem_info_unittest.cc
  170. modem_manager.cc
  171. modem_manager.h
  172. modem_manager_proxy.cc
  173. modem_manager_proxy.h
  174. modem_manager_proxy_interface.h
  175. modem_manager_unittest.cc
  176. modem_proxy.cc
  177. modem_proxy.h
  178. modem_proxy_interface.h
  179. modem_simple_proxy.cc
  180. modem_simple_proxy.h
  181. modem_simple_proxy_interface.h
  182. modem_unittest.cc
  183. nice_mock_control.cc
  184. nice_mock_control.h
  185. profile.cc
  186. profile.h
  187. profile_dbus_adaptor.cc
  188. profile_dbus_adaptor.h
  189. profile_unittest.cc
  190. property_accessor.h
  191. property_accessor_unittest.cc
  192. property_iterator.h
  193. property_store.cc
  194. property_store.h
  195. property_store_unittest.cc
  196. property_store_unittest.h
  197. proxy_factory.cc
  198. proxy_factory.h
  199. refptr_types.h
  200. resolver.cc
  201. resolver.h
  202. resolver_unittest.cc
  203. routing_table.cc
  204. routing_table.h
  205. routing_table_entry.h
  206. routing_table_unittest.cc
  207. rtnl_handler.cc
  208. rtnl_handler.h
  209. rtnl_handler_unittest.cc
  210. rtnl_listener.cc
  211. rtnl_listener.h
  212. rtnl_listener_unittest.cc
  213. rtnl_message.cc
  214. rtnl_message.h
  215. rtnl_message_unittest.cc
  216. service.cc
  217. service.h
  218. service_dbus_adaptor.cc
  219. service_dbus_adaptor.h
  220. service_sorter.h
  221. service_unittest.cc
  222. shill.conf
  223. shill_config.cc
  224. shill_config.h
  225. shill_daemon.cc
  226. shill_daemon.h
  227. shill_main.cc
  228. shill_test_config.cc
  229. shill_test_config.h
  230. shill_unittest.cc
  231. sockets.cc
  232. sockets.h
  233. store_interface.h
  234. supplicant_interface_proxy.cc
  235. supplicant_interface_proxy.h
  236. supplicant_interface_proxy_interface.h
  237. supplicant_process_proxy.cc
  238. supplicant_process_proxy.h
  239. supplicant_process_proxy_interface.h
  240. technology.cc
  241. technology.h
  242. TESTING
  243. testrunner.cc
  244. wifi.cc
  245. wifi.h
  246. wifi_endpoint.cc
  247. wifi_endpoint.h
  248. wifi_endpoint_unittest.cc
  249. wifi_service.cc
  250. wifi_service.h
  251. wifi_service_unittest.cc
  252. wifi_unittest.cc
  253. wpa_supplicant.cc
  254. wpa_supplicant.h