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) {
59 return mPmark && (mReq.
mSciTag >= 0);
63 mTransferWillStart =
true;
67 if(mSocketInfos.empty()) {
71 if(mPmarkHandles.empty()) {
74 ss <<
"scitag.flow=" << mReq.
mSciTag
86 <<
"&" <<
"pmark.appname=" << ((mTpcType ==
TPC::TpcType::Pull) ?
"http-put" :
"http-get");
88 auto pmark = mPmark->
Begin(sockInfo.
client, mReq.
resource.c_str(), ss.str().c_str(),
"http-tpc");
92 mPmarkHandles.emplace(sockInfo.
client.
addrInfo->
SockFD(),std::unique_ptr<XrdNetPMark::Handle>(pmark));
96 auto pmarkHandleItor = mPmarkHandles.begin();
97 while(!mSocketInfos.empty()) {
106 mPmarkHandles.emplace(fd, std::unique_ptr<XrdNetPMark::Handle>(pmark));
114 mPmarkHandles.erase(fd);
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.
SocketInfo(int fd, const struct sockaddr *sockP)
PMarkManager(XrdHttpExtReq &req, const TPC::TpcType type)
bool connect(int fd, const struct sockaddr *sockP, size_t sockPLen, uint32_t timeout_sec, std::stringstream &err)