Print

Print



  Hi Fabrizio,


> >>Do you know of any backwards compatibility issues which will make it 
> >>difficult for a TXNetSystem to be backwards compatible with rootd (using 
> >>TNetSystem)?
> > 
> > 
> >   I don't think the case will be much different from the the TXNetFile
> >   one. It should be possible to use what we already use for the optimized
> >   TXNetFile->TNetFile fallback, avoiding to open twice the connection.
> >   Server-side should be ok, client-side we probably need an additional 
> >   constructor to initialize the object using an open connection.
> > 
> > 
> 
>   For this, I believe that this could be unnecessary. Since the 
> connection manager is a shared singleton, the choice of the right 
> connection (if available) is done for free by it for any instance of a 
> client (both admin and data access). Or did I miss something?
 
  Of course TXNetFile and TXNetSystem will be able to share the same physical 
  connection.
  The problem is what happens when these two classes realize that are talking
  to rootd instead of xrootd; in the first versions of the client the connection
  was closed and a completely new instance of TNetFile (a second connection)
  was created. This could be (was) quite heavy, so we optimized things in such
  a way that the creation of TNetFile can be done using the open connection. 
  
  Gerri



> > On Mon, 7 Mar 2005, Peter Elmer wrote:
> > 
> > 
> >>  Hi Fons and Gerri,
> >>
> >>  I found another instance of a hard-coded check on "root://" in 
> >>TSystem::FindHelper(...), namely:
> >>
> >>   // create new helper
> >>   TRegexp re("^root.*:");  // also roots, rootk, etc
> >>   TString pname = path;
> >>   if (pname.Index(re) != kNPOS) {
> >>      // rootd daemon ...
> >>      helper = new TNetSystem(path);
> >>   } else if (!strcmp(url.GetProtocol(), "http") &&
> >>                     pname.BeginsWith("http")) {
> >>      // http ...
> >>
> >>   } else if ((h = gROOT->GetPluginManager()->FindHandler("TSystem", path))) {
> >>      if (h->LoadPlugin() == -1)
> >>         return 0;
> >>      helper = (TSystem*) h->ExecPlugin(0);
> >>   }
> >>
> >>This should probably be changed to use the PluginManager to find TNetSystem.
> >>It looks like most (all?) of the functionality is there in the XrdClientAdmin 
> >>so presumably a "TXNetSystem" can be made. Fabrizio, what do you think?
> >>   
> >>  Presumably this can be done as part of the merge of TXNetFile with the posix 
> >>client. Do you know of any backwards compatibility issues which will make it 
> >>difficult for a TXNetSystem to be backwards compatible with rootd (using 
> >>TNetSystem)?
> >>
> >>                                   Pete
> >>
> >>-------------------------------------------------------------------------
> >>Peter Elmer     E-mail: [log in to unmask]      Phone: +41 (22) 767-4644
> >>Address: CERN Division PPE, Bat. 32 2C-14, CH-1211 Geneva 23, Switzerland
> >>-------------------------------------------------------------------------
> >>
>