8 #ifndef SRC_XRDCL_XRDCLECHANDLER_HH_ 9 #define SRC_XRDCL_XRDCLECHANDLER_HH_ 79 +
"?xrdec.objid=" +
objcfg->obj
80 +
"&xrdec.close=true&xrdec.size=" + std::to_string(
curroff );
126 reader->Read( offset, size, buffer, handler );
141 writer->Write( size, buffer, handler );
159 std::unique_ptr<XrdEc::StrmWriter>
writer;
169 URL::ParamsMap::const_iterator itr = params.find(
"xrdec.nbdta" );
170 if( itr == params.end() )
return nullptr;
171 uint8_t nbdta = std::stoul( itr->second );
173 itr = params.find(
"xrdec.nbprt" );
174 if( itr == params.end() )
return nullptr;
175 uint8_t nbprt = std::stoul( itr->second );
177 itr = params.find(
"xrdec.blksz" );
178 if( itr == params.end() )
return nullptr;
179 uint64_t blksz = std::stoul( itr->second );
181 itr = params.find(
"xrdec.plgr" );
182 if( itr == params.end() )
return nullptr;
183 std::vector<std::string> plgr;
185 if( plgr.size() < nbdta + nbprt )
return nullptr;
187 itr = params.find(
"xrdec.objid" );
188 if( itr == params.end() )
return nullptr;
189 std::string objid = itr->second;
191 itr = params.find(
"xrdec.format" );
192 if( itr == params.end() )
return nullptr;
193 size_t format = std::stoul( itr->second );
194 if( format != 1 )
return nullptr;
196 std::vector<std::string> dtacgi;
197 itr = params.find(
"xrdec.dtacgi" );
198 if( itr != params.end() )
201 if( plgr.size() != dtacgi.size() )
return nullptr;
204 std::vector<std::string> mdtacgi;
205 itr = params.find(
"xrdec.mdtacgi" );
206 if( itr != params.end() )
209 if( plgr.size() != mdtacgi.size() )
return nullptr;
212 itr = params.find(
"xrdec.cosc" );
213 if( itr == params.end() )
return nullptr;
214 std::string cosc_str = itr->second;
215 if( cosc_str !=
"true" && cosc_str !=
"false" )
return nullptr;
216 bool cosc = cosc_str ==
"true";
219 objcfg->
plgr = std::move( plgr );
220 objcfg->
dtacgi = std::move( dtacgi );
221 objcfg->
mdtacgi = std::move( mdtacgi );
223 return new EcHandler( headnode, objcfg, cosc );
bool cosc
Definition: XrdClEcHandler.hh:162
Definition: XrdClAnyObject.hh:32
Implementation dependent.
Definition: XrdClFileSystem.hh:58
EcHandler * GetEcHandler(const URL &headnode, const URL &redirurl)
Definition: XrdClEcHandler.hh:165
std::map< std::string, std::string > ParamsMap
Definition: XrdClURL.hh:33
XRootDStatus Stat(const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XrdCl::XRootDStatus Close(XrdCl::ResponseHandler *handler, uint16_t timeout)
Definition: XrdClEcHandler.hh:68
virtual ~EcHandler()
Definition: XrdClEcHandler.hh:32
Definition: XrdClEcHandler.hh:21
std::unique_ptr< XrdEc::ObjCfg > objcfg
Definition: XrdClEcHandler.hh:158
Open only for writing.
Definition: XrdClFileSystem.hh:97
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:122
std::vector< std::string > mdtacgi
Definition: XrdEcObjCfg.hh:78
const uint16_t errNotSupported
Definition: XrdClStatus.hh:62
Definition: XrdEcStrmWriter.hh:52
const std::string & GetPath() const
Get the path.
Definition: XrdClURL.hh:212
uint64_t curroff
Definition: XrdClEcHandler.hh:161
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:38
std::vector< std::string > dtacgi
Definition: XrdEcObjCfg.hh:77
std::unique_ptr< XrdEc::Reader > reader
Definition: XrdClEcHandler.hh:160
std::unique_ptr< XrdEc::StrmWriter > writer
Definition: XrdClEcHandler.hh:159
Open for reading and writing.
Definition: XrdClFileSystem.hh:96
static ResponseHandler * Wrap(std::function< void(XRootDStatus &, AnyObject &)> func)
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:218
Definition: XrdClAnyObject.hh:25
bool IsOpen() const
Definition: XrdClEcHandler.hh:149
EcHandler(const URL &redir, XrdEc::ObjCfg *objcfg, bool cosc)
Definition: XrdClEcHandler.hh:24
XrdCl::XRootDStatus Open(uint16_t flags, XrdCl::ResponseHandler *handler, uint16_t timeout)
Definition: XrdClEcHandler.hh:36
static void splitString(Container &result, const std::string &input, const std::string &delimiter)
Split a string.
Definition: XrdClUtils.hh:53
void FromString(const std::string str)
Fill the buffer from a string.
Definition: XrdClBuffer.hh:205
Handle an async response.
Definition: XrdClXRootDResponses.hh:1040
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1070
Definition: XrdEcReader.hh:57
Open only for reading.
Definition: XrdClFileSystem.hh:95
URL representation.
Definition: XrdClURL.hh:30
const uint16_t errInternal
Internal error.
Definition: XrdClStatus.hh:56
Definition: XrdClFileSystem.hh:86
URL redir
Definition: XrdClEcHandler.hh:156
Send file/filesystem queries to an XRootD cluster.
Definition: XrdClFileSystem.hh:202
XrdCl::XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, XrdCl::ResponseHandler *handler, uint16_t timeout)
Definition: XrdClEcHandler.hh:118
Definition: XrdClFileSystem.hh:80
const ParamsMap & GetParams() const
Get the URL params.
Definition: XrdClURL.hh:239
Definition: XrdEcObjCfg.hh:19
std::vector< std::string > plgr
Definition: XrdEcObjCfg.hh:76
FileSystem fs
Definition: XrdClEcHandler.hh:157
XrdCl::XRootDStatus Stat(bool force, XrdCl::ResponseHandler *handler, uint16_t timeout)
Definition: XrdClEcHandler.hh:107
XrdCl::XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, XrdCl::ResponseHandler *handler, uint16_t timeout)
Definition: XrdClEcHandler.hh:133
XRootDStatus Query(QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Binary blob representation.
Definition: XrdClBuffer.hh:33