77 :
TNamed(addr.GetHostName(), service), fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
104 gROOT->GetListOfSockets()->Add(
this);
122 :
TNamed(addr.GetHostName(),
""), fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
150 gROOT->GetListOfSockets()->Add(
this);
165 :
TNamed(host, service), fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
191 gROOT->GetListOfSockets()->Add(
this);
210 :
TNamed(
TUrl(url).GetHost(),
""), fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
241 gROOT->GetListOfSockets()->Add(
this);
253 fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
276 gROOT->GetListOfSockets()->Add(
this);
303 gROOT->GetListOfSockets()->Add(
this);
314 fCompress(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
337 gROOT->GetListOfSockets()->Add(
this);
364 gROOT->GetListOfSockets()->Add(
this);
396 gROOT->GetListOfSockets()->Remove(
this);
467 if ((nsent =
Send(mess)) < 0)
486 if ((nsent =
Send(mess)) < 0)
505 if ((nsent =
Send(mess)) < 0)
508 return nsent -
sizeof(
Int_t);
528 Error(
"Send",
"cannot send a message used for reading");
546 char *mbuf = mess.
Buffer();
580 if (strncmp(buf,
"ok", 2)) {
581 Error(
"Send",
"bad acknowledgement");
590 return nsent -
sizeof(
UInt_t);
607 if ((nsent =
Send(mess)) < 0)
660 minilist =
new TList();
662 Info(
"SendStreamerInfos",
"sending TStreamerInfo: %s, version = %d",
672 if (
Send(messinfo) < 0)
673 Warning(
"SendStreamerInfos",
"problems sending TStreamerInfo's ...");
690 for (
Int_t ipid = 0; ipid < npids; ipid++) {
704 minilist =
new TList();
706 Info(
"SendProcessIDs",
"sending TProcessID: %s", pid->
GetTitle());
713 if (
Send(messpid) < 0)
714 Warning(
"SendProcessIDs",
"problems sending TProcessID's ...");
731 if ((
n =
Recv(str, max, kind)) <= 0) {
740 Error(
"Recv",
"got message of wrong kind (expected %d, got %d)",
760 if ((
n =
Recv(mess)) <= 0) {
793 if ((
n =
Recv(mess)) <= 0) {
830 if (
n == 0 ||
n == -5) {
840 char *buf =
new char[len+
sizeof(
UInt_t)];
842 if (
n == 0 ||
n == -5) {
866 char ok[2] = {
'o',
'k' };
901 if (length == 0)
return 0;
906 if (
n == 0 ||
n == -5) {
937 Bool_t isstl = element && strcmp(
"This",element->
GetName())==0;
941 Info(
"RecvStreamerInfos",
"importing TStreamerInfo: %s, version = %d",
951 Bool_t isstl = element && strcmp(
"This",element->
GetName())==0;
955 Info(
"RecvStreamerInfos",
"importing TStreamerInfo: %s, version = %d",
982 TIter nextpid(pidslist);
993 Info(
"RecvProcessIDs",
"importing TProcessID: %s", pid->
GetTitle());
1060 if (level < 0) level = 0;
1061 if (level > 99) level = 99;
1112 }
else if (sproto.
Contains(
"rootd")) {
1114 }
else if (sproto.
Contains(
"proofd")) {
1119 if (!strncasecmp(opt,
"S", 1)) {
1120 if (
Send(
"slave") < 0)
return rc;
1121 }
else if (!strncasecmp(opt,
"M", 1)) {
1122 if (
Send(
"master") < 0)
return rc;
1125 "called by TSlave: unknown option '%c' %s",
1126 opt[0],
" - assuming Slave");
1127 if (
Send(
"slave") < 0)
return rc;
1131 Info(
"Authenticate",
"Local protocol: %s",sproto.
Data());
1177 gROOT->GetPluginManager()->FindHandler(
"TVirtualAuth", alib);
1178 if (!
h ||
h->LoadPlugin() != 0) {
1179 Error(
"Authenticate",
1180 "could not load properly %s authentication plugin", alib.
Data());
1187 Error(
"Authenticate",
"could not instantiate the interface class");
1191 Info(
"Authenticate",
"class for '%s' authentication loaded", alib.
Data());
1195 Error(
"Authenticate",
1196 "authentication attempt failed for %s@%s", user, host.
Data());
1206 Warning(
"Authenticate",
"problem sending kROOTD_USER (%s,%s)", u->
fUser.
Data(), user);
1210 Warning(
"Authenticate",
"problem sending kROOTD_USER (-1,%s)", user);
1216 if (
Recv(stat, kind) > 0) {
1227 Info(
"Authenticate",
"no authentication required remotely");
1233 Info(
"Authenticate",
"expected message type %d, received %d",
1238 Info(
"Authenticate",
"error receiving message");
1303 if (
proto.EndsWith(
"up") ||
proto.EndsWith(
"ug")) {
1307 }
else if (
proto.EndsWith(
"s") ||
proto.EndsWith(
"k") ||
1308 proto.EndsWith(
"g") ||
proto.EndsWith(
"h")) {
1315 if (((
proto.EndsWith(
"p") || size > 1) &&
1316 !
proto.BeginsWith(
"proof")) ||
1317 proto.BeginsWith(
"root") ) {
1319 if (
proto.EndsWith(
"p"))
1324 if (!
proto.BeginsWith(
"sock") && !
proto.BeginsWith(
"proof") &&
1325 !
proto.BeginsWith(
"root"))
1340 if (opensock && opensock->
IsValid())
1346 if (sock && sock->
IsValid()) {
1369 if (opensock && opensock->
IsValid())
1440 if (
TString(
TUrl(url).GetProtocol()).Length() > 0) {
1445 if (!user || strlen(user) > 0) {
1453 eurl += (port > 0 ? port : 0);
UShort_t net2host(UShort_t x)
R__EXTERN const char * gRootdErrStr[]
unsigned long long ULong64_t
TVirtualMutex * gSocketAuthMutex
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD2(mutex)
Bool_t TestBitNumber(UInt_t bitnumber) const
void SetBitNumber(UInt_t bitnumber, Bool_t value=kTRUE)
TObject * ReadObject(const TClass *cl) override
Read object from I/O buffer.
void WriteString(const char *s) override
Write string to I/O buffer.
char * ReadString(char *s, Int_t max) override
Read string from I/O buffer.
void WriteObject(const TObject *obj, Bool_t cacheReuse=kTRUE) override
Write object to I/O buffer.
virtual Int_t GetEntries() const
This class represents an Internet Protocol (IP) address.
const char * GetHostName() const
virtual void Add(TObject *obj)
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TObjLink * FirstLink() const
virtual void Clear(Option_t *option="")
Remove all objects from the list.
void SetLength() const
Set the message length at the beginning of the message buffer.
Bool_t TestBitNumber(UInt_t bitnumber) const
char * CompBuffer() const
Int_t Compress()
Compress the message.
Int_t GetCompressionLevel() const
void SetWhat(UInt_t what)
Using this method one can change the message type a-posteriori In case you OR "what" with kMESS_ACK,...
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Int_t IndexOf(const TObject *obj) const
Int_t GetEntries() const
Return the number of objects in array (i.e.
TObject * UncheckedAt(Int_t i) const
TObject * At(Int_t idx) const
Wrapper around a TObject so it can be stored in a TList.
TObject * GetObject() const
Collectable string class.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual UInt_t GetUniqueID() const
Return the unique object id.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
A TProcessID identifies a ROOT job in a unique way in time and space.
Int_t IncrementCount()
Increase the reference count to this object.
static TObjArray * GetPIDs()
static: returns array of TProcessIDs
Option_t * GetOption() const
virtual Int_t SetOption(ESockOptions opt, Int_t val)
Set socket options.
Int_t GetErrorCode() const
Returns error code.
TVirtualMutex * fLastUsageMtx
void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
See comments for function SetCompressionSettings.
void SendStreamerInfos(const TMessage &mess)
Check if TStreamerInfo must be sent.
void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
See comments for function SetCompressionSettings.
static ULong64_t GetSocketBytesSent()
Get total number of bytes sent via all sockets.
Bool_t RecvStreamerInfos(TMessage *mess)
Receive a message containing streamer infos.
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
static Int_t GetClientProtocol()
Static method returning supported client protocol.
Bool_t Authenticate(const char *user)
Authenticated the socket with specified user.
TInetAddress fLocalAddress
static ULong64_t fgBytesRecv
virtual void Close(Option_t *opt="")
Close the socket.
void MarkBrokenConnection()
Close the socket and mark as due to a broken connection.
Bool_t RecvProcessIDs(TMessage *mess)
Receive a message containing process ids.
TInetAddress GetInetAddress() const
Int_t GetCompressionLevel() const
virtual Int_t RecvRaw(void *buffer, Int_t length, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
static ULong64_t fgBytesSent
virtual Int_t SendRaw(const void *buffer, Int_t length, ESendRecvOptions opt=kDefault)
Send a raw buffer of specified length.
void SendProcessIDs(const TMessage &mess)
Check if TProcessIDs must be sent.
static Int_t fgClientProtocol
virtual TInetAddress GetLocalInetAddress()
Return internet address of local host to which the socket is bound.
TSecContext * fSecContext
virtual Int_t Select(Int_t interest=kRead, Long_t timeout=-1)
Waits for this socket to change status.
virtual Int_t GetLocalPort()
Return the local port # to which the socket is bound.
static TSocket * CreateAuthSocket(const char *user, const char *host, Int_t port, Int_t size=0, Int_t tcpwindowsize=-1, TSocket *s=0, Int_t *err=0)
Creates a socket or a parallel socket and authenticates to the remote server specified in 'url' on re...
static void NetError(const char *where, Int_t error)
Print error string depending on error code.
virtual Int_t SendObject(const TObject *obj, Int_t kind=kMESS_OBJECT)
Send an object.
void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
Used to specify the compression level and algorithm: settings = 100 * algorithm + level.
virtual Bool_t IsValid() const
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
virtual Bool_t IsAuthenticated() const
static ULong64_t GetSocketBytesRecv()
Get total number of bytes received via all sockets.
Describe Streamer information for one class version.
TObjArray * GetElements() const
void BuildCheck(TFile *file=0)
Check if built and consistent with the class dictionary.
Int_t GetClassVersion() const
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
TString & Remove(Ssiz_t pos)
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual int GetServiceByName(const char *service)
Get port # of internet service.
virtual TInetAddress GetSockName(int sock)
Get Internet Protocol (IP) address of host and port #.
static void ResetErrno()
Static function resetting system error number.
virtual char * GetServiceByPort(int port)
Get name of internet service.
virtual int SetSockOpt(int sock, int kind, int val)
Set socket option.
virtual TInetAddress GetPeerName(int sock)
Get Internet Protocol (IP) address of remote host and port #.
virtual int OpenConnection(const char *server, int port, int tcpwindowsize=-1, const char *protocol="tcp")
Open a connection to another host.
virtual int GetSockOpt(int sock, int kind, int *val)
Get socket option.
virtual int RecvRaw(int sock, void *buffer, int length, int flag)
Receive exactly length bytes into buffer.
virtual Int_t Select(TList *active, Long_t timeout)
Select on active file descriptors (called by TMonitor).
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host.
virtual int SendRaw(int sock, const void *buffer, int length, int flag)
Send exactly length bytes from buffer.
virtual void CloseConnection(int sock, Bool_t force=kFALSE)
Close socket connection.
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
This class represents a WWW compatible URL.
const char * GetProtocol() const
virtual TSecContext * Authenticate(TSocket *, const char *host, const char *user, Option_t *options)=0
This class implements a mutex interface.
static constexpr double s
@ kUndefined
Undefined compression algorithm (must be kept the last of the list in case a new algorithm is added).