blob: 167e6a8725a0d467288e57ec4c531b45a4a3a8dd [file] [log] [blame]
// Copyright 2019 The Chromium 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 DISCOVERY_DNSSD_PUBLIC_DNS_SD_QUERIER_H_
#define DISCOVERY_DNSSD_PUBLIC_DNS_SD_QUERIER_H_
#include "discovery/dnssd/public/dns_sd_instance_endpoint.h"
namespace openscreen {
namespace discovery {
class DnsSdQuerier {
public:
// TODO(rwkeane): Add support for expiring records in addition to deleting
// them.
class Callback {
public:
virtual ~Callback() = default;
// Callback fired when a new InstanceEndpoint is created.
// NOTE: This callback may not modify the DnsSdQuerier instance from which
// it is called.
virtual void OnEndpointCreated(
const DnsSdInstanceEndpoint& new_endpoint) = 0;
// Callback fired when an existing InstanceEndpoint is updated.
// NOTE: This callback may not modify the DnsSdQuerier instance from which
// it is called.
virtual void OnEndpointUpdated(
const DnsSdInstanceEndpoint& modified_endpoint) = 0;
// Callback fired when an existing InstanceEndpoint is deleted.
// NOTE: This callback may not modify the DnsSdQuerier instance from which
// it is called.
virtual void OnEndpointDeleted(
const DnsSdInstanceEndpoint& old_endpoint) = 0;
};
virtual ~DnsSdQuerier() = default;
// Begins a new query. The provided callback will be called whenever new
// information about the provided (service, domain) pair becomes available.
// The Callback provided is expected to persist until the StopQuery method is
// called or this instance is destroyed.
// NOTE: The provided service value is expected to be valid, as defined by the
// IsServiceValid() method.
// NOTE: The callback must be called on the TaskRunner thread.
virtual void StartQuery(const std::string& service, Callback* cb) = 0;
// Stops an already running query.
// NOTE: The provided service value is expected to be valid, as defined by the
// IsServiceValid() method.
virtual void StopQuery(const std::string& service, Callback* cb) = 0;
// Re-initializes the process of service discovery for the provided service
// id. All ongoing queries for this domain are restarted and any previously
// received query results are discarded.
virtual void ReinitializeQueries(const std::string& service) = 0;
};
} // namespace discovery
} // namespace openscreen
#endif // DISCOVERY_DNSSD_PUBLIC_DNS_SD_QUERIER_H_