72 {
73 try
74 {
75
76 if( !status->IsOK() )
77 throw status;
78
79 delete status;
80
81 if( !response )
83
84 ChunkInfo * info = 0;
85 response->Get( info );
86 if( !info )
88 uint32_t bytesRead = info->length;
89 uint64_t offset = info->offset + bytesRead;
90 pContent += std::string( pBuffer, bytesRead );
91
92 if( bytesRead > 0 )
93 {
94
96 pUserHandler, pContent );
97 XRootDStatus st = pRedirector->pFile->
Read( offset,
99 if( !st.IsOK() )
100 {
101 delete mrh;
102 throw new XRootDStatus( st );
103 }
104 }
105 else
106 {
107
108 delete pRedirector->pFile;
109 pRedirector->pFile = 0;
110
111 XRootDStatus st = pRedirector->Parse( pContent );
112
113 pRedirector->FinalizeInitialization();
114
115 if( pUserHandler )
117 }
118
119 delete response;
120 }
121 catch( XRootDStatus *status )
122 {
123 pRedirector->FinalizeInitialization( *status );
124
125
126 if( pUserHandler )
128 else
130 }
131
132 delete this;
133 }
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
const uint16_t stError
An error occurred that could potentially be retried.
const uint16_t errInternal
Internal error.
void DeallocArgs(XRootDStatus *status, AnyObject *response, HostList *hostList)