Skip to content
Snippets Groups Projects
Commit bf014e1e authored by Daniele Kruse's avatar Daniele Kruse
Browse files

WIP for xrdcp handling

parent df09ff3f
Branches
Tags
No related merge requests found
...@@ -6,3 +6,6 @@ include_directories (${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR} ${CMAKE ...@@ -6,3 +6,6 @@ include_directories (${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR} ${CMAKE
add_executable (CTA_cmd CTACmdMain.cpp CTACmd.cpp) add_executable (CTA_cmd CTACmdMain.cpp CTACmd.cpp)
target_link_libraries (CTA_cmd ${XROOTD_XRDCL_LIB}) target_link_libraries (CTA_cmd ${XROOTD_XRDCL_LIB})
add_executable (CTA_copycmd CTACopyCmdMain.cpp CTACopyCmd.cpp)
target_link_libraries (CTA_copycmd ${XROOTD_XRDCL_LIB})
#include "CTACopyCmd.hpp"
#include "XrdCl/XrdClFileSystem.hh"
#include "XrdCl/XrdClCopyProcess.hh"
#include "XrdOuc/XrdOucString.hh"
#include <getopt.h>
#include <iostream>
#include <string.h>
//------------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------------
CTACopyCmd::CTACopyCmd() throw(): m_programName("CTA_copycmd") {
}
//------------------------------------------------------------------------------
// usage
//------------------------------------------------------------------------------
void CTACopyCmd::usage(std::ostream &os) const throw() {
os <<
"Usage:\n"
"\t" << m_programName << " ls <directory_name>\n";
}
//------------------------------------------------------------------------------
// main
//------------------------------------------------------------------------------
int CTACopyCmd::main(const int argc, char **argv) throw() {
// if(argc < 2) {
// usage(std::cerr);
// return 1;
// }
int rc = 1;
// Execute the command
try {
rc = executeCommand(argc, argv);
} catch(std::exception &ex) {
std::cerr << std::endl << "Failed to execute the archive command:\n\n" << ex.what() << std::endl;
return 1;
}
return rc;
}
//------------------------------------------------------------------------------
// executeCommand
//------------------------------------------------------------------------------
int CTACopyCmd::executeCommand(const int argc, char **argv) {
XrdCl::PropertyList properties;
properties.Set("source", "/afs/cern.ch/user/d/dkruse/vmgrlisttape.txt2");
properties.Set("target", "/afs/cern.ch/user/d/dkruse/vmgrlisttape.txt3");
XrdCl::PropertyList results;
XrdCl::CopyProcess copyProcess;
XrdCl::XRootDStatus status = copyProcess.AddJob(properties, &results);
if(status.IsOK())
{
std::cout << "Job added" << std::endl;
}
else
{
std::cout << "Job adding error" << std::endl;
}
status = copyProcess.Prepare();
if(status.IsOK())
{
std::cout << "Job prepared" << std::endl;
}
else
{
std::cout << "Job preparing error" << std::endl;
}
XrdCl::CopyProgressHandler copyProgressHandler;
status = copyProcess.Run(&copyProgressHandler);
if(status.IsOK())
{
std::cout << "Copy OK" << std::endl;
}
else
{
std::cout << "Copy error" << std::endl;
}
return 0;
}
#pragma once
#include <exception>
#include <istream>
#include <ostream>
#include <string>
/**
* Class implementing the business logic of the archive command-line tool.
*/
class CTACopyCmd {
public:
/**
* Constructor.
*/
CTACopyCmd() throw();
/**
* The entry function of the command.
*
* @param argc The number of command-line arguments.
* @param argv The command-line arguments.
*/
int main(const int argc, char **argv) throw();
protected:
/**
* The name of the program.
*/
const std::string m_programName;
/**
* Writes the command-line usage message of to the specified output stream.
*
* @param os Output stream to be written to.
*/
void usage(std::ostream &os) const throw();
/**
* Sends the archive request and waits for the reply
*
* @param argc The number of command-line arguments.
* @param argv The command-line arguments.
* @return the return code
*/
int executeCommand(const int argc, char **argv) ;
}; // class CTACopyCmd
#include "CTACopyCmd.hpp"
//------------------------------------------------------------------------------
// main
//------------------------------------------------------------------------------
int main(int argc, char **argv) {
CTACopyCmd command;
return command.main(argc, argv);
}
...@@ -4,5 +4,5 @@ list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) ...@@ -4,5 +4,5 @@ list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package (xrootd REQUIRED) find_package (xrootd REQUIRED)
include_directories (${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}) include_directories (${XROOTD_INCLUDE_DIR} ${XROOTD_PRIVATE_INCLUDE_DIR} ${CMAKE_SOURCE_DIR})
add_library (XrdProFst MODULE XrdProFilesystem.cpp ParsedRequest.cpp) add_library (XrdProFst MODULE XrdProFilesystem.cpp XrdProFile.cpp ParsedRequest.cpp)
target_link_libraries (XrdProFst ctaclient) target_link_libraries (XrdProFst ctaclient)
\ No newline at end of file
#include "XrdProFile.hpp"
//------------------------------------------------------------------------------
// open
//------------------------------------------------------------------------------
int XrdProFile::open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// close
//------------------------------------------------------------------------------
int XrdProFile::close(){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// fctl
//------------------------------------------------------------------------------
int XrdProFile::fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// FName
//------------------------------------------------------------------------------
const char* XrdProFile::FName(){
error.setErrInfo(ENOTSUP, "Not supported.");
return NULL;
}
//------------------------------------------------------------------------------
// getMmap
//------------------------------------------------------------------------------
int XrdProFile::getMmap(void **Addr, off_t &Size){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// read
//------------------------------------------------------------------------------
XrdSfsXferSize XrdProFile::read(XrdSfsFileOffset offset, XrdSfsXferSize size){
error.setErrInfo(ENOTSUP, "Not supported.");
return 0;
}
//------------------------------------------------------------------------------
// read
//------------------------------------------------------------------------------
XrdSfsXferSize XrdProFile::read(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize size){
error.setErrInfo(ENOTSUP, "Not supported.");
return 0;
}
//------------------------------------------------------------------------------
// read
//------------------------------------------------------------------------------
XrdSfsXferSize XrdProFile::read(XrdSfsAio *aioparm){
error.setErrInfo(ENOTSUP, "Not supported.");
return 0;
}
//------------------------------------------------------------------------------
// write
//------------------------------------------------------------------------------
XrdSfsXferSize XrdProFile::write(XrdSfsFileOffset offset, const char *buffer, XrdSfsXferSize size){
error.setErrInfo(ENOTSUP, "Not supported.");
return 0;
}
//------------------------------------------------------------------------------
// write
//------------------------------------------------------------------------------
int XrdProFile::write(XrdSfsAio *aioparm){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// stat
//------------------------------------------------------------------------------
int XrdProFile::stat(struct stat *buf){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// sync
//------------------------------------------------------------------------------
int XrdProFile::sync(){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// sync
//------------------------------------------------------------------------------
int XrdProFile::sync(XrdSfsAio *aiop){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// truncate
//------------------------------------------------------------------------------
int XrdProFile::truncate(XrdSfsFileOffset fsize){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// getCXinfo
//------------------------------------------------------------------------------
int XrdProFile::getCXinfo(char cxtype[4], int &cxrsz){
error.setErrInfo(ENOTSUP, "Not supported.");
return SFS_ERROR;
}
//------------------------------------------------------------------------------
// Constructor
//------------------------------------------------------------------------------
XrdProFile::XrdProFile(const char *user, int MonID): error(user, MonID){
}
//------------------------------------------------------------------------------
// Destructor
//------------------------------------------------------------------------------
XrdProFile::~XrdProFile(){
}
\ No newline at end of file
#pragma once
#include "XrdSfs/XrdSfsInterface.hh"
class XrdProFile : public XrdSfsFile {
public:
XrdOucErrInfo error;
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client = 0, const char *opaque = 0);
virtual int close();
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo);
virtual const char *FName();
virtual int getMmap(void **Addr, off_t &Size);
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, XrdSfsXferSize size);
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize size);
virtual XrdSfsXferSize read(XrdSfsAio *aioparm);
virtual XrdSfsXferSize write(XrdSfsFileOffset offset, const char *buffer, XrdSfsXferSize size);
virtual int write(XrdSfsAio *aioparm);
virtual int stat(struct stat *buf);
virtual int sync();
virtual int sync(XrdSfsAio *aiop);
virtual int truncate(XrdSfsFileOffset fsize);
virtual int getCXinfo(char cxtype[4], int &cxrsz);
XrdProFile(const char *user=0, int MonID=0);
~XrdProFile();
protected:
};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment