blob: 70fb2de4c02460f970e4db6e7fcd3349e32a03e3 [file] [log] [blame]
// 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.
#ifndef SRC_LEDGER_BIN_APP_SYNC_WATCHER_SET_H_
#define SRC_LEDGER_BIN_APP_SYNC_WATCHER_SET_H_
#include <lib/callback/auto_cleanable.h>
#include "src/ledger/bin/fidl/include/types.h"
#include "src/ledger/bin/sync_coordinator/public/sync_state_watcher.h"
#include "src/lib/fxl/macros.h"
namespace ledger {
class SyncWatcherSet : public sync_coordinator::SyncStateWatcher {
public:
SyncWatcherSet();
~SyncWatcherSet() override;
// Adds a new SyncWatcher.
void AddSyncWatcher(fidl::InterfaceHandle<SyncWatcher> watcher);
// Notify the client watchers of a new state.
void Notify(SyncStateContainer sync_state) override;
private:
class SyncWatcherContainer;
void SendIfPending();
SyncStateContainer current_;
callback::AutoCleanableSet<SyncWatcherContainer> watchers_;
FXL_DISALLOW_COPY_AND_ASSIGN(SyncWatcherSet);
};
} // namespace ledger
#endif // SRC_LEDGER_BIN_APP_SYNC_WATCHER_SET_H_