| // 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_SERVICE_PUBLISHER_INTERFACE_H_ |
| #define PEERD_SERVICE_PUBLISHER_INTERFACE_H_ |
| |
| #include <string> |
| |
| #include <chromeos/errors/error.h> |
| |
| #include "peerd/service.h" |
| |
| namespace peerd { |
| |
| class ServicePublisherInterface { |
| public: |
| // Should be called with each service we want to advertise over this |
| // publisher. Returns true if adding the service to the publisher |
| // succeeded and false on error. Note that while publishers |
| // should make best efforts to inform peers of service changes in |
| // a timely fashion, this is not guaranteed. |
| virtual bool OnServiceUpdated(chromeos::ErrorPtr* error, |
| const Service& service) = 0; |
| // Signals to a service publisher that we have remove a previously |
| // added service (added via OnServiceUpdated()). Returns true if |
| // service was successfully removed. Note that while publishers |
| // should make best efforts to inform peers of service removal in |
| // a timely fashion, this is not guaranteed. |
| virtual bool OnServiceRemoved(chromeos::ErrorPtr* error, |
| const std::string& service_id) = 0; |
| // Signals to a service publisher that we have changed the friendly |
| // name of the local device. Returns true if this change has been |
| // accurately reflected in the technology specify service advertisement. |
| // Note that while publishers should make best efforts to inform peers |
| // of name changes in a timely fashion, this is not guaranteed. |
| virtual bool OnFriendlyNameChanged(chromeos::ErrorPtr* error, |
| const std::string& name) = 0; |
| // Signals to a service publisher that we have changed the descriptive |
| // note of the local device. Returns true if this change has been |
| // accurately reflected in the technology specify service advertisement. |
| // Note that while publishers should make best efforts to inform peers |
| // of note changes in a timely fashion, this is not guaranteed. |
| virtual bool OnNoteChanged(chromeos::ErrorPtr* error, |
| const std::string& note) = 0; |
| }; |
| |
| } // namespace peerd |
| |
| #endif // PEERD_SERVICE_PUBLISHER_INTERFACE_H_ |