shill: create EventHistory class

Refactor deque<Timestamp> members from Service into a separate
EventHistory class that stores a monotonically increasing list of
timestamps represent the occurence of one or more events. This class
allows the number of event timestamps stored in the object at once to
be limited and stale event timestamps to be evicted. All timestamp
eviction is done in FIFO order.

BUG=chrome-os-partner:35518
TEST=Compile shill and run unit tests.

Change-Id: Ie53676c30444c2e2c60f39238f435968d68017fc
Reviewed-on: https://chromium-review.googlesource.com/242081
Tested-by: Samuel Tan <samueltan@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Samuel Tan <samueltan@chromium.org>
7 files changed
tree: 1558943f30c4936f3abd1155602a7227565948a4
  1. bin/
  2. cellular/
  3. dbus_bindings/
  4. doc/
  5. ethernet/
  6. init/
  7. mobile_operator_db/
  8. net/
  9. shims/
  10. supplicant/
  11. test-scripts/
  12. udev/
  13. upstart/
  14. vpn/
  15. wifi/
  16. wimax/
  17. .gitignore
  18. accessor_interface.h
  19. adaptor_interfaces.h
  20. arp_client.cc
  21. arp_client.h
  22. arp_client_test_helper.cc
  23. arp_client_test_helper.h
  24. arp_client_unittest.cc
  25. arp_packet.cc
  26. arp_packet.h
  27. arp_packet_unittest.cc
  28. async_connection.cc
  29. async_connection.h
  30. async_connection_unittest.cc
  31. callbacks.h
  32. certificate_file.cc
  33. certificate_file.h
  34. certificate_file_unittest.cc
  35. connection.cc
  36. connection.h
  37. connection_health_checker.cc
  38. connection_health_checker.h
  39. connection_health_checker_unittest.cc
  40. connection_info.cc
  41. connection_info.h
  42. connection_info_reader.cc
  43. connection_info_reader.h
  44. connection_info_reader_unittest.cc
  45. connection_info_unittest.cc
  46. connection_tester.cc
  47. connection_tester.h
  48. connection_tester_unittest.cc
  49. connection_unittest.cc
  50. connectivity_trial.cc
  51. connectivity_trial.h
  52. connectivity_trial_unittest.cc
  53. control_interface.h
  54. crypto_des_cbc.cc
  55. crypto_des_cbc.h
  56. crypto_des_cbc_unittest.cc
  57. crypto_interface.h
  58. crypto_provider.cc
  59. crypto_provider.h
  60. crypto_provider_unittest.cc
  61. crypto_rot47.cc
  62. crypto_rot47.h
  63. crypto_rot47_unittest.cc
  64. crypto_util_proxy.cc
  65. crypto_util_proxy.h
  66. crypto_util_proxy_unittest.cc
  67. dbus_adaptor.cc
  68. dbus_adaptor.h
  69. dbus_adaptor_unittest.cc
  70. dbus_async_call_helper.h
  71. dbus_control.cc
  72. dbus_control.h
  73. dbus_manager.cc
  74. dbus_manager.h
  75. dbus_manager_unittest.cc
  76. dbus_name_watcher.cc
  77. dbus_name_watcher.h
  78. dbus_name_watcher_unittest.cc
  79. dbus_properties.cc
  80. dbus_properties.h
  81. dbus_properties_proxy.cc
  82. dbus_properties_proxy.h
  83. dbus_properties_proxy_interface.h
  84. dbus_properties_unittest.cc
  85. dbus_property_matchers.h
  86. dbus_service_proxy.cc
  87. dbus_service_proxy.h
  88. dbus_service_proxy_interface.h
  89. dbus_variant_gmock_printer.cc
  90. dbus_variant_gmock_printer.h
  91. default_profile.cc
  92. default_profile.h
  93. default_profile_unittest.cc
  94. device.cc
  95. device.h
  96. device_claimer.cc
  97. device_claimer.h
  98. device_claimer_unittest.cc
  99. device_dbus_adaptor.cc
  100. device_dbus_adaptor.h
  101. device_info.cc
  102. device_info.h
  103. device_info_unittest.cc
  104. device_stub.h
  105. device_unittest.cc
  106. dhcp_config.cc
  107. dhcp_config.h
  108. dhcp_config_unittest.cc
  109. dhcp_provider.cc
  110. dhcp_provider.h
  111. dhcp_provider_unittest.cc
  112. dhcp_proxy_interface.h
  113. dhcpcd_proxy.cc
  114. dhcpcd_proxy.h
  115. diagnostics_reporter.cc
  116. diagnostics_reporter.h
  117. diagnostics_reporter_unittest.cc
  118. dns_client.cc
  119. dns_client.h
  120. dns_client_factory.cc
  121. dns_client_factory.h
  122. dns_client_unittest.cc
  123. dns_server_tester.cc
  124. dns_server_tester.h
  125. dns_server_tester_unittest.cc
  126. eap_credentials.cc
  127. eap_credentials.h
  128. eap_credentials_unittest.cc
  129. eap_listener.cc
  130. eap_listener.h
  131. eap_listener_unittest.cc
  132. eap_protocol.h
  133. endpoint.cc
  134. endpoint.h
  135. ephemeral_profile.cc
  136. ephemeral_profile.h
  137. error.cc
  138. error.h
  139. error_unittest.cc
  140. event_dispatcher.cc
  141. event_dispatcher.h
  142. external_task.cc
  143. external_task.h
  144. external_task_unittest.cc
  145. file_io.cc
  146. file_io.h
  147. file_reader.cc
  148. file_reader.h
  149. file_reader_unittest.cc
  150. geolocation_info.cc
  151. geolocation_info.h
  152. glib.cc
  153. glib.h
  154. glib_io_handler_factory.cc
  155. glib_io_handler_factory.h
  156. glib_io_input_handler.cc
  157. glib_io_input_handler.h
  158. glib_io_ready_handler.cc
  159. glib_io_ready_handler.h
  160. HACKING
  161. hook_table.cc
  162. hook_table.h
  163. hook_table_unittest.cc
  164. http_proxy.cc
  165. http_proxy.h
  166. http_proxy_unittest.cc
  167. http_request.cc
  168. http_request.h
  169. http_request_unittest.cc
  170. http_url.cc
  171. http_url.h
  172. http_url_unittest.cc
  173. icmp.cc
  174. icmp.h
  175. icmp_unittest.cc
  176. ip_address_store.cc
  177. ip_address_store.h
  178. ip_address_store_unittest.cc
  179. ipconfig.cc
  180. ipconfig.h
  181. ipconfig_dbus_adaptor.cc
  182. ipconfig_dbus_adaptor.h
  183. ipconfig_unittest.cc
  184. key_file_store.cc
  185. key_file_store.h
  186. key_file_store_unittest.cc
  187. key_value_store.cc
  188. key_value_store.h
  189. key_value_store_unittest.cc
  190. link_monitor.cc
  191. link_monitor.h
  192. link_monitor_unittest.cc
  193. logging.cc
  194. logging.h
  195. manager.cc
  196. manager.h
  197. manager_dbus_adaptor.cc
  198. manager_dbus_adaptor.h
  199. manager_unittest.cc
  200. metrics.cc
  201. metrics.h
  202. metrics_unittest.cc
  203. mock_adaptors.cc
  204. mock_adaptors.h
  205. mock_ares.cc
  206. mock_ares.h
  207. mock_arp_client.cc
  208. mock_arp_client.h
  209. mock_async_connection.cc
  210. mock_async_connection.h
  211. mock_certificate_file.cc
  212. mock_certificate_file.h
  213. mock_connection.cc
  214. mock_connection.h
  215. mock_connection_health_checker.cc
  216. mock_connection_health_checker.h
  217. mock_connection_info_reader.cc
  218. mock_connection_info_reader.h
  219. mock_connectivity_trial.cc
  220. mock_connectivity_trial.h
  221. mock_control.cc
  222. mock_control.h
  223. mock_crypto_util_proxy.cc
  224. mock_crypto_util_proxy.h
  225. mock_dbus_manager.cc
  226. mock_dbus_manager.h
  227. mock_dbus_properties_proxy.cc
  228. mock_dbus_properties_proxy.h
  229. mock_dbus_service_proxy.cc
  230. mock_dbus_service_proxy.h
  231. mock_device.cc
  232. mock_device.h
  233. mock_device_claimer.cc
  234. mock_device_claimer.h
  235. mock_device_info.cc
  236. mock_device_info.h
  237. mock_dhcp_config.cc
  238. mock_dhcp_config.h
  239. mock_dhcp_provider.cc
  240. mock_dhcp_provider.h
  241. mock_dhcp_proxy.cc
  242. mock_dhcp_proxy.h
  243. mock_diagnostics_reporter.cc
  244. mock_diagnostics_reporter.h
  245. mock_dns_client.cc
  246. mock_dns_client.h
  247. mock_dns_client_factory.cc
  248. mock_dns_client_factory.h
  249. mock_dns_server_tester.cc
  250. mock_dns_server_tester.h
  251. mock_eap_credentials.cc
  252. mock_eap_credentials.h
  253. mock_eap_listener.cc
  254. mock_eap_listener.h
  255. mock_event_dispatcher.cc
  256. mock_event_dispatcher.h
  257. mock_external_task.cc
  258. mock_external_task.h
  259. mock_file_io.h
  260. mock_glib.cc
  261. mock_glib.h
  262. mock_http_request.cc
  263. mock_http_request.h
  264. mock_ip_address_store.cc
  265. mock_ip_address_store.h
  266. mock_ipconfig.cc
  267. mock_ipconfig.h
  268. mock_link_monitor.cc
  269. mock_link_monitor.h
  270. mock_log.cc
  271. mock_log.h
  272. mock_log_unittest.cc
  273. mock_manager.cc
  274. mock_manager.h
  275. mock_metrics.cc
  276. mock_metrics.h
  277. mock_passive_link_monitor.cc
  278. mock_passive_link_monitor.h
  279. mock_pending_activation_store.cc
  280. mock_pending_activation_store.h
  281. mock_portal_detector.cc
  282. mock_portal_detector.h
  283. mock_power_manager.cc
  284. mock_power_manager.h
  285. mock_power_manager_proxy.cc
  286. mock_power_manager_proxy.h
  287. mock_ppp_device.cc
  288. mock_ppp_device.h
  289. mock_ppp_device_factory.cc
  290. mock_ppp_device_factory.h
  291. mock_process_killer.cc
  292. mock_process_killer.h
  293. mock_profile.cc
  294. mock_profile.h
  295. mock_property_store.cc
  296. mock_property_store.h
  297. mock_proxy_factory.cc
  298. mock_proxy_factory.h
  299. mock_resolver.cc
  300. mock_resolver.h
  301. mock_routing_table.cc
  302. mock_routing_table.h
  303. mock_service.cc
  304. mock_service.h
  305. mock_socket_info_reader.cc
  306. mock_socket_info_reader.h
  307. mock_store.cc
  308. mock_store.h
  309. mock_traffic_monitor.cc
  310. mock_traffic_monitor.h
  311. mock_virtual_device.cc
  312. mock_virtual_device.h
  313. NETLINK_MESSAGES.txt
  314. nice_mock_control.cc
  315. nice_mock_control.h
  316. OWNERS
  317. passive_link_monitor.cc
  318. passive_link_monitor.h
  319. passive_link_monitor_unittest.cc
  320. pending_activation_store.cc
  321. pending_activation_store.h
  322. pending_activation_store_unittest.cc
  323. portal_detector.cc
  324. portal_detector.h
  325. portal_detector_unittest.cc
  326. power_manager.cc
  327. power_manager.h
  328. power_manager_proxy.cc
  329. power_manager_proxy.h
  330. power_manager_proxy_interface.h
  331. power_manager_unittest.cc
  332. ppp_daemon.cc
  333. ppp_daemon.h
  334. ppp_daemon_unittest.cc
  335. ppp_device.cc
  336. ppp_device.h
  337. ppp_device_factory.cc
  338. ppp_device_factory.h
  339. ppp_device_unittest.cc
  340. process_killer.cc
  341. process_killer.h
  342. process_killer_unittest.cc
  343. profile.cc
  344. profile.h
  345. profile_dbus_adaptor.cc
  346. profile_dbus_adaptor.h
  347. profile_dbus_property_exporter.cc
  348. profile_dbus_property_exporter.h
  349. profile_dbus_property_exporter_unittest.cc
  350. profile_unittest.cc
  351. property_accessor.h
  352. property_accessor_unittest.cc
  353. property_iterator.h
  354. property_observer.h
  355. property_observer_interface.h
  356. property_observer_unittest.cc
  357. property_store.cc
  358. property_store.h
  359. property_store_unittest.cc
  360. property_store_unittest.h
  361. protobuf_lite_streams.cc
  362. protobuf_lite_streams.h
  363. provider_db_unittest.bfd
  364. provider_interface.h
  365. proxy_factory.cc
  366. proxy_factory.h
  367. refptr_types.h
  368. resolver.cc
  369. resolver.h
  370. resolver_unittest.cc
  371. result_aggregator.cc
  372. result_aggregator.h
  373. result_aggregator_unittest.cc
  374. routing_table.cc
  375. routing_table.h
  376. routing_table_entry.h
  377. routing_table_unittest.cc
  378. rpc_task.cc
  379. rpc_task.h
  380. rpc_task_dbus_adaptor.cc
  381. rpc_task_dbus_adaptor.h
  382. rpc_task_unittest.cc
  383. scope_logger.cc
  384. scope_logger.h
  385. scope_logger_unittest.cc
  386. scoped_umask.cc
  387. scoped_umask.h
  388. service.cc
  389. service.h
  390. service_dbus_adaptor.cc
  391. service_dbus_adaptor.h
  392. service_property_change_notifier.cc
  393. service_property_change_notifier.h
  394. service_property_change_test.cc
  395. service_property_change_test.h
  396. service_sorter.h
  397. service_under_test.cc
  398. service_under_test.h
  399. service_unittest.cc
  400. shared_dbus_connection.cc
  401. shared_dbus_connection.h
  402. shill.gyp
  403. shill.gypi
  404. shill_ares.cc
  405. shill_ares.h
  406. shill_config.cc
  407. shill_config.h
  408. shill_daemon.cc
  409. shill_daemon.h
  410. shill_export.h
  411. shill_main.cc
  412. shill_test_config.cc
  413. shill_test_config.h
  414. shill_unittest.cc
  415. socket_info.cc
  416. socket_info.h
  417. socket_info_reader.cc
  418. socket_info_reader.h
  419. socket_info_reader_unittest.cc
  420. socket_info_unittest.cc
  421. static_ip_parameters.cc
  422. static_ip_parameters.h
  423. static_ip_parameters_unittest.cc
  424. store_interface.h
  425. stub_storage.h
  426. technology.cc
  427. technology.h
  428. technology_unittest.cc
  429. TESTING
  430. testing.h
  431. testrunner.cc
  432. tethering.cc
  433. tethering.h
  434. traffic_monitor.cc
  435. traffic_monitor.h
  436. traffic_monitor_unittest.cc
  437. virtual_device.cc
  438. virtual_device.h
  439. virtual_device_unittest.cc