44#include <sys/socket.h> 
  131           fDontTimeout(
kFALSE), fRDInterrupt(
kFALSE), fXrdProofdVersion(-1)
 
  168      Error(
"TXSocket", 
"internal pipe is invalid");
 
  175   u.SetProtocol(
"proof", 
kTRUE);
 
  190               Error(
"TXSocket", 
"fatal error occurred while opening a connection" 
  205            Error(
"TXSocket", 
"create or attach failed (%s)",
 
 
  273         Info(
"DisconnectSession",
"not connected: nothing to do");
 
  280   if (
id > -1 || 
all) {
 
  283      memset(&Request, 0, 
sizeof(Request) );
 
  293         fConn->
SendReq(&Request, (
const void *)0, 0, 
"DisconnectSession");
 
 
  315      Warning(
"Close", 
"could not hold semaphore for async messages after %d sec: closing anyhow (may give error messages)", 
to);
 
  323         Info(
"Close",
"no connection: nothing to do");
 
 
  375   if (!
semg.IsValid()) {
 
  376      Error(
"ProcessUnsolicitedMsg", 
"%p: async semaphore taken by Close()! Should not be here!", 
this);
 
  382         Info(
"ProcessUnsolicitedMsg", 
"%p: got empty message: skipping", 
this);
 
  387         Info(
"ProcessUnsolicitedMsg", 
"%p: got message with status: %d, len: %d bytes (ID: %d)",
 
  388              this, 
m->GetStatusCode(), 
m->DataLen(), 
m->HeaderSID());
 
  395            Info(
"ProcessUnsolicitedMsg",
"%p: got error from underlying connection", 
this);
 
  399               Info(
"ProcessUnsolicitedMsg",
"%p: handler undefined or recovery failed", 
this);
 
  409            Info(
"ProcessUnsolicitedMsg", 
"%p: underlying connection timed out", 
this);
 
  419         Info(
"ProcessUnsolicitedMsg", 
"%p: IDs do not match: {%d, %d}", 
this, 
fConn->
fStreamid, 
m->HeaderSID());
 
  425   if ((
len = 
m->DataLen()) < (
int)
sizeof(kXR_int32)) {
 
  426      Error(
"ProcessUnsolicitedMsg", 
"empty or bad-formed message - disabling");
 
  438         Info(
"ProcessUnsolicitedMsg", 
"%p: got acod %d (%x): message has status: %d, len: %d bytes (ID: %d)",
 
  439              this, 
acod, 
acod, 
m->GetStatusCode(), 
m->DataLen(), 
m->HeaderSID());
 
  442   void *
pdata = (
void *)((
char *)(
m->GetData()) + 
sizeof(kXR_int32));
 
  443   len -= 
sizeof(kXR_int32);
 
  445      Info(
"ProcessUnsolicitedMsg", 
"%p: got action: %d (%d bytes) (ID: %d)",
 
  465         {  std::lock_guard<std::recursive_mutex> lock(
fIMtx);
 
  470               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  471               len -= 
sizeof(kXR_int32);
 
  479                  Info(
"ProcessUnsolicitedMsg",
"%s: forwarding option: %d", 
lab, 
ifw);
 
  492               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  506                  Info(
"ProcessUnsolicitedMsg",
"kXPD_timer: found opt: %d", opt);
 
  508               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  509               len -= 
sizeof(kXR_int32);
 
  516                  Info(
"ProcessUnsolicitedMsg",
"kXPD_timer: found delay: %d", 
delay);
 
  518               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  519               len -= 
sizeof(kXR_int32);
 
  528               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  540                  Info(
"ProcessUnsolicitedMsg",
"kXPD_inflate: factor: %d", 
inflate);
 
  542               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  543               len -= 
sizeof(kXR_int32);
 
  551               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  563                  Info(
"ProcessUnsolicitedMsg",
"kXPD_priority: priority: %d", 
priority);
 
  565               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  566               len -= 
sizeof(kXR_int32);
 
  574               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  587               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  600                  Info(
"ProcessUnsolicitedMsg",
"kXPD_urgent: found type: %d", 
type);
 
  602               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  603               len -= 
sizeof(kXR_int32);
 
  611                  Info(
"ProcessUnsolicitedMsg",
"kXPD_urgent: found int1: %d", int1);
 
  613               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  614               len -= 
sizeof(kXR_int32);
 
  622                  Info(
"ProcessUnsolicitedMsg",
"kXPD_urgent: found int2: %d", int2);
 
  624               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  625               len -= 
sizeof(kXR_int32);
 
  634               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  640         {  std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
  645               Error(
"ProcessUnsolicitedMsg",
"could allocate spare buffer");
 
  662               Info(
"ProcessUnsolicitedMsg",
"%p: %s: posting semaphore: %p (%d bytes)",
 
  669         Info(
"ProcessUnsolicitedMsg",
 
  670              "kXPD_feedback treatment not yet implemented");
 
  680            if (opt >= 0 && opt <= 4) {
 
  682               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  683               len -= 
sizeof(kXR_int32);
 
  691            } 
else if (opt == 2) {
 
  694            } 
else if (opt == 3) {
 
  697            } 
else if (opt == 4) {
 
  703               Printf(
"| Message from server:");
 
  712         Printf(
"| Error condition occured: message from server:");
 
  719            Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  724         { std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
  732               Info(
"ProcessUnsolicitedMsg",
"found cid: %d", cid);
 
  735            pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  736            len -= 
sizeof(kXR_int32);
 
  741               Error(
"ProcessUnsolicitedMsg",
"could allocate spare buffer");
 
  761               Info(
"ProcessUnsolicitedMsg",
"%p: cid: %d, posting semaphore: %p (%d bytes)",
 
  771            if (
what.BeginsWith(
"idle-timeout")) {
 
  781                  Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  805               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  806               len -= 
sizeof(kXR_int32);
 
  810               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  811               len -= 
sizeof(kXR_int32);
 
  815               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
  816               len -= 
sizeof(kXR_int32);
 
  819               Info(
"ProcessUnsolicitedMsg",
"kXPD_clusterinfo: # sessions: %d," 
  827               Error(
"ProcessUnsolicitedMsg",
"handler undefined");
 
  831         Error(
"ProcessUnsolicitedMsg",
"%p: unknown action code: %d received from '%s' - disabling",
 
 
  861   char *
mbuf = 
m.Buffer();
 
  863   if (
m.CompBuffer()) {
 
  864      mbuf = 
m.CompBuffer();
 
  865      mlen = 
m.CompLength();
 
  870   std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
  875      Error(
"PostMsg", 
"could allocate spare buffer");
 
  894      Info(
"PostMsg", 
"%p: posting type %d to semaphore: %p (%d bytes)",
 
 
  907   std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
 
  975      Info(
"GetInterrupt",
"%p: waiting to lock mutex", 
this);
 
  977   std::lock_guard<std::recursive_mutex> lock(
fIMtx);
 
  985      Error(
"GetInterrupt", 
"value is unset (%d) - protocol error",
fILev);
 
 
 1008   list<TXSockBuf *>::iterator i;
 
 1010   {  std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
 1013      if (
fAQue.size() > 0) {
 
 1029               Printf(
"Warning in TXSocket::Flush: semaphore counter already 0 (sz: %d)", 
sz);
 
 1036   {  std::lock_guard<std::mutex> lock(
fgSMtx);
 
 
 1058         Info(
"Create",
"not connected: nothing to do");
 
 1073      if (
fMode == 
'A' || attach) {
 
 1087         Info(
"Create", 
"sending %d bytes to server", 
reqhdr.header.dlen);
 
 1091         Info(
"Create", 
"creating session of server %s", 
fUrl.
Data());
 
 1105         void *
pdata = (
void *)(
xrsp->GetData());
 
 1108         if (
len >= (
Int_t)
sizeof(kXR_int32)) {
 
 1113            pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
 1114            len -= 
sizeof(kXR_int32);
 
 1116            Error(
"Create",
"session ID is undefined!");
 
 1122         if (
len >= (
Int_t)
sizeof(kXR_int16)) {
 
 1127            pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int16));
 
 1128            len -= 
sizeof(kXR_int16);
 
 1130            Warning(
"Create",
"protocol version of the remote PROOF undefined!");
 
 1135            len += 
sizeof(kXR_int16);
 
 1139            pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int32));
 
 1140            len -= 
sizeof(kXR_int32);
 
 1142            if (
len >= (
Int_t)
sizeof(kXR_int16)) {
 
 1147               pdata = (
void *)((
char *)
pdata + 
sizeof(kXR_int16));
 
 1148               len -= 
sizeof(kXR_int16);
 
 1150               Warning(
"Create",
"version of the remote XrdProofdProtocol undefined!");
 
 1156            char *
url = 
new char[
len+1];
 
 1193         Info(
"Create", 
"creation/attachment attempt failed: %d attempts left", 
retriesleft);
 
 1195         Error(
"Create", 
"%d creation/attachment attempts failed: no attempts left",
 
 1207         "problems creating or attaching to a remote server (%s)",
 
 
 1228   memset( &Request, 0, 
sizeof(Request) );
 
 1236      Info(
"SendRaw", 
"sending %d bytes to server", Request.
sendrcv.dlen);
 
 1265   Error(
"SendRaw", 
"%s: problems sending %d bytes to server",
 
 
 1284      Error(
"Ping",
"not connected: nothing to do");
 
 1293   memset( &Request, 0, 
sizeof(Request) );
 
 1297   Request.
sendrcv.opt = options;
 
 1306      kXR_int32 *
pres = (kXR_int32 *) 
pans;
 
 1329         Error(
"Ping", 
"%p: int: problems marshalling request", 
this);
 
 1335      Error(
"Ping", 
"%p: %s: problems sending ping to server", 
this, 
ord ? 
ord : 
"int");
 
 
 1352      Info(
"RemoteTouch",
"%p: sending touch request to %s", 
this, 
GetName());
 
 1356      Error(
"RemoteTouch",
"not connected: nothing to do");
 
 1362   memset( &Request, 0, 
sizeof(Request) );
 
 1371      Error(
"Touch", 
"%p: problems marshalling request ", 
this);
 
 1375      Error(
"Touch", 
"%p: problems sending touch request to server", 
this);
 
 
 1390      Info(
"CtrlC",
"%p: sending ctrl-c request to %s", 
this, 
GetName());
 
 1394      Error(
"CtrlC",
"not connected: nothing to do");
 
 1400   memset( &Request, 0, 
sizeof(Request) );
 
 1403   Request.
proof.sid = 0;
 
 1404   Request.
proof.dlen = 0;
 
 1408      Error(
"CtrlC", 
"%p: problems marshalling request ", 
this);
 
 1412      Error(
"CtrlC", 
"%p: problems sending ctrl-c request to server", 
this);
 
 
 1427      Info(
"PickUpReady", 
"%p: %s: going to sleep", 
this, 
GetTitle());
 
 1440               Error(
"PickUpReady",
"error waiting at semaphore");
 
 1444                  Info(
"PickUpReady", 
"%p: %s: got timeout: retring (%d secs)",
 
 1454            Info(
"PickUpReady",
"interrupted");
 
 1463         Error(
"PickUpReady",
"error waiting at semaphore");
 
 1470      Info(
"PickUpReady", 
"%p: %s: waken up", 
this, 
GetTitle());
 
 1472   std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
 1475   if (
fAQue.size() <= 0) {
 
 1476      Error(
"PickUpReady",
"queue is empty - protocol error ?");
 
 1480      Error(
"PickUpReady",
"got invalid buffer - protocol error ?");
 
 1490      Info(
"PickUpReady", 
"%p: %s: got message (%d bytes)",
 
 
 1517   std::lock_guard<std::mutex> lock(
fgSMtx);
 
 1521      list<TXSockBuf *>::iterator i;
 
 1524         if ((*i) && (*i)->fSiz >= 
size) {
 
 1527               Info(
"PopUpSpare",
"asked: %d, spare: %d/%d, REUSE buf %p, sz: %d",
 
 1538         Info(
"PopUpSpare",
"asked: %d, spare: %d/%d, maxsz: %d, RESIZE buf %p, sz: %d",
 
 1550      Info(
"PopUpSpare",
"asked: %d, spare: %d/%d, maxsz: %d, NEW buf %p, sz: %d",
 
 
 1562   std::lock_guard<std::mutex> lock(
fgSMtx);
 
 1565      Info(
"PushBackSpare",
"release buf %p, sz: %d (BuffMem: %lld)",
 
 
 1584   if (!buffer || (
length <= 0))
 
 
 1644   memset(&Request, 0, 
sizeof(Request) );
 
 1656      fConn->
SendReq(&Request, (
const void *)0, 0, 
"SendInterrupt");
 
 1671   Error(
"SendInterrupt", 
"problems sending interrupt to server");
 
 
 1679   std::lock_guard<std::recursive_mutex> lock(
fAMtx);
 
 
 1693   if (
mess.IsReading()) {
 
 1694      Error(
"Send", 
"cannot send a message used for reading");
 
 1709   if (
mess.GetCompressionLevel() > 0)
 
 1714   if (
mess.CompBuffer()) {
 
 1721   switch (
mess.What()) {
 
 
 1792   char *buf = 
new char[
len+
sizeof(
UInt_t)];
 
 
 1832   const void *buf = 0;
 
 1838   reqhdr.proof.int1 = kind;
 
 1839   reqhdr.proof.int2 = int2;
 
 1852         reqhdr.proof.int3 = int2;
 
 1855         buf = (
msg) ? (
const void *)
msg : buf;
 
 1863         buf = (
msg) ? (
const void *)
msg : buf;
 
 1868         reqhdr.proof.int3 = int3;
 
 1876         buf = (
msg) ? (
const void *)
msg : buf;
 
 1880         buf = (
msg) ? (
const void *)
msg : buf;
 
 1886            buf = (
const void *)
msg;
 
 1892         reqhdr.readbuf.len = int2;
 
 1894            Info(
"SendCoordinator", 
"kReadBuffer: old server (ver %d < 1003):" 
 1898         reqhdr.readbuf.int1 = int3;
 
 1900            Info(
"SendCoordinator", 
"kReadBuffer: file path undefined");
 
 1904         buf = (
const void *)
msg;
 
 1908         Info(
"SendCoordinator", 
"unknown message kind: %d", kind);
 
 
 1948   memset(&Request, 0, 
sizeof(Request) );
 
 1953   Request.
proof.int2 = int1;    
 
 1954   Request.
proof.int3 = int2;    
 
 1955   Request.
proof.dlen = 0;
 
 1959      fConn->
SendReq(&Request, (
const void *)0, 0, 
"SendUrgent");
 
 
 1997   const char *
cenv = 0;
 
 2070   if (
cadir.Length() > 0)
 
 2082   if (
ucert.Length() > 0)
 
 2086   if (
ukey.Length() > 0)
 
 2090   if (
upxy.Length() > 0)
 
 2098   if (
deplen.Length() > 0 &&
 
 2123      ::Info(
"TXSocket",
"(C) 2005 CERN TXSocket (XPROOF client) %s",
 
 2124            gROOT->GetVersion());
 
 
 2136      Info(
"Reconnect", 
"%p (c:%p, v:%d): trying to reconnect to %s (logid: %d)",
 
 2144         Info(
"Reconnect",
"%p: reconnection attempts explicitly disabled!", 
this);
 
 2146         Info(
"Reconnect",
"%p: server does not support reconnections (protocol: %d < 1005)",
 
 2161               Error(
"TXSocket", 
"create or attach failed (%s)",
 
 2172         Info(
"Reconnect", 
"%p (c:%p): attempt %s (logid: %d)", 
this, 
fConn,
 
 2176         Info(
"Reconnect", 
"%p (c:0x0): attempt failed", 
this);
 
 
 2263      Printf(
"TXSockPipe: problem initializing pipe for socket inputs");
 
 
 2286   if (!
IsValid() || !s) 
return -1;
 
 2290   {  std::lock_guard<std::recursive_mutex> lock(
fMutex);
 
 2296      if (write(
fPipe[1],(
const void *)&
c, 
sizeof(
Char_t)) < 1) {
 
 2304      Printf(
"TXSockPipe::Post: %s: %p: pipe posted (pending %d) (descriptor: %d)",
 
 
 2316   if (!
IsValid() || !s) 
return -1;
 
 2321   {  std::lock_guard<std::recursive_mutex> lock(
fMutex);
 
 2323         Printf(
"TXSockPipe::Clean: %s: can't read from pipe", 
fLoc.
Data());
 
 2333      Printf(
"TXSockPipe::Clean: %s: %p: pipe cleaned (pending %d) (descriptor: %d)",
 
 
 2347   if (!
IsValid() || !s) 
return -1;
 
 2351   {  std::lock_guard<std::recursive_mutex> lock(
fMutex);
 
 2361            Printf(
"TXSockPipe::Flush: %s: can't read from pipe", 
fLoc.
Data());
 
 2369      Printf(
"TXSockPipe::Flush: %s: %p: pipe flushed", 
fLoc.
Data(), s);
 
 
 2380   std::lock_guard<std::recursive_mutex> lock(
fMutex);
 
 2386      buf += 
Form(
" %p",o);
 
 
 2395   std::lock_guard<std::recursive_mutex> lock(
fMutex);
 
 
UShort_t net2host(UShort_t x)
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
unsigned long long ULong64_t
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void ErrorHandler(int level, const char *location, const char *fmt, std::va_list va)
General error handler function. It calls the user set error handler.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
const char *const kPROOF_WorkerIdleTO
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
R__EXTERN TSystem * gSystem
 
static XrdSysError eDest(0, "Proofx")
 
static XrdSysLogger eLogger
 
XrdOucTrace * XrdProofdTrace
 
#define kXPD_startprocess
 
#define NAME_CONNECTTIMEOUT
 
#define NAME_REQUESTTIMEOUT
 
#define NAME_FIRSTCONNECTMAXCNT
 
#define NAME_RECONNECTWAIT
 
#define NAME_CONNECTDOMAINDENY_RE
 
#define NAME_CONNECTDOMAINALLOW_RE
 
#define NAME_KEEPSOCKOPENIFNOTXRD
 
#define DFLT_RECONNECTWAIT
 
#define EnvPutInt(name, val)
 
#define EnvPutString(name, val)
 
R__EXTERN XrdOucTrace * XrdProofdTrace
 
const_iterator begin() const
 
const_iterator end() const
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
 
Int_t Compress()
Compress the message.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
Collectable string class.
 
Mother of all ROOT objects.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Int_t TryWait()
If the semaphore value is > 0 then decrement it and return 0.
 
Int_t Post()
Increment the value of the semaphore.
 
Int_t Wait()
If the semaphore value is > 0 then decrement it and carry on, else block, waiting on the condition un...
 
void SendStreamerInfos(const TMessage &mess)
Check if TStreamerInfo must be sent.
 
Bool_t RecvStreamerInfos(TMessage *mess)
Receive a message containing streamer infos.
 
static ULong64_t fgBytesRecv
 
Bool_t RecvProcessIDs(TMessage *mess)
Receive a message containing process ids.
 
Int_t GetCompressionLevel() const
 
static ULong64_t fgBytesSent
 
void SendProcessIDs(const TMessage &mess)
Check if TProcessIDs must be sent.
 
void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
Used to specify the compression level and algorithm: settings = 100 * algorithm + level.
 
Int_t Atoi() const
Return integer value of string.
 
const char * Data() const
 
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
 
TString & Remove(Ssiz_t pos)
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
static void ResetErrno()
Static function resetting system error number.
 
virtual int GetPid()
Get process id.
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host.
 
virtual void Setenv(const char *name, const char *value)
Set environment variable.
 
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
 
This class represents a WWW compatible URL.
 
Handler of asynchronous events for XProofD sockets.
 
virtual Bool_t HandleInput(const void *in=0)
Handler of asynchronous input events.
 
virtual Bool_t HandleError(const void *in=0)
Handler of asynchronous error events.
 
static void SetMemMax(Long64_t memmax)
Return the max allocated memory allowed.
 
static Long64_t GetMemMax()
Return the max allocated memory allowed.
 
static Long64_t BuffMem()
Return the currently allocated memory.
 
TXSockBuf(Char_t *bp=0, Int_t sz=0, Bool_t own=1)
constructor
 
static Long64_t fgBuffMem
 
void Resize(Int_t sz)
resize socket buffer
 
TXSockPipe(const char *loc="")
Constructor.
 
Int_t Flush(TSocket *s)
Remove any reference to socket 's' from the global pipe and ready-socket queue.
 
std::recursive_mutex fMutex
 
Int_t Clean(TSocket *s)
Read a byte to the global pipe to synchronize message pickup.
 
virtual ~TXSockPipe()
Destructor.
 
void DumpReadySock()
Dump content of the ready socket list.
 
Int_t Post(TSocket *s)
Write a byte to the global pipe to signal new availibility of new messages.
 
TXSocket * GetLastReady()
Return last ready socket.
 
TXSocketPingHandler(TXSocket *s, Int_t fd)
 
Bool_t ReadNotify()
Notify when something can be read from the descriptor associated with this handler.
 
Bool_t Notify()
Ping the socket.
 
High level handler of connections to XProofD.
 
void SetSessionID(Int_t id)
Set session ID to 'id'. If id < 0, disable also the asynchronous handler.
 
static std::list< TXSockBuf * > fgSQue
 
Int_t GetSessionID() const
Getter for session ID.
 
virtual Int_t GetClientID() const
 
void PostSemAll()
Wake up all threads waiting for at the semaphore (used by TXSlave)
 
Int_t GetLogConnID() const
Getter for logical connection ID.
 
Int_t GetOpenError() const
Getter for last error.
 
std::list< TXSockBuf * > fAQue
 
Int_t GetServType() const
Getter for server type.
 
static void SetLocation(const char *loc="")
Set location string.
 
TXSocket(const char *url, Char_t mode='M', Int_t psid=-1, Char_t ver=-1, const char *logbuf=0, Int_t loglevel=-1, TXHandler *handler=0)
Constructor Open the connection to a remote XrdProofd instance and start a PROOF session.
 
Int_t SendInterrupt(Int_t type)
Send urgent message (interrupt) to remote server Returns 0 or -1 in case of error.
 
void DoError(int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).
 
std::recursive_mutex fAMtx
 
Bool_t Create(Bool_t attach=kFALSE)
This method sends a request for creation of (or attachment to) a remote server application.
 
virtual Int_t GetClientIDSize() const
 
virtual ~TXSocket()
Destructor.
 
void PushBackSpare()
Release read buffer giving back to the spare list.
 
virtual UnsolRespProcResult ProcessUnsolicitedMsg(XrdClientUnsolMsgSender *s, XrdClientMessage *msg)
We are here if an unsolicited response comes from a logical conn The response comes in the form of an...
 
static void InitEnvs()
Init environment variables for XrdClient.
 
Bool_t Ping(const char *ord=0)
Ping functionality: contact the server to check its vitality.
 
std::recursive_mutex fIMtx
 
TXSockBuf * PopUpSpare(Int_t sz)
Pop-up a buffer of at least size bytes from the spare list If none is found either one is reallocated...
 
Int_t RecvRaw(void *buf, Int_t len, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
 
Int_t GetLowSocket() const
 
virtual void Close(Option_t *opt="")
Close connection.
 
Int_t PickUpReady()
Wait and pick-up next buffer from the asynchronous queue.
 
void SetInterrupt(Bool_t i=kTRUE)
 
void SendUrgent(Int_t type, Int_t int1, Int_t int2)
Send urgent message to counterpart; 'type' specifies the type of the message (see TXSocket::EUrgentMs...
 
TObjString * SendCoordinator(Int_t kind, const char *msg=0, Int_t int2=0, Long64_t l64=0, Int_t int3=0, const char *opt=0)
Send message to intermediate coordinator.
 
virtual Int_t Reconnect()
Try reconnection after failure.
 
Int_t SendRaw(const void *buf, Int_t len, ESendRecvOptions opt=kDontBlock)
Send a raw buffer of specified length.
 
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
 
Int_t Flush()
Flush the asynchronous queue.
 
void DisconnectSession(Int_t id, Option_t *opt="")
Disconnect a session.
 
Int_t GetInterrupt(Bool_t &forward)
Get latest interrupt level and reset it; if the interrupt has to be propagated to lower stages forwar...
 
virtual void SetClientID(Int_t)
 
Int_t Send(const TMessage &mess)
Send a TMessage object.
 
void CtrlC()
Interrupt the remote protocol instance.
 
Bool_t IsServProofd()
Return kTRUE if the remote server is a 'proofd'.
 
void PostMsg(Int_t type, const char *msg=0)
Post a message of type 'type' into the read messages queue.
 
void SetAWait(Bool_t w=kTRUE)
 
Bool_t IsValid() const
Getter for validity status.
 
void RemoteTouch()
Remote touch functionality: contact the server to proof our vitality.
 
XrdClientPhyConnection * fPhyConn
 
XrdClientMessage * SendReq(XPClientRequest *req, const void *reqData, char **answData, const char *CmdName, bool notifyerr=1)
SendReq tries to send a single command for a number of times.
 
virtual void SetAsync(XrdClientAbsUnsolMsgHandler *uh, XrdProofConnSender_t=0, void *=0)
Set handler of unsolicited responses.
 
bool IsValid() const
Test validity of this connection.
 
virtual void Close(const char *opt="")
Close connection.
 
short GetSessionID() const
 
void SetSID(kXR_char *sid)
Set our stream id, to match against that one in the server's response.
 
XReqErrorType LowWrite(XPClientRequest *, const void *, int)
Send request to server (NB: req is marshalled at this point, so we need also the plain reqDataLen)
 
const char * GetLastErr()
 
int GetLowSocket()
Return the socket descriptor of the underlying connection.
 
void ReConnect()
Perform a reconnection attempt when a connection is not valid any more.
 
static void SetRetryParam(int maxtry=5, int timewait=2)
Change values of the retry control parameters, numer of retries and wait time between attempts (in se...
 
void SetInterrupt()
Interrupt the underlying socket.
 
int clientMarshall(XPClientRequest *str)
This function applies the network byte order on those parts of the 16-bytes buffer,...
 
struct ClientRequestHdr header
 
struct XPClientProofRequest proof
 
struct XPClientInterruptRequest interrupt
 
struct XPClientSendRcvRequest sendrcv