/[PAMELA software]/yodaUtility/YFile.cpp
ViewVC logotype

Annotation of /yodaUtility/YFile.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Sun Apr 30 11:08:14 2006 UTC (18 years, 7 months ago) by kusanagi
Branch point for: MAIN
Initial revision

1 kusanagi 1.1 #include <log4cxx/logger.h>
2     #include <YFile.h>
3    
4     using namespace log4cxx;
5     using namespace yngn;
6     using namespace yngn::util;
7     using namespace yngn::YException;
8    
9     TFile *YFile::yfile = 0;
10     static LoggerPtr logger = Logger::getLogger(_T("yngn.util.YFile"));
11    
12     /**
13     * Open/copy a file from remote (rfio) or local path.
14     * This solution have been implemented mainly because the CASTOR system could have performance problem in
15     * case of interactive file opening: the use of the "copy" flag, allow the minimum change for the existing
16     * softwares.
17     * @param url Path to the database to be used.
18     * @param options Path to the database to be used.
19     * @param copy Flag to define if the file have to be copied on a specified path or not. Default si false.
20     * @param path Where to copy the file. Default is local.
21     */
22     TFile* YFile::Open(const char *url, const char* options, bool copy, const char *path) throw (YNotExistingFileException, YSystemCommandException) {
23     const char *name;
24     if ((copy) && (strlen(strstr(url, "rfio:/")) > 0)){
25     char cmd[999];
26     //Here do the copy of the remote file
27     if (copy){
28     strcpy (cmd,"rfcp ");
29     strcat (cmd,url+5);
30     strcat (cmd," ");
31     strcat (cmd, path);
32     if (system(cmd) == 0) throw YSystemCommandException(cmd);
33     name = strrchr(url,'/');
34     }
35     } else {
36     name = url;
37     }
38     yfile = TFile::Open(name, options);
39     if (yfile == 0) throw YNotExistingFileException(url);
40     return yfile;
41     }

  ViewVC Help
Powered by ViewVC 1.1.23