#ifndef ROOT_TNetFile #define ROOT_TNetFile //+SEQ,CopyRight,T=NOINCLUDE. ////////////////////////////////////////////////////////////////////////// // // // TNetFile // // // // A TNetFile is like a normal TFile except that it reads and writes // // its data via a rootd server. // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TFile //*KEEP,TFile. #include "TFile.h" //*KEND. #endif #ifndef ROOT_TUrl //*KEEP,TUrl,T=C++. #include "TUrl.h" //*KEND. #endif #ifndef ROOT_MessageTypes //*KEEP,MessageTypes,T=C++. #include "MessageTypes.h" //*KEND. #endif class TSocket; class TNetFile : public TFile { private: TUrl fUrl; //URL of file TString fUser; //remote user name Seek_t fOffset; //seek offset TSocket *fSocket; //connection to rootd server static char *fgUser; static char *fgPasswd; TNetFile() : fUrl("dummy") { fSocket = 0; } Bool_t Authenticate(); Bool_t CheckNetrc(char *&user, char *&passwd); void Init(Bool_t create); void Print(Option_t *option); void PrintError(const char *where, Int_t err); Int_t Recv(Int_t &status, EMessageTypes &kind); char *GetUser(); char *GetPasswd(); public: TNetFile(const char *url, Option_t *option="", const Text_t *ftitle="", Int_t compress=1); virtual ~TNetFile(); void Close(Option_t *option=""); // *MENU* void Flush(); Bool_t IsOpen() const; Bool_t ReadBuffer(char *buf, int len); Bool_t WriteBuffer(const char *buf, int len); void Seek(Seek_t offset, ERelativeTo pos = kBeg); static void SetUser(const char *user); static void SetPasswd(const char *passwd); ClassDef(TNetFile,1) //A ROOT file that reads/writes via a rootd server }; #endif