Chromium Code Reviews| Index: chrome/browser/invalidation/invalidation_logger.h |
| diff --git a/chrome/browser/invalidation/invalidation_logger.h b/chrome/browser/invalidation/invalidation_logger.h |
| index 0d80b9a2b69763c57c522b5d69275d9e6b53bcd1..7b9249842a1c1a1f682f7e366e418e28b8c3fd02 100644 |
| --- a/chrome/browser/invalidation/invalidation_logger.h |
| +++ b/chrome/browser/invalidation/invalidation_logger.h |
| @@ -5,8 +5,10 @@ |
| #ifndef CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |
| #define CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |
| +#include <map> |
| #include "base/memory/scoped_ptr.h" |
| #include "base/observer_list.h" |
| +#include "sync/notifier/invalidation_util.h" |
| #include "sync/notifier/invalidator_state.h" |
| namespace base { |
| @@ -14,38 +16,70 @@ class DictionaryValue; |
| } // namespace base |
| namespace syncer { |
| +class InvalidationHandler; |
| class ObjectIdInvalidationMap; |
| -} |
| +} // namespace syncer |
| namespace invalidation { |
| + |
| class InvalidationLoggerObserver; |
| class InvalidationLogger { |
| + |
| + // This class is in charge of logging invalidation-related information. |
|
James Hawkins
2014/02/19 00:09:51
nit: Class documentation should go just above the
mferreria
2014/02/19 00:45:22
Done.
|
| + // It is used store the state of the InvalidatorService that owns this object |
| + // and then rebroadcast it to observers than can display it accordingly |
| + // (like a debugging page). This class only stores lightweight state, as in |
| + // which services are registered and listening for certain objects, and the |
| + // status of the InvalidatorService (in order not to increase unnecesary |
| + // memory usage). |
| + // |
| + // Observers can be registered and will be called to be notified of any |
| + // status change immediatly. They can log there the history of what messages |
| + // they recieve. |
| + |
| public: |
| + InvalidationLogger(); |
| + ~InvalidationLogger(); |
| + |
| // Pass through to any registered InvalidationLoggerObservers. |
| // We will do local logging here too. |
| void OnRegistration(const base::DictionaryValue& details); |
| void OnUnregistration(const base::DictionaryValue& details); |
| - void OnStateChange(const syncer::InvalidatorState& newState); |
| - void OnUpdateIds(const base::DictionaryValue& details); |
| + void OnStateChange(const syncer::InvalidatorState& new_state); |
| + void OnUpdateIds(std::map<std::string, syncer::ObjectIdSet> updated_ids); |
| void OnDebugMessage(const base::DictionaryValue& details); |
| void OnInvalidation(const syncer::ObjectIdInvalidationMap& details); |
| + // Triggers messages to be sent to the Observers to provide them with |
| + // the current state of the logging. |
| void EmitContent(); |
| - InvalidationLogger(); |
| - ~InvalidationLogger(); |
| - |
| - void RegisterForDebug(InvalidationLoggerObserver* debug_observer); |
| - void UnregisterForDebug(InvalidationLoggerObserver* debug_observer); |
| + // Add and remove observers listening for messages. |
| + void RegisterObserver(InvalidationLoggerObserver* debug_observer); |
|
James Hawkins
2014/02/19 00:09:51
I'm still not sure why this is better than just ex
mferreria
2014/02/19 00:45:22
Added a function isObserverRegistered that exposes
|
| + void UnregisterObserver(InvalidationLoggerObserver* debug_observer); |
| private: |
| + // Send to every Observer a OnStateChange event with the latest state. |
| void EmitState(); |
| + |
| + // Send to every Observer many OnUpdateIds events, each with one registrar |
| + // and every objectId it currently has registered. |
| + void EmitUpdatedIds(); |
| + |
| // The list of every observer currently listening for notifications. |
| ObserverList<InvalidationLoggerObserver> observer_list_; |
| + |
| // The last InvalidatorState updated by the InvalidatorService. |
| syncer::InvalidatorState last_invalidator_state_; |
| + |
| + // The map that contains every object id that is currently registered |
| + // and its owner. |
| + std::map<std::string, syncer::ObjectIdSet> latest_ids_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(InvalidationLogger); |
| }; |
| } // namespace invalidation |
| + |
| #endif // CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |