|
|
| Line 1: |
Line 1: |
| − | [[Category:Grid computing]] | + | #REDIRECT[[Swestore Documentation Moved]] |
| − | [[Category:SweGrid user guide]]
| |
| − | [[Getting started with SweGrid|< Getting started with SweGrid]]
| |
| − | == Libraries and include files ==
| |
| − | | |
| − | '''Include files'''
| |
| − | | |
| − | "/usr/include/glibmm-2.4"
| |
| − | "/usr/lib/sigc++-2.0/include"
| |
| − | "/usr/lib/glib-2.0/include"
| |
| − | "/usr/include/glib-2.0"
| |
| − | "/usr/lib/glibmm-2.4/include"
| |
| − | "/usr/include/glib-2.0"
| |
| − | "/usr/include/sigc++-2.0"
| |
| − | "/usr/include/libxml2"
| |
| − | | |
| − | '''Libraries'''
| |
| − | | |
| − | arcclient
| |
| − | arccommon
| |
| − | arcdata2
| |
| − | arccredential
| |
| − | glibmm-2.4
| |
| − | sigc-2.0
| |
| − | pthread
| |
| − | | |
| − | == Listing files ==
| |
| − | | |
| − | <pre>// -*- indent-tabs-mode: nil -*-
| |
| − | | |
| − | #ifdef HAVE_CONFIG_H
| |
| − | #include <config.h>
| |
| − | #endif
| |
| − | | |
| − | #define VERSION "JL"
| |
| − | | |
| − | #include <iostream>
| |
| − | #include <string>
| |
| − | #include <list>
| |
| − | | |
| − | #include <arc/ArcLocation.h>
| |
| − | #include <arc/Logger.h>
| |
| − | #include <arc/StringConv.h>
| |
| − | #include <arc/URL.h>
| |
| − | #include <arc/UserConfig.h>
| |
| − | #include <arc/credential/Credential.h>
| |
| − | #include <arc/data/DataHandle.h>
| |
| − | #include <arc/data/DataPoint.h>
| |
| − | #include <arc/OptionParser.h>
| |
| − | | |
| − | static Arc::Logger logger(Arc::Logger::getRootLogger(), "arcls");
| |
| − | | |
| − | int main(int argc, char **argv) {
| |
| − |
| |
| − | // Setup logging
| |
| − | | |
| − | Arc::LogStream logcerr(std::cerr);
| |
| − | logcerr.setFormat(Arc::ShortFormat);
| |
| − | Arc::Logger::getRootLogger().addDestination(logcerr);
| |
| − | Arc::Logger::getRootLogger().setThreshold(Arc::WARNING);
| |
| − |
| |
| − | // Setup user configuration
| |
| − |
| |
| − | Arc::UserConfig usercfg("/home/jonas/.arc/client.conf", Arc::initializeCredentialsType::SkipCredentials);
| |
| − | if (!usercfg) {
| |
| − | logger.msg(Arc::ERROR, "Failed configuration initialization");
| |
| − | return 1;
| |
| − | }
| |
| − | usercfg.UtilsDirPath(Arc::UserConfig::ARCUSERDIRECTORY);
| |
| − |
| |
| − | // Setup URL
| |
| − | | |
| − | std::string urlString = "srm://srm.swegrid.se/ops";
| |
| − | Arc::URL url = urlString;
| |
| − |
| |
| − | // Check for secure protocol
| |
| − |
| |
| − | if (url.IsSecureProtocol()) {
| |
| − | usercfg.InitializeCredentials();
| |
| − | if (!Arc::Credential::IsCredentialsValid(usercfg)) {
| |
| − | logger.msg(Arc::ERROR, "Unable to list content of %s: No valid credentials found", url.str());
| |
| − | return false;
| |
| − | }
| |
| − | }
| |
| − |
| |
| − | // Create a data handle
| |
| − |
| |
| − | Arc::DataHandle dataHandle(url, usercfg);
| |
| − | | |
| − | if (!dataHandle) {
| |
| − | logger.msg(Arc::ERROR, "Unsupported URL given");
| |
| − | return false;
| |
| − | }
| |
| − | dataHandle->SetSecure(false);
| |
| − |
| |
| − | // Check access
| |
| − | | |
| − | if(true) {
| |
| − | std::cout << urlString << " - ";
| |
| − | if(dataHandle->Check()) {
| |
| − | std::cout << "passed" << std::endl;
| |
| − | } else {
| |
| − | std::cout << "failed" << std::endl;
| |
| − | }
| |
| − | }
| |
| − |
| |
| − | // What information to retrieve
| |
| − |
| |
| − | Arc::DataPoint::DataPointInfoType verb = (Arc::DataPoint::DataPointInfoType)
| |
| − | (Arc::DataPoint::INFO_TYPE_MINIMAL |
| |
| − | Arc::DataPoint::INFO_TYPE_NAME |
| |
| − | Arc::DataPoint::INFO_TYPE_STRUCT |
| |
| − | Arc::DataPoint::INFO_TYPE_ALL |
| |
| − | Arc::DataPoint::INFO_TYPE_TYPE |
| |
| − | Arc::DataPoint::INFO_TYPE_TIMES |
| |
| − | Arc::DataPoint::INFO_TYPE_CONTENT |
| |
| − | Arc::DataPoint::INFO_TYPE_ACCESS);
| |
| − |
| |
| − | Arc::DataStatus res;
| |
| − | Arc::FileInfo file;
| |
| − | std::list<Arc::FileInfo> files;
| |
| − |
| |
| − | // Do file listing
| |
| − |
| |
| − | res = dataHandle->List(files, verb);
| |
| − |
| |
| − | // Check for errors
| |
| − |
| |
| − | if (!res) {
| |
| − | if (files.size() == 0) {
| |
| − | logger.msg(Arc::ERROR, "Failed listing files");
| |
| − | if (res.Retryable())
| |
| − | logger.msg(Arc::ERROR, "This seems like a temporary error, please try again later");
| |
| − | return false;
| |
| − | }
| |
| − | logger.msg(Arc::INFO, "Warning: "
| |
| − | "Failed listing files but some information is obtained");
| |
| − | }
| |
| − |
| |
| − | // Show files
| |
| − |
| |
| − | std::cout << "<Name>";
| |
| − | std::cout << " <Type>";
| |
| − | std::cout << " <Size>";
| |
| − | std::cout << " <Creation>";
| |
| − | std::cout << " <Validity>";
| |
| − | std::cout << " <CheckSum>";
| |
| − | std::cout << " <Latency>";
| |
| − |
| |
| − |
| |
| − | for (std::list<Arc::FileInfo>::iterator i = files.begin(); i != files.end(); i++)
| |
| − | {
| |
| − | std::cout << i->GetName();
| |
| − | switch (i->GetType()) {
| |
| − | case Arc::FileInfo::file_type_file:
| |
| − | std::cout << " file";
| |
| − | break;
| |
| − | | |
| − | case Arc::FileInfo::file_type_dir:
| |
| − | std::cout << " dir";
| |
| − | break;
| |
| − | | |
| − | default:
| |
| − | std::cout << " unknown";
| |
| − | break;
| |
| − | }
| |
| − |
| |
| − | if (i->CheckSize())
| |
| − | std::cout << " " << i->GetSize();
| |
| − | else
| |
| − | std::cout << " (n/a)";
| |
| − | if (i->CheckCreated())
| |
| − | std::cout << " " << i->GetCreated();
| |
| − | else
| |
| − | std::cout << " (n/a)";
| |
| − | if (i->CheckValid())
| |
| − | std::cout << " " << i->GetValid();
| |
| − | else
| |
| − | std::cout << " (n/a)";
| |
| − | if (i->CheckCheckSum())
| |
| − | std::cout << " " << i->GetCheckSum();
| |
| − | else
| |
| − | std::cout << " (n/a)";
| |
| − | if (i->CheckLatency())
| |
| − | std::cout << " " << i->GetLatency();
| |
| − | else
| |
| − | std::cout << " (n/a)";
| |
| − |
| |
| − | std::cout << std::endl;
| |
| − |
| |
| − | // Show urls
| |
| − |
| |
| − | for (std::list<Arc::URL>::const_iterator u = i->GetURLs().begin();
| |
| − | u != i->GetURLs().end(); u++)
| |
| − | std::cout << "\t" << *u << std::endl;
| |
| − |
| |
| − | // Show metadata
| |
| − |
| |
| − | //std::map<std::string, std::string> md = i->GetMetaData();
| |
| − | //for (std::map<std::string, std::string>::iterator mi = md.begin(); mi != md.end(); ++mi)
| |
| − | // std::cout<<mi->first<<":"<<mi->second<<std::endl;
| |
| − | }
| |
| − | }
| |
| − | </pre>
| |