XRootD
XrdXrootdTransPend Class Reference

#include <XrdXrootdTransPend.hh>

+ Collaboration diagram for XrdXrootdTransPend:

Public Member Functions

 XrdXrootdTransPend (XrdLink *lkP, XrdXrootdTransit *brP, ClientRequest *rqP)
 
 ~XrdXrootdTransPend ()
 
void Queue ()
 

Static Public Member Functions

static void Clear (XrdXrootdTransit *trP)
 
static XrdXrootdTransPendRemove (XrdLink *lP, short sid)
 

Public Attributes

XrdXrootdTransitbridge
 
XrdLinklink
 
XrdXrootdTransPendnext
 
union {
ClientRequest Request
 
short theSid
 
Pend
 

Detailed Description

Definition at line 42 of file XrdXrootdTransPend.hh.

Constructor & Destructor Documentation

◆ XrdXrootdTransPend()

XrdXrootdTransPend::XrdXrootdTransPend ( XrdLink lkP,
XrdXrootdTransit brP,
ClientRequest rqP 
)
inline

Definition at line 58 of file XrdXrootdTransPend.hh.

61  : next(0), link(lkP), bridge(brP)
62  {memcpy(&Pend.Request, rqP, sizeof(Pend.Request));}
union XrdXrootdTransPend::@189 Pend
XrdXrootdTransPend * next
XrdXrootdTransit * bridge

References Pend.

◆ ~XrdXrootdTransPend()

XrdXrootdTransPend::~XrdXrootdTransPend ( )
inline

Definition at line 64 of file XrdXrootdTransPend.hh.

64 {}

Member Function Documentation

◆ Clear()

void XrdXrootdTransPend::Clear ( XrdXrootdTransit trP)
static

Definition at line 48 of file XrdXrootdTransPend.cc.

49 {
50  XrdXrootdTransPend *tpP, *tpN, *tpX;
51 
52 // Lock this operations
53 //
54  myMutex.Lock();
55 
56 // Run through the queue deleting all elements owned by the transit object
57 //
58  tpP = 0; tpN = rqstQ;
59  while(tpN)
60  {if (tpN->bridge == trP)
61  {if (tpP) tpP->next = tpN->next;
62  else rqstQ = tpN->next;
63  tpX = tpN; tpN = tpN->next; delete tpX;
64  } else {
65  tpP = tpN; tpN = tpN->next;
66  }
67  }
68 
69 // All done
70 //
71  myMutex.UnLock();
72 }

References bridge, XrdSysMutex::Lock(), next, and XrdSysMutex::UnLock().

Referenced by XrdXrootdTransit::Recycle().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Queue()

void XrdXrootdTransPend::Queue ( )

Definition at line 78 of file XrdXrootdTransPend.cc.

79 {
80 // Now place it on out pending queue
81 //
82  myMutex.Lock();
83  next = rqstQ; rqstQ = this;
84  myMutex.UnLock();
85 }

References XrdSysMutex::Lock(), next, and XrdSysMutex::UnLock().

+ Here is the call graph for this function:

◆ Remove()

XrdXrootdTransPend * XrdXrootdTransPend::Remove ( XrdLink lP,
short  sid 
)
static

Definition at line 91 of file XrdXrootdTransPend.cc.

92 {
93  XrdXrootdTransPend *tpP, *tpN;
94 
95 // Lock this operations
96 //
97  myMutex.Lock();
98 
99 // Run through the queue and remove matching element
100 //
101  tpP = 0; tpN = rqstQ;
102  while(tpN)
103  {if (tpN->link == lP && tpN->Pend.theSid == sid)
104  {if (tpP) tpP->next = tpN->next;
105  else rqstQ = tpN->next;
106  break;
107  } else {
108  tpP = tpN; tpN = tpN->next;
109  }
110  }
111 
112 // All done
113 //
114  myMutex.UnLock();
115  return tpN;
116 }

References link, XrdSysMutex::Lock(), next, Pend, and XrdSysMutex::UnLock().

Referenced by XrdXrootdTransit::Attn().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ bridge

XrdXrootdTransit* XrdXrootdTransPend::bridge

Definition at line 47 of file XrdXrootdTransPend.hh.

Referenced by XrdXrootdTransit::Attn(), and Clear().

◆ link

XrdLink* XrdXrootdTransPend::link

Definition at line 46 of file XrdXrootdTransPend.hh.

Referenced by Remove().

◆ next

XrdXrootdTransPend* XrdXrootdTransPend::next

Definition at line 45 of file XrdXrootdTransPend.hh.

Referenced by Clear(), Queue(), and Remove().

◆ 

union { ... } XrdXrootdTransPend::Pend

Referenced by XrdXrootdTransPend(), and Remove().


The documentation for this class was generated from the following files: