Skip to content

Commit

Permalink
[XrdCl] pipelines polish Parallel.
Browse files Browse the repository at this point in the history
  • Loading branch information
simonmichal committed Sep 13, 2018
1 parent 6e2bac6 commit 708e30e
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 49 deletions.
30 changes: 15 additions & 15 deletions src/XrdCl/XrdClFileOperations.hh
Expand Up @@ -34,7 +34,7 @@ namespace XrdCl
{

template<template<State> class Derived, State state, typename ... Arguments>
class FileOperation: public OperationBase<Derived, state, Arguments...>
class FileOperation: public ConcreteOperation<Derived, state, Arguments...>
{

template<template<State> class, State, typename ...> friend class FileOperation;
Expand All @@ -51,7 +51,7 @@ namespace XrdCl
}

template<State from>
FileOperation( FileOperation<Derived, from, Arguments...> && op ) : OperationBase<Derived, state, Arguments...>( std::move( op ) ), file( op.file )
FileOperation( FileOperation<Derived, from, Arguments...> && op ) : ConcreteOperation<Derived, state, Arguments...>( std::move( op ) ), file( op.file )
{

}
Expand Down Expand Up @@ -113,12 +113,12 @@ namespace XrdCl
OpenImpl<Configured> operator()( Arg<std::string> url,
Arg<OpenFlags::Flags> flags, Arg<Access::Mode> mode = Access::None )
{
return this->OperationBase<OpenImpl, state, Arg<std::string>,
return this->ConcreteOperation<OpenImpl, state, Arg<std::string>,
Arg<OpenFlags::Flags>, Arg<Access::Mode>>::operator ()(
std::move( url ), std::move( flags ), std::move( mode ) );
}

using OperationBase<OpenImpl, state, Arg<std::string>,
using ConcreteOperation<OpenImpl, state, Arg<std::string>,
Arg<OpenFlags::Flags>, Arg<Access::Mode>>::operator>>;

OpenImpl<Handled> operator>>(
Expand Down Expand Up @@ -223,7 +223,7 @@ namespace XrdCl
typedef void* type;
};

using OperationBase<ReadImpl, state, Arg<uint64_t>, Arg<uint32_t>,
using ConcreteOperation<ReadImpl, state, Arg<uint64_t>, Arg<uint32_t>,
Arg<void*>>::operator>>;

ReadImpl<Handled> operator>>(
Expand Down Expand Up @@ -293,7 +293,7 @@ namespace XrdCl

}

using OperationBase<CloseImpl, state>::operator>>;
using ConcreteOperation<CloseImpl, state>::operator>>;

CloseImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -351,7 +351,7 @@ namespace XrdCl
typedef bool type;
};

using OperationBase<StatImpl, state, Arg<bool>>::operator>>;
using ConcreteOperation<StatImpl, state, Arg<bool>>::operator>>;

StatImpl<Handled> operator>>(
std::function<void( XRootDStatus&, StatInfo& )> handleFunction )
Expand Down Expand Up @@ -439,7 +439,7 @@ namespace XrdCl
typedef void* type;
};

using OperationBase<WriteImpl, state, Arg<uint64_t>, Arg<uint32_t>,
using ConcreteOperation<WriteImpl, state, Arg<uint64_t>, Arg<uint32_t>,
Arg<void*>>::operator>>;

WriteImpl<Handled> operator>>(
Expand Down Expand Up @@ -505,7 +505,7 @@ namespace XrdCl
{
}

using OperationBase<SyncImpl, state>::operator>>;
using ConcreteOperation<SyncImpl, state>::operator>>;

SyncImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -563,7 +563,7 @@ namespace XrdCl
typedef uint64_t type;
};

using OperationBase<TruncateImpl, state, Arg<uint64_t>>::operator>>;
using ConcreteOperation<TruncateImpl, state, Arg<uint64_t>>::operator>>;

TruncateImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -642,7 +642,7 @@ namespace XrdCl
typedef char* type;
};

using OperationBase<VectorReadImpl, state, Arg<ChunkList>, Arg<void*>>::operator>>;
using ConcreteOperation<VectorReadImpl, state, Arg<ChunkList>, Arg<void*>>::operator>>;

VectorReadImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -714,7 +714,7 @@ namespace XrdCl
typedef ChunkList type;
};

using OperationBase<VectorWriteImpl, state, Arg<ChunkList>>::operator>>;
using ConcreteOperation<VectorWriteImpl, state, Arg<ChunkList>>::operator>>;

VectorWriteImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -799,7 +799,7 @@ namespace XrdCl
typedef int type;
};

using OperationBase<WriteVImpl, state, Arg<uint64_t>, Arg<struct iovec*>,
using ConcreteOperation<WriteVImpl, state, Arg<uint64_t>, Arg<struct iovec*>,
Arg<int>>::operator>>;

WriteVImpl<Handled> operator>>(
Expand Down Expand Up @@ -872,7 +872,7 @@ namespace XrdCl
typedef Buffer type;
};

using OperationBase<FcntlImpl, state, Arg<Buffer>>::operator>>;
using ConcreteOperation<FcntlImpl, state, Arg<Buffer>>::operator>>;

FcntlImpl<Handled> operator>>(
std::function<void( XRootDStatus&, Buffer& )> handleFunction )
Expand Down Expand Up @@ -931,7 +931,7 @@ namespace XrdCl
{
}

using OperationBase<VisaImpl, state>::operator>>;
using ConcreteOperation<VisaImpl, state>::operator>>;

VisaImpl<Handled> operator>>(
std::function<void( XRootDStatus&, Buffer& )> handleFunction )
Expand Down
36 changes: 18 additions & 18 deletions src/XrdCl/XrdClFileSystemOperations.hh
Expand Up @@ -34,7 +34,7 @@ namespace XrdCl
{

template<template<State> class Derived, State state, typename ... Args>
class FileSystemOperation: public OperationBase<Derived, state, Args...>
class FileSystemOperation: public ConcreteOperation<Derived, state, Args...>
{

template<template<State> class, State, typename ...> friend class FileSystemOperation;
Expand All @@ -52,7 +52,7 @@ namespace XrdCl
}

template<State from>
FileSystemOperation( FileSystemOperation<Derived, from, Args...> && op ): OperationBase<Derived, state, Args...>( std::move( op ) ), filesystem( op.filesystem )
FileSystemOperation( FileSystemOperation<Derived, from, Args...> && op ): ConcreteOperation<Derived, state, Args...>( std::move( op ) ), filesystem( op.filesystem )
{}

virtual ~FileSystemOperation()
Expand Down Expand Up @@ -100,7 +100,7 @@ namespace XrdCl
typedef OpenFlags::Flags type;
};

using OperationBase<LocateImpl, state, Arg<std::string>,
using ConcreteOperation<LocateImpl, state, Arg<std::string>,
Arg<OpenFlags::Flags>>::operator>>;

LocateImpl<Handled> operator>>(
Expand Down Expand Up @@ -181,7 +181,7 @@ namespace XrdCl
typedef OpenFlags::Flags type;
};

using OperationBase<DeepLocateImpl, state, Arg<std::string>,
using ConcreteOperation<DeepLocateImpl, state, Arg<std::string>,
Arg<OpenFlags::Flags>>::operator>>;

DeepLocateImpl<Handled> operator>>(
Expand Down Expand Up @@ -263,7 +263,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<MvImpl, state, Arg<std::string>, Arg<std::string>>::operator>>;
using ConcreteOperation<MvImpl, state, Arg<std::string>, Arg<std::string>>::operator>>;

MvImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -342,7 +342,7 @@ namespace XrdCl
typedef Buffer type;
};

using OperationBase<QueryImpl, state, Arg<QueryCode::Code>, Arg<Buffer>>::operator>>;
using ConcreteOperation<QueryImpl, state, Arg<QueryCode::Code>, Arg<Buffer>>::operator>>;

QueryImpl<Handled> operator>>(
std::function<void( XRootDStatus&, Buffer& )> handleFunction )
Expand Down Expand Up @@ -423,7 +423,7 @@ namespace XrdCl
typedef uint64_t type;
};

using OperationBase<TruncateFsImpl, state, Arg<std::string>, Arg<uint64_t>>::operator>>;
using ConcreteOperation<TruncateFsImpl, state, Arg<std::string>, Arg<uint64_t>>::operator>>;

TruncateFsImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -497,7 +497,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<RmImpl, state, Arg<std::string>>::operator>>;
using ConcreteOperation<RmImpl, state, Arg<std::string>>::operator>>;

RmImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -580,7 +580,7 @@ namespace XrdCl
typedef Access::Mode type;
};

using OperationBase<MkDirImpl, state, Arg<std::string>,
using ConcreteOperation<MkDirImpl, state, Arg<std::string>,
Arg<MkDirFlags::Flags>, Arg<Access::Mode>>::operator>>;

MkDirImpl<Handled> operator>>(
Expand Down Expand Up @@ -656,7 +656,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<RmDirImpl, state, Arg<std::string>>::operator>>;
using ConcreteOperation<RmDirImpl, state, Arg<std::string>>::operator>>;

RmDirImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -733,7 +733,7 @@ namespace XrdCl
typedef Access::Mode type;
};

using OperationBase<ChModImpl, state, Arg<std::string>, Arg<Access::Mode>>::operator>>;
using ConcreteOperation<ChModImpl, state, Arg<std::string>, Arg<Access::Mode>>::operator>>;

ChModImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -795,7 +795,7 @@ namespace XrdCl
{
}

using OperationBase<PingImpl, state>::operator>>;
using ConcreteOperation<PingImpl, state>::operator>>;

PingImpl<Handled> operator>>(
std::function<void( XRootDStatus& )> handleFunction )
Expand Down Expand Up @@ -860,7 +860,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<StatFsImpl, state, Arg<std::string>>::operator>>;
using ConcreteOperation<StatFsImpl, state, Arg<std::string>>::operator>>;

StatFsImpl<Handled> operator>>(
std::function<void( XRootDStatus&, StatInfo& )> handleFunction )
Expand Down Expand Up @@ -932,7 +932,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<StatVFSImpl, state, Arg<std::string>>::operator>>;
using ConcreteOperation<StatVFSImpl, state, Arg<std::string>>::operator>>;

StatVFSImpl<Handled> operator>>(
std::function<void( XRootDStatus&, StatInfoVFS& )> handleFunction )
Expand Down Expand Up @@ -991,7 +991,7 @@ namespace XrdCl
{
}

using OperationBase<ProtocolImpl, state>::operator>>;
using ConcreteOperation<ProtocolImpl, state>::operator>>;

ProtocolImpl<Handled> operator>>(
std::function<void( XRootDStatus&, ProtocolInfo& )> handleFunction )
Expand Down Expand Up @@ -1065,7 +1065,7 @@ namespace XrdCl
typedef DirListFlags::Flags type;
};

using OperationBase<DirListImpl, state, Arg<std::string>,
using ConcreteOperation<DirListImpl, state, Arg<std::string>,
Arg<DirListFlags::Flags>>::operator>>;

DirListImpl<Handled> operator>>(
Expand Down Expand Up @@ -1138,7 +1138,7 @@ namespace XrdCl
typedef std::string type;
};

using OperationBase<SendInfoImpl, state, Arg<std::string>>::operator>>;
using ConcreteOperation<SendInfoImpl, state, Arg<std::string>>::operator>>;

SendInfoImpl<Handled> operator>>(
std::function<void( XRootDStatus&, Buffer& )> handleFunction )
Expand Down Expand Up @@ -1222,7 +1222,7 @@ namespace XrdCl
typedef uint8_t type;
};

using OperationBase<PrepareImpl, state, Arg<std::vector<std::string>>,
using ConcreteOperation<PrepareImpl, state, Arg<std::vector<std::string>>,
Arg<PrepareFlags::Flags>, Arg<uint8_t>>::operator>>;

PrepareImpl<Handled> operator>>(
Expand Down
8 changes: 8 additions & 0 deletions src/XrdCl/XrdClOperations.cc
Expand Up @@ -156,6 +156,14 @@ namespace XrdCl
firstOperation->AssignToWorkflow( this );
}

Workflow::Workflow( Pipeline &&pipeline, bool enableLogging ) :
status( NULL ), logging( enableLogging )
{
if( !pipeline.operation )
throw std::invalid_argument( "Pipeline already has been executed." );
firstOperation = pipeline.operation.release();
}

Workflow::~Workflow()
{
delete firstOperation;
Expand Down

0 comments on commit 708e30e

Please sign in to comment.