36 void PMarkManager::addFd(
int fd,
const struct sockaddr * sockP) {
39 mSocketInfos.emplace(fd, sockP);
43 bool PMarkManager::connect(
int fd,
const struct sockaddr *sockP,
size_t sockPLen, uint32_t timeout_sec, std::stringstream &err) {
58 return mPmark && (mReq.
mSciTag >= 0);
62 mTransferWillStart =
true;
66 if(mSocketInfos.empty()) {
70 if(mPmarkHandles.empty()) {
73 ss <<
"scitag.flow=" << mReq.
mSciTag;
75 auto pmark = mPmark->
Begin(sockInfo.
client, mReq.
resource.c_str(), ss.str().c_str(),
"http-tpc");
79 mPmarkHandles.emplace(sockInfo.
client.
addrInfo->
SockFD(),std::unique_ptr<XrdNetPMark::Handle>(pmark));
83 auto pmarkHandleItor = mPmarkHandles.begin();
84 while(!mSocketInfos.empty()) {
93 mPmarkHandles.emplace(fd, std::unique_ptr<XrdNetPMark::Handle>(pmark));
101 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)
bool connect(int fd, const struct sockaddr *sockP, size_t sockPLen, uint32_t timeout_sec, std::stringstream &err)
PMarkManager(XrdHttpExtReq &req)