8#include <userver/engine/deadline.hpp> 
    9#include <userver/utils/flags.hpp> 
   11#include <userver/urabbitmq/typedefs.hpp> 
   13USERVER_NAMESPACE_BEGIN
 
   29                               utils::Flags<Exchange::
Flags> flags,
 
   30                               engine::Deadline deadline) = 0;
 
   34                               engine::Deadline deadline) = 0;
 
   38                               engine::Deadline deadline) = 0;
 
   46                            utils::Flags<Queue::
Flags> flags,
 
   47                            engine::Deadline deadline) = 0;
 
   50  virtual void DeclareQueue(
const Queue& queue, engine::Deadline deadline) = 0;
 
   58  virtual void BindQueue(
const Exchange& exchange, 
const Queue& queue,
 
   59                         const std::string& routing_key,
 
   60                         engine::Deadline deadline) = 0;
 
   67                              engine::Deadline deadline) = 0;
 
   73  virtual void RemoveQueue(
const Queue& queue, engine::Deadline deadline) = 0;
 
   97  virtual void Publish(
const Exchange& exchange, 
const std::string& routing_key,
 
   99                       engine::Deadline deadline) = 0;
 
  102  virtual void Publish(
const Exchange& exchange, 
const std::string& routing_key,
 
  103                       const std::string& message,
 
  104                       engine::Deadline deadline) = 0;
 
  123  virtual std::string 
Get(
const Queue& queue, utils::Flags<Queue::
Flags> flags,
 
  124                          engine::Deadline deadline) = 0;
 
  127  ~IChannelInterface();
 
  147                               const std::string& routing_key,
 
  149                               engine::Deadline deadline) = 0;
 
  153                               const std::string& routing_key,
 
  154                               const std::string& message,
 
  155                               engine::Deadline deadline) = 0;
 
  158  ~IReliableChannelInterface();