// @(#)root/netx:$Name: $:$Id: TXUrl.h,v 1.5 2005/05/08 13:49:31 rdm Exp $ // Author: Alvise Dorigo, Fabrizio Furano /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TXUrl #define ROOT_TXUrl #include #ifndef ROOT_TUrl #include "TUrl.h" #endif #ifndef ROOT_TRandom #include "TRandom.h" #endif #ifndef ROOT_TString #include "TString.h" #endif #define PROTO "root" typedef std::vector UrlArray; class TXUrl { private: UrlArray fUrlArray, fTmpUrlArray; TString fPathName; Bool_t fIsValid; TRandom fRndgen; void CheckPort(TString &list); // Takes a sequence of hostname and resolves it into a vector of TUrl void ConvertDNSAliases(UrlArray&, TString, TString); Bool_t ConvertSingleDNSAlias(UrlArray&, TString, TString); public: TXUrl(TString); virtual ~TXUrl(); // Returns the final resolved list of servers TString GetServers() { TString s; for ( Int_t i = 0; i < (Int_t)fUrlArray.size(); i++ ) s += fUrlArray[i]->GetHost(); return s; } // Gets the subsequent Url, the one after the last given TUrl *GetNextUrl(); // From the remaining urls we pick a random one. Without reinsert. // i.e. while there are not considered urls, never pick an already seen one TUrl *GetARandomUrl(); void Rewind(void); void ShowUrls(void); // Returns the number of urls Int_t Size(void) { return fUrlArray.size(); } // Returns the pathfile extracted from the CTOR's argument const char *GetFile(void) { return fPathName.Data(); } Bool_t IsValid(void) { return fIsValid; } // Return kFALSE if the CTOR's argument is malformed ClassDef(TXUrl, 0); //A container for multiple urls. }; #endif