| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.cobalt; |
| |
| /// The Controller is primarily useful for testing the Cobalt service. |
| /// Cobalt clients should use the Logger. |
| [Discoverable] |
| protocol Controller { |
| /// Requests that the collection of Observations that are currently cached |
| /// locally be sent to the Cobalt server soon. Cobalt will send the |
| /// Observations in one or more batches and will retry several times upon |
| /// failure. The response occurs only after that procedure is completed. A |
| /// return value of true indicates that all Observations were successfully |
| /// sent. A return value of false indicates otherwise. |
| RequestSendSoon() -> (bool success); |
| |
| /// The Cobalt FIDL service will block, not processing any further FIDL |
| /// requests or responses, on either this interface or the Logger interface, |
| /// until either `max_wait_seconds` have elapsed or the Cobalt service's |
| /// worker thread has successfully sent all previously added Observations to |
| /// the Shuffler. The response will be returned after the blocking period has |
| /// ended. Note that this method does not request an expedited send and so it |
| /// is possible that the worker thread is currently waiting for the next |
| /// scheduled send time and so the empty state will not be achieved prior |
| /// that time. |
| BlockUntilEmpty(uint32 max_wait_seconds) -> (); |
| |
| /// These diagnostic stats are mostly useful in a testing environment but |
| /// may possibly prove useful in production also. |
| GetNumSendAttempts() -> (uint32 num); |
| GetFailedSendAttempts() -> (uint32 num); |
| GetNumObservationsAdded() -> (uint64 num_obs); |
| GetNumEventAggregatorRuns() -> (uint64 num_runs); |
| |
| /// Triggers Cobalt to generate Observations based on locally aggregated |
| /// event data and write them to the local ObservationStore. In a non-test |
| /// environment this would normally be done periodically by a background |
| /// thread. In a test environment this method should be invoked against an |
| /// instance of the Cobalt FIDL service that was passed the flag |
| /// --start_event_aggregator_worker=false. |
| /// |
| /// `day_index` The index of the day for which locally aggregated |
| /// Observations should be generated. |
| /// |
| /// `report_ids` A vector of report IDs. |
| /// |
| /// Returns a vector whose k-th element is the number of observations |
| /// generated for the k-th element of `report_ids`. If `report_ids` |
| /// is the empty vector, then an empty vector is returned. |
| GenerateAggregatedObservations(uint32 day_index, vector<uint32>:MAX report_ids) |
| -> (vector<uint64>:MAX num_obs); |
| }; |