8#include <grpcpp/completion_queue.h> 
    9#include <grpcpp/impl/service_type.h> 
   11#include <userver/dynamic_config/source.hpp> 
   12#include <userver/engine/task/task_processor_fwd.hpp> 
   13#include <userver/logging/null_logger.hpp> 
   14#include <userver/utils/statistics/fwd.hpp> 
   16#include <userver/ugrpc/impl/static_metadata.hpp> 
   17#include <userver/ugrpc/impl/statistics_storage.hpp> 
   18#include <userver/ugrpc/server/middlewares/fwd.hpp> 
   20USERVER_NAMESPACE_BEGIN
 
   22namespace ugrpc::
server::impl {
 
   25struct ServiceSettings 
final {
 
   26  grpc::ServerCompletionQueue& queue;
 
   27  engine::TaskProcessor& task_processor;
 
   28  ugrpc::impl::StatisticsStorage& statistics_storage;
 
   29  Middlewares middlewares;
 
   30  logging::LoggerPtr access_tskv_logger;
 
   31  const dynamic_config::Source config_source;
 
   41  ServiceWorker& operator=(ServiceWorker&&) = 
delete;
 
   42  virtual ~ServiceWorker();
 
   45  virtual grpc::Service& GetService() = 0;
 
   48  virtual const ugrpc::impl::StaticServiceMetadata& GetMetadata() 
const = 0;
 
   51  virtual void Start() = 0;