// Copyright 2014 The Chromium OS 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 PEERD_PEER_MANAGER_INTERFACE_H_ #define PEERD_PEER_MANAGER_INTERFACE_H_ #include #include #include "peerd/service.h" #include "peerd/technologies.h" namespace peerd { class PeerManagerInterface { public: virtual ~PeerManagerInterface() = default; // Add or update a peer with the given information. If the same peer // is discovered on multiple technologies, the most recent information // (according to |last_seen|) is maintained. We continue exposing // a peer until all technologies remove it. virtual void OnPeerDiscovered(const std::string& peer_id, const base::Time& last_seen, technologies::Technology technology) = 0; // Adds or updates service for peer with |peer_id|. Corresponding // peer's last time seen is set to max(|last_seen|, |peer.last_seen|). // If the same service is seen on multiple technologies, the most recent // update (according to |last_seen|) is maintained. virtual void OnServiceDiscovered(const std::string& peer_id, const std::string& service_id, const Service::ServiceInfo& info, const Service::IpAddresses& addresses, const base::Time& last_seen, technologies::Technology technology) = 0; // Signals that the peer corresponding to |peer_id| is gone. // Removes knowledge of the peer and knowledge of services exposed by the peer // discovered via this technology. Note that we continue to believe peers // and their services exist until all technologies agree that a peer is gone. virtual void OnPeerRemoved(const std::string& peer_id, technologies::Technology technology) = 0; // Signals that the service corresponding to |service_id| has been removed // from the peer corresponding to |peer_id| according to |technology|. // Note that we continue exposing a service until all technologies remove it. virtual void OnServiceRemoved(const std::string& peer_id, const std::string& service_id, technologies::Technology technology) = 0; // Remove all services and peers discovered by this technology. Equivalent // to calling OnPeerRemoved() for all peers discovered via |technology|. virtual void OnTechnologyShutdown(technologies::Technology technology) = 0; }; } // namespace peerd #endif // PEERD_PEER_MANAGER_INTERFACE_H_