37 void PMarkManager::addFd(
int fd,
const struct sockaddr * sockP) {
40 mSocketInfos.emplace(fd, sockP);
44 bool PMarkManager::connect(
int fd,
const struct sockaddr *sockP,
size_t sockPLen, uint32_t timeout_sec, std::stringstream &err) {
60 return mPmark && (mReq.
mSciTag >= 0);
64 mTransferWillStart =
true;
68 if(mSocketInfos.empty()) {
72 if(mPmarkHandles.empty()) {
75 ss <<
"scitag.flow=" << mReq.
mSciTag
87 <<
"&" <<
"pmark.appname=" << ((mTpcType ==
TPC::TpcType::Pull) ?
"http-put" :
"http-get");
89 auto pmark = mPmark->
Begin(sockInfo.
client, mReq.
resource.c_str(), ss.str().c_str(),
"http-tpc");
93 mPmarkHandles.emplace(sockInfo.
client.
addrInfo->
SockFD(),std::unique_ptr<XrdNetPMark::Handle>(pmark));
97 auto pmarkHandleItor = mPmarkHandles.begin();
98 while(!mSocketInfos.empty()) {
100 auto pmark = mPmark->
Begin(*sockInfo.
client.
addrInfo, *(pmarkHandleItor->second),
nullptr);
107 mPmarkHandles.emplace(fd, std::unique_ptr<XrdNetPMark::Handle>(pmark));
115 mPmarkHandles.erase(fd);
SocketInfo(int fd, const struct sockaddr *sockP)
bool connect(int fd, const struct sockaddr *sockP, size_t sockPLen, uint32_t timeout_sec, std::stringstream &err)
PMarkManager(XrdHttpExtReq &req, const TPC::TpcType type)
const char * Set(const char *hSpec, int pNum=PortInSpec)
virtual Handle * Begin(XrdSecEntity &Client, const char *path=0, const char *cgi=0, const char *app=0)=0
static bool ConnectWithTimeout(int sockfd, const struct sockaddr *clientAddr, size_t clientAddrLen, uint32_t timeout_sec, std::stringstream &errMsg)
XrdNetAddrInfo * addrInfo
Entity's connection details.