25#ifndef __XRD_CL_XROOTD_MSG_HANDLER_HH__
26#define __XRD_CL_XROOTD_MSG_HANDLER_HH__
63 class LocalFileHandler;
99 case EntryRedirect:
return "Redirected from: " + fromstr +
" to: "
103 "Falling back to virtual redirector: " + tostr;
107 case EntryWait:
return "Waited at server request. Resending: "
111 return "Failed at: " + fromstr +
", retrying at: " + tostr;
136 std::shared_ptr<SIDManager> sidMgr,
185 log->
Debug(
ExDbgMsg,
"[%s] MsgHandler created: 0x%x (message: %s ).",
194 ntohl( pgrdreq->
rlen ) ) );
235 virtual uint16_t
Examine( std::shared_ptr<Message> &msg );
276 uint32_t &bytesRead );
309 uint32_t &bytesWritten );
559 std::string &result );
577 inline static size_t NbPgPerRsp( uint64_t offset, uint32_t dlen )
@ kXR_read
Definition XProtocol.hh:125
@ kXR_readv
Definition XProtocol.hh:137
@ kXR_pgread
Definition XProtocol.hh:142
Definition XrdClAnyObject.hh:33
Object for discarding data.
Definition XrdClAsyncDiscardReader.hh:36
Object for reading out data from the kXR_read response.
Definition XrdClAsyncRawReader.hh:35
Object for reading out data from the VectorRead response.
Definition XrdClAsyncVectorReader.hh:33
Binary blob representation.
Definition XrdClBuffer.hh:34
const char * GetBuffer(uint32_t offset=0) const
Get the message buffer.
Definition XrdClBuffer.hh:72
static PostMaster * GetPostMaster()
Get default post master.
static Log * GetLog()
Get default log.
Definition XrdClLocalFileHandler.hh:33
Handle diagnostics.
Definition XrdClLog.hh:101
void Debug(uint64_t topic, const char *format,...)
Print a debug message.
The message representation used throughout the system.
Definition XrdClMessage.hh:30
const std::string & GetDescription() const
Get the description of the message.
Definition XrdClMessage.hh:95
uint64_t GetSessionId() const
Get the session ID the message is meant for.
Definition XrdClMessage.hh:111
Message handler.
Definition XrdClPostMasterInterfaces.hh:51
StreamEvent
Events that may have occurred to the stream.
Definition XrdClPostMasterInterfaces.hh:79
A hub for dispatching and receiving messages.
Definition XrdClPostMaster.hh:48
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
A network socket.
Definition XrdClSocket.hh:43
URL representation.
Definition XrdClURL.hh:31
std::string GetHostId() const
Get the host part of the URL (user:password@host:port)
Definition XrdClURL.hh:94
std::string GetLocation() const
Get location (protocol://host:port/path)
bool IsValid() const
Is the url valid.
Handle/Process/Forward XRootD messages.
Definition XrdClXRootDMsgHandler.hh:119
void SetRedirectCounter(uint16_t redirectCounter)
Set the redirect counter.
Definition XrdClXRootDMsgHandler.hh:409
Status ReadFromBuffer(char *&buffer, size_t &buflen, std::string &result)
XRootDStatus * ProcessStatus()
Extract the status information from the stuff that we got.
bool pDirListStarted
Definition XrdClXRootDMsgHandler.hh:657
bool pHasLoadBalancer
Definition XrdClXRootDMsgHandler.hh:612
XRootDStatus WriteMessageBody(Socket *socket, uint32_t &bytesWritten)
bool pMsgInFly
Definition XrdClXRootDMsgHandler.hh:643
void SetFollowMetalink(bool followMetalink)
Definition XrdClXRootDMsgHandler.hh:414
void SetChunkList(ChunkList *chunkList)
Set the chunk list.
Definition XrdClXRootDMsgHandler.hh:382
void SetHostList(HostList *hostList)
Set host list.
Definition XrdClXRootDMsgHandler.hh:374
std::unique_ptr< AsyncRawReaderIntfc > pBodyReader
Definition XrdClXRootDMsgHandler.hh:627
friend class HandleRspJob
Definition XrdClXRootDMsgHandler.hh:120
uint16_t pNotAuthorizedCounter
Definition XrdClXRootDMsgHandler.hh:621
ChunkList * pChunkList
Definition XrdClXRootDMsgHandler.hh:616
std::unique_ptr< RedirectEntry > pRdirEntry
Definition XrdClXRootDMsgHandler.hh:640
uint32_t pPgWrtCurrentPageOffset
Definition XrdClXRootDMsgHandler.hh:630
virtual uint16_t InspectStatusRsp()
void SetCrc32cDigests(std::vector< uint32_t > &&crc32cDigests)
Definition XrdClXRootDMsgHandler.hh:393
uint32_t pAsyncOffset
Definition XrdClXRootDMsgHandler.hh:623
std::atomic< bool > pTimeoutFence
Definition XrdClXRootDMsgHandler.hh:650
void HandleResponse()
Unpack the message and call the response handler.
static const size_t MaxSslErrRetry
Definition XrdClXRootDMsgHandler.hh:575
static const size_t CksumSize
Definition XrdClXRootDMsgHandler.hh:573
const Message * GetRequest() const
Get the request pointer.
Definition XrdClXRootDMsgHandler.hh:355
HostInfo pLoadBalancer
Definition XrdClXRootDMsgHandler.hh:613
void UpdateTriedCGI(uint32_t errNo=0)
Update the "tried=" part of the CGI of the current message.
bool pOtherRawStarted
Definition XrdClXRootDMsgHandler.hh:633
LocalFileHandler * pLFileHandler
Definition XrdClXRootDMsgHandler.hh:605
void SetLoadBalancer(const HostInfo &loadBalancer)
Set the load balancer.
Definition XrdClXRootDMsgHandler.hh:363
void HandleLocalRedirect(URL *url)
Handle a redirect to a local file.
bool OmitWait(Message &request, const URL &url)
Status RewriteRequestWait()
Some requests need to be rewritten also after getting kXR_wait - sigh.
bool RetriableErrorResponse(const Status &status)
static size_t NbPgPerRsp(uint64_t offset, uint32_t dlen)
Definition XrdClXRootDMsgHandler.hh:577
void DumpRedirectTraceBack()
Dump the redirect-trace-back into the log file.
virtual uint16_t GetSid() const
Status ParseResponse(AnyObject *&response)
virtual void OnStatusReady(const Message *message, XRootDStatus status)
The requested action has been performed and the status is available.
URL * pEffectiveDataServerUrl
Definition XrdClXRootDMsgHandler.hh:602
std::vector< ChunkStatus > pChunkStatus
Definition XrdClXRootDMsgHandler.hh:619
std::string pRedirectUrl
Definition XrdClXRootDMsgHandler.hh:615
XRootDMsgHandler(Message *msg, ResponseHandler *respHandler, const URL *url, std::shared_ptr< SIDManager > sidMgr, LocalFileHandler *lFileHandler)
Definition XrdClXRootDMsgHandler.hh:133
bool pOksofarAsAnswer
Definition XrdClXRootDMsgHandler.hh:610
RedirectTraceBack pRedirectTraceBack
Definition XrdClXRootDMsgHandler.hh:641
bool pDirListWithStat
Definition XrdClXRootDMsgHandler.hh:658
void SwitchOnRefreshFlag()
Switch on the refresh flag for some requests.
Status ReadFromBuffer(char *&buffer, size_t &buflen, size_t size, std::string &result)
int pAggregatedWaitTime
Definition XrdClXRootDMsgHandler.hh:638
std::shared_ptr< SIDManager > pSidMgr
Definition XrdClXRootDMsgHandler.hh:604
~XRootDMsgHandler()
Destructor.
Definition XrdClXRootDMsgHandler.hh:208
PostMaster * pPostMaster
Definition XrdClXRootDMsgHandler.hh:603
std::unique_ptr< AsyncPageReader > pPageReader
Definition XrdClXRootDMsgHandler.hh:626
void WaitDone(time_t now)
std::vector< uint32_t > pCrc32cDigests
Definition XrdClXRootDMsgHandler.hh:617
size_t pSslErrCnt
Definition XrdClXRootDMsgHandler.hh:669
Status RewriteRequestRedirect(const URL &newUrl)
void SetStateful(bool stateful)
Definition XrdClXRootDMsgHandler.hh:419
bool pStateful
Definition XrdClXRootDMsgHandler.hh:637
time_t GetExpiration()
Get a timestamp after which we give up.
Definition XrdClXRootDMsgHandler.hh:329
std::shared_ptr< Message > pResponse
Definition XrdClXRootDMsgHandler.hh:598
virtual uint8_t OnStreamEvent(StreamEvent event, XRootDStatus status)
XrdSys::KernelBuffer * pKBuff
Definition XrdClXRootDMsgHandler.hh:618
bool pFollowMetalink
Definition XrdClXRootDMsgHandler.hh:635
time_t pExpiration
Definition XrdClXRootDMsgHandler.hh:608
Status RetryAtServer(const URL &url, RedirectEntry::Type entryType)
Retry the request at another server.
uint16_t pRedirectCounter
Definition XrdClXRootDMsgHandler.hh:620
std::vector< std::shared_ptr< Message > > pPartialResps
Definition XrdClXRootDMsgHandler.hh:599
Message * pRequest
Definition XrdClXRootDMsgHandler.hh:597
static const size_t PageWithCksum
Definition XrdClXRootDMsgHandler.hh:574
uint32_t pPgWrtCurrentPageNb
Definition XrdClXRootDMsgHandler.hh:631
void SetOksofarAsAnswer(bool oksofarAsAnswer)
Definition XrdClXRootDMsgHandler.hh:347
virtual XRootDStatus ReadMessageBody(Message *msg, Socket *socket, uint32_t &bytesRead)
void SetKernelBuffer(XrdSys::KernelBuffer *kbuff)
Set the kernel buffer.
Definition XrdClXRootDMsgHandler.hh:401
bool pHasSessionId
Definition XrdClXRootDMsgHandler.hh:614
virtual bool IsRaw() const
Are we a raw writer or not?
void HandleError(XRootDStatus status)
Recover error.
virtual uint16_t Examine(std::shared_ptr< Message > &msg)
URL pUrl
Definition XrdClXRootDMsgHandler.hh:601
std::unique_ptr< HostList > pHosts
Definition XrdClXRootDMsgHandler.hh:611
Status ParseXAttrResponse(char *data, size_t len, AnyObject *&response)
XrdSysCondVar pCV
Definition XrdClXRootDMsgHandler.hh:664
ResponseHandler * pResponseHandler
Definition XrdClXRootDMsgHandler.hh:600
Status pLastError
Definition XrdClXRootDMsgHandler.hh:607
XRootDStatus pStatus
Definition XrdClXRootDMsgHandler.hh:606
std::list< std::unique_ptr< RedirectEntry > > RedirectTraceBack
Definition XrdClXRootDMsgHandler.hh:571
void SetExpiration(time_t expiration)
Set a timestamp after which we give up.
Definition XrdClXRootDMsgHandler.hh:321
bool pRedirectAsAnswer
Definition XrdClXRootDMsgHandler.hh:609
Buffer pPgWrtCksumBuff
Definition XrdClXRootDMsgHandler.hh:629
void SetRedirectAsAnswer(bool redirectAsAnswer)
Definition XrdClXRootDMsgHandler.hh:338
uint32_t pAsyncChunkIndex
Definition XrdClXRootDMsgHandler.hh:624
Status ReadFromBuffer(char *&buffer, size_t &buflen, T &result)
Request status.
Definition XrdClXRootDResponses.hh:219
static int csNum(off_t offs, int count)
Compute the required size of a checksum vector based on offset & length.
Definition XrdSysPthread.hh:79
Definition XrdSysKernelBuffer.hh:46
Definition XrdClAction.hh:34
std::vector< HostInfo > HostList
Definition XrdClXRootDResponses.hh:1120
const uint64_t ExDbgMsg
Definition XrdClConstants.hh:44
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
static const int PageSize
Definition XrdSysPageSize.hh:36
Definition XProtocol.hh:506
kXR_int32 rlen
Definition XProtocol.hh:511
kXR_int64 offset
Definition XProtocol.hh:510
Definition XProtocol.hh:155
kXR_unt16 requestid
Definition XProtocol.hh:157
Definition XrdClXRootDResponses.hh:1109
URL url
URL of the host.
Definition XrdClXRootDResponses.hh:1117
Definition XrdClXRootDMsgHandler.hh:70
Type type
Definition XrdClXRootDMsgHandler.hh:87
RedirectEntry(const URL &from, const URL &to, Type type)
Definition XrdClXRootDMsgHandler.hh:79
XRootDStatus status
Definition XrdClXRootDMsgHandler.hh:88
URL from
Definition XrdClXRootDMsgHandler.hh:85
std::string ToString(bool prevok=true)
Definition XrdClXRootDMsgHandler.hh:90
URL to
Definition XrdClXRootDMsgHandler.hh:86
Type
Definition XrdClXRootDMsgHandler.hh:72
@ EntryRedirect
Definition XrdClXRootDMsgHandler.hh:73
@ EntryRetry
Definition XrdClXRootDMsgHandler.hh:75
@ EntryRedirectOnWait
Definition XrdClXRootDMsgHandler.hh:74
@ EntryWait
Definition XrdClXRootDMsgHandler.hh:76
Procedure execution status.
Definition XrdClStatus.hh:115
Definition XrdClXRootDMsgHandler.hh:565
ChunkStatus()
Definition XrdClXRootDMsgHandler.hh:566
bool sizeError
Definition XrdClXRootDMsgHandler.hh:567
bool done
Definition XrdClXRootDMsgHandler.hh:568