Handle XRootD stream IDs.
More...
#include <XrdClSIDManager.hh>
Handle XRootD stream IDs.
Definition at line 42 of file XrdClSIDManager.hh.
◆ ~SIDManager()
XrdCl::SIDManager::~SIDManager |
( |
| ) |
|
|
inline |
◆ AllocateSID()
Status XrdCl::SIDManager::AllocateSID |
( |
uint8_t |
sid[2] | ) |
|
Allocate a SID
- Parameters
-
sid | a two byte array where the allocated SID should be stored |
- Returns
- stOK on success, stError on error
Definition at line 28 of file XrdClSIDManager.cc.
32 uint16_t allocSID = 1;
37 if( !pFreeSIDs.empty() )
39 allocSID = pFreeSIDs.front();
40 pFreeSIDs.pop_front();
47 if( pSIDCeiling == 0xffff )
49 allocSID = pSIDCeiling++;
52 memcpy( sid, &allocSID, 2 );
53 pAllocTime[allocSID] = time(0);
const uint16_t stError
An error occurred that could potentially be retried.
const uint16_t errNoMoreFreeSIDs
References XrdCl::errNoMoreFreeSIDs, and XrdCl::stError.
◆ GetNumberOfAllocatedSIDs()
uint16_t XrdCl::SIDManager::GetNumberOfAllocatedSIDs |
( |
| ) |
const |
Number of allocated streams.
Definition at line 135 of file XrdClSIDManager.cc.
138 return pSIDCeiling - pFreeSIDs.size() - pTimeOutSIDs.size() - 1;
◆ IsAnySIDOldAs()
bool XrdCl::SIDManager::IsAnySIDOldAs |
( |
const time_t |
tlim | ) |
const |
Check if any SID was allocated at or before a given time.
Definition at line 84 of file XrdClSIDManager.cc.
87 return std::any_of( pAllocTime.begin(), pAllocTime.end(),
90 return p.second <= tlim;
◆ IsTimedOut()
bool XrdCl::SIDManager::IsTimedOut |
( |
uint8_t |
sid[2] | ) |
|
Check if a SID is timed out.
Definition at line 97 of file XrdClSIDManager.cc.
101 memcpy( &tiSID, sid, 2 );
102 std::set<uint16_t>::iterator it = pTimeOutSIDs.find( tiSID );
103 if( it != pTimeOutSIDs.end() )
◆ NumberOfTimedOutSIDs()
uint32_t XrdCl::SIDManager::NumberOfTimedOutSIDs |
( |
| ) |
const |
|
inline |
Number of timeout sids.
Definition at line 109 of file XrdClSIDManager.hh.
112 return pTimeOutSIDs.size();
◆ ReleaseAllTimedOut()
void XrdCl::SIDManager::ReleaseAllTimedOut |
( |
| ) |
|
Release all timed out SIDs.
Definition at line 123 of file XrdClSIDManager.cc.
126 std::set<uint16_t>::iterator it;
127 for( it = pTimeOutSIDs.begin(); it != pTimeOutSIDs.end(); ++it )
128 pFreeSIDs.push_back( *it );
129 pTimeOutSIDs.clear();
◆ ReleaseSID()
void XrdCl::SIDManager::ReleaseSID |
( |
uint8_t |
sid[2] | ) |
|
Release the SID that is no longer needed.
Definition at line 60 of file XrdClSIDManager.cc.
64 memcpy( &relSID, sid, 2 );
65 pFreeSIDs.push_back( relSID );
66 pAllocTime.erase( relSID );
◆ ReleaseTimedOut()
void XrdCl::SIDManager::ReleaseTimedOut |
( |
uint8_t |
sid[2] | ) |
|
Release a timed out SID.
Definition at line 111 of file XrdClSIDManager.cc.
115 memcpy( &tiSID, sid, 2 );
116 pTimeOutSIDs.erase( tiSID );
117 pFreeSIDs.push_back( tiSID );
◆ TimeOutSID()
void XrdCl::SIDManager::TimeOutSID |
( |
uint8_t |
sid[2] | ) |
|
Register a SID of a request that timed out.
Definition at line 72 of file XrdClSIDManager.cc.
76 memcpy( &tiSID, sid, 2 );
77 pTimeOutSIDs.insert( tiSID );
78 pAllocTime.erase( tiSID );
◆ SIDMgrPool
The documentation for this class was generated from the following files: