// 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;
};

}  // namespace peerd

#endif  // PEERD_SERVICE_PUBLISHER_INTERFACE_H_
