8#include <userver/clients/dns/resolver_fwd.hpp> 
    9#include <userver/utils/fast_pimpl.hpp> 
   10#include <userver/utils/statistics/writer.hpp> 
   12#include <userver/rabbitmq_fwd.hpp> 
   13#include <userver/urabbitmq/broker_interface.hpp> 
   14#include <userver/urabbitmq/client_settings.hpp> 
   16USERVER_NAMESPACE_BEGIN
 
   36  static std::shared_ptr<
Client> 
Create(clients::dns::Resolver& resolver,
 
   37                                        const ClientSettings& settings);
 
   42                       utils::Flags<Exchange::
Flags> flags,
 
   43                       engine::Deadline deadline) 
override;
 
   46                       engine::Deadline deadline) 
override {
 
   47    DeclareExchange(exchange, type, {}, deadline);
 
   51                       engine::Deadline deadline) 
override {
 
   52    DeclareExchange(exchange, Exchange::
Type::kFanOut, {}, deadline);
 
   56                    engine::Deadline deadline) 
override;
 
   58  void DeclareQueue(
const Queue& queue, engine::Deadline deadline) 
override {
 
   59    DeclareQueue(queue, {}, deadline);
 
   62  void BindQueue(
const Exchange& exchange, 
const Queue& queue,
 
   63                 const std::string& routing_key,
 
   64                 engine::Deadline deadline) 
override;
 
   67                      engine::Deadline deadline) 
override;
 
   69  void RemoveQueue(
const Queue& queue, engine::Deadline deadline) 
override;
 
   76  void Publish(
const Exchange& exchange, 
const std::string& routing_key,
 
   78               engine::Deadline deadline) 
override;
 
   80  void Publish(
const Exchange& exchange, 
const std::string& routing_key,
 
   81               const std::string& message, engine::Deadline deadline) 
override {
 
   85  std::string 
Get(
const Queue& queue, utils::Flags<Queue::
Flags> flags,
 
   86                  engine::Deadline deadline) 
override;
 
   95                       engine::Deadline deadline) 
override;
 
   98                       const std::string& message,
 
   99                       engine::Deadline deadline) 
override {
 
  114  Client(clients::dns::Resolver& resolver, 
const ClientSettings& settings);
 
  118  utils::FastPimpl<ClientImpl, 232, 8> impl_;