00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef XRD_CLIENT_READV
00016 #define XRD_CLIENT_READV
00017
00018 class XrdClientConn;
00019 #include "XProtocol/XPtypes.hh"
00020 #include "XProtocol/XProtocol.hh"
00021 #include "XrdClient/XrdClientVector.hh"
00022
00023 struct XrdClientReadVinfo {
00024 kXR_int64 offset;
00025 kXR_int32 len;
00026 };
00027
00028 class XrdClientReadV {
00029 public:
00030
00031
00032
00033 static kXR_int64 ReqReadV(XrdClientConn *xrdc, char *handle, char *destbuf,
00034 XrdClientVector<XrdClientReadVinfo> &reqvect,
00035 int firstreq, int nreq, int streamtosend);
00036
00037
00038 static kXR_int32 UnpackReadVResp(char *destbuf, char *respdata, kXR_int32 respdatalen,
00039 readahead_list *buflis, int nbuf);
00040
00041
00042 static kXR_int32 SubmitToCacheReadVResp(XrdClientConn *xrdc, char *respdata,
00043 kXR_int32 respdatalen);
00044
00045 static void PreProcessChunkRequest(XrdClientVector<XrdClientReadVinfo> &reqvect,
00046 kXR_int64 offs, kXR_int32 len,
00047 kXR_int64 filelen);
00048
00049 static void PreProcessChunkRequest(XrdClientVector<XrdClientReadVinfo> &reqvect,
00050 kXR_int64 offs, kXR_int32 len,
00051 kXR_int64 filelen,
00052 kXR_int32 spltsize);
00053
00054
00055 };
00056
00057
00058
00059
00060
00061 #endif