14 #ifndef ZYPP_MEDIA_PRIVATE_PROVIDE_QUEUE_P_H_INCLUDED 15 #define ZYPP_MEDIA_PRIVATE_PROVIDE_QUEUE_P_H_INCLUDED 18 #include <zypp-media/ng/Provide> 19 #include <zypp-proto/media/provider.pb.h> 20 #include <zypp-core/zyppng/io/Process> 21 #include <zypp-core/ByteCount.h> 29 class RpcMessageStream;
37 static constexpr uint32_t
InvalidId = (uint32_t) -1;
38 using Config = zypp::proto::Capabilities;
40 using TimePoint = std::chrono::time_point<std::chrono::steady_clock>;
62 void enqueue ( ProvideRequestRef request );
64 void detach (
const std::string &
id );
77 std::optional<TimePoint>
idleSince ()
const;
100 const std::string &
hostname ()
const;
119 std::list< ProvideQueue::Item >::iterator
dequeueActive ( std::list<Item>::iterator it );
126 std::list< ProvideQueue::Item >::iterator
cancelActiveItem (std::list<Item>::iterator i,
const std::exception_ptr &error );
std::list< Item > _activeItems
std::list< ProvideQueue::Item >::iterator dequeueActive(std::list< Item >::iterator it)
Store and operate with byte count.
RpcMessageStreamPtr _messageStream
void enqueue(ProvideRequestRef request)
std::chrono::time_point< std::chrono::steady_clock > TimePoint
bool canScheduleMore() const
std::optional< TimePoint > idleSince() const
static constexpr uint32_t InvalidId
ProvideRequestRef _request
void cancel(ProvideRequest *item, std::exception_ptr error)
zypp::ByteCount expectedProvideSize() const
void immediateShutdown(const std::exception_ptr &reason)
uint activeRequests() const
const Config & workerConfig() const
void procFinished(int exitCode)
bool isAttachRequest() const
void forwardToLog(std::string &&logLine)
std::optional< TimePoint > _idleSince
ProvideQueue(ProvidePrivate &parent)
bool startup(const std::string &workerScheme, const zypp::Pathname &workDir, const std::string &hostname="")
zypp::proto::Capabilities Config
SignalProxy< void()> sigIdle()
std::shared_ptr< RpcMessageStream > RpcMessageStreamPtr
zypp::Pathname _currentExe
void fatalWorkerError(const std::exception_ptr &reason=nullptr)
std::list< ProvideQueue::Item >::iterator cancelActiveItem(std::list< Item >::iterator i, const std::exception_ptr &error)
void detach(const std::string &id)
bool isDetachRequest() const
uint requestCount() const
std::deque< Item > _waitQueue
bool isFileRequest() const
void processReadyRead(int channel)
const std::string & hostname() const