10 #ifndef ZYPP_MEDIA_PROVIDE_WORKER_H_INCLUDED 11 #define ZYPP_MEDIA_PROVIDE_WORKER_H_INCLUDED 13 #include <zypp-core/zyppng/base/Base> 14 #include <zypp-core/zyppng/base/EventLoop> 15 #include <zypp-core/zyppng/base/Timer> 16 #include <zypp-core/zyppng/io/AsyncDataSource> 17 #include <zypp-core/zyppng/rpc/MessageStream> 18 #include <zypp-core/zyppng/pipelines/Expected> 19 #include <zypp-proto/media/provider.pb.h> 22 #include <zypp-media/ng/HeaderValueMap> 23 #include <zypp-media/MediaException> 24 #include <zypp-media/Mount> 26 #include <string_view> 81 expected<void>
run (
int recv = STDIN_FILENO,
int send = STDOUT_FILENO );
98 MediaChangeRes requestMediaChange (
const uint32_t
id,
const std::string &label,
const int32_t mediaNr,
const std::vector<std::string> &devices,
const std::optional<std::string> &desc = {} );
107 expected<AuthInfo>
requireAuthorization (
const uint32_t
id,
const zypp::Url &url,
const std::string &lastTriedUsername =
"",
const int64_t lastTimestamp = -1,
const std::map<std::string, std::string> &extraFields = {} );
120 virtual void cancel (
const std::deque<ProvideWorkerItemRef>::iterator &request ) = 0;
128 virtual ProvideWorkerItemRef
makeItem (ProvideMessage &&spec );
152 void provideFailed (
const uint32_t
id,
const uint code,
const std::string &reason,
const bool transient,
const HeaderValueMap extra = {} );
187 void readFdClosed ( uint, AsyncDataSource::ChannelCloseReason );
194 expected<ProvideMessage>
sendAndWaitForResponse (
const ProvideMessage &request,
const std::vector<uint> &responseCodes );
202 EventLoop::Ptr
_loop = EventLoop::create();
ProvideNotificatioMode provNotificationMode() const
ProvideNotificatioMode _provNotificationMode
void pushSingleMessage(const RpcMessage &msg)
std::exception_ptr _fatalError
virtual void cancel(const std::deque< ProvideWorkerItemRef >::iterator &request)=0
zypp::proto::Envelope Message
zypp::proto::Capabilities WorkerCaps
Timer::Ptr _delayedShutdown
expected< ProvideMessage > parseReceivedMessage(const RpcMessage &m)
void maybeDelayedShutdown()
Configuration _workerConf
expected< void > run(int recv=STDIN_FILENO, int send=STDOUT_FILENO)
RpcMessageStream::Ptr _stream
void readFdClosed(uint, AsyncDataSource::ChannelCloseReason)
std::string_view _workerName
void attachSuccess(const uint32_t id)
void provideStart(const uint32_t id, const zypp::Url &url, const zypp::Pathname &localFile, const zypp::Pathname &stagingFile={})
bool _inControllerRequest
void provideFailed(const uint32_t id, const uint code, const std::string &reason, const bool transient, const HeaderValueMap extra={})
MediaChangeRes requestMediaChange(const uint32_t id, const std::string &label, const int32_t mediaNr, const std::vector< std::string > &devices, const std::optional< std::string > &desc={})
void invalidMessageReceived(std::exception_ptr p)
expected< ProvideMessage > sendAndWaitForResponse(const ProvideMessage &request, const std::vector< uint > &responseCodes)
void setProvNotificationMode(const ProvideNotificatioMode &provNotificationMode)
virtual void immediateShutdown()
ProvideWorker(std::string_view workerName)
void messageLoop(Timer &)
virtual ProvideWorkerItemRef makeItem(ProvideMessage &&spec)
AsyncDataSource & controlIO()
void redirect(const uint32_t id, const zypp::Url &url, const zypp::Pathname &newPath)
expected< void > executeHandshake()
ProvideWorkerItem(ProvideMessage &&spec)
RpcMessageStream::Ptr messageStream() const
int64_t last_auth_timestamp
std::deque< ProvideWorkerItemRef > & requestQueue()
std::map< std::string, std::string > extraKeys
Base class for Exception.
void handleSingleMessage(const ProvideMessage &provide)
ZYPP_FWD_DECL_TYPE_WITH_REFS(DeviceDriver)
AsyncDataSource::Ptr _controlIO
void detachSuccess(const uint32_t id)
void onInvalidMessageReceived()
expected< AuthInfo > requireAuthorization(const uint32_t id, const zypp::Url &url, const std::string &lastTriedUsername="", const int64_t lastTimestamp=-1, const std::map< std::string, std::string > &extraFields={})
void writeFdClosed(AsyncDataSource::ChannelCloseReason)
zypp::proto::Configuration Configuration
std::deque< ProvideWorkerItemRef > _pendingProvides
void provideSuccess(const uint32_t id, bool cacheHit, const zypp::Pathname &localFile, const HeaderValueMap extra={})
std::deque< ProvideMessage > _pendingMessages
virtual expected< WorkerCaps > initialize(const Configuration &conf)=0