xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
XrdEc::StrmWriter Class Reference

#include <XrdEcStrmWriter.hh>

Collaboration diagram for XrdEc::StrmWriter:
Collaboration graph
[legend]

Classes

struct  global_status_t
 

Public Member Functions

 StrmWriter (const ObjCfg &objcfg)
 Constructor. More...
 
virtual ~StrmWriter ()
 Destructor. More...
 
void Open (XrdCl::ResponseHandler *handler, uint16_t timeout=0)
 
void Write (uint32_t size, const void *buff, XrdCl::ResponseHandler *handler)
 
void Close (XrdCl::ResponseHandler *handler, uint16_t timeout=0)
 
uint64_t GetSize ()
 

Private Types

typedef sync_queue
< std::future< WrtBuff * > > 
buff_queue
 

Private Member Functions

void EnqueueBuff (std::unique_ptr< WrtBuff > wrtbuff)
 
std::unique_ptr< WrtBuffDequeueBuff ()
 
void WriteBuff (std::unique_ptr< WrtBuff > buff)
 
std::vector< char > GetMetadataBuffer ()
 
void CloseImpl (XrdCl::ResponseHandler *handler, uint16_t timeout=0)
 

Static Private Member Functions

static void writer_routine (StrmWriter *me)
 

Private Attributes

const ObjCfgobjcfg
 
std::unique_ptr< WrtBuffwrtbuff
 
std::vector< std::shared_ptr
< XrdCl::ZipArchive > > 
dataarchs
 
std::vector< std::shared_ptr
< XrdCl::File > > 
metadataarchs
 
std::vector< std::vector< char > > cdbuffs
 
buff_queue buffers
 
std::atomic< bool > writer_thread_stop
 
std::thread writer_thread
 
size_t next_blknb
 
global_status_t global_status
 

Detailed Description

The Stream Writer objects, responsible for writing erasure coded data into selected placement group.

Member Typedef Documentation

typedef sync_queue<std::future<WrtBuff*> > XrdEc::StrmWriter::buff_queue
private

Constructor & Destructor Documentation

XrdEc::StrmWriter::StrmWriter ( const ObjCfg objcfg)
inline

Constructor.

virtual XrdEc::StrmWriter::~StrmWriter ( )
inlinevirtual

Member Function Documentation

void XrdEc::StrmWriter::Close ( XrdCl::ResponseHandler handler,
uint16_t  timeout = 0 
)

Close the data object

Parameters
handler: user callback
void XrdEc::StrmWriter::CloseImpl ( XrdCl::ResponseHandler handler,
uint16_t  timeout = 0 
)
private

Close the data object (implementation)

Parameters
handler: user callback

Referenced by XrdEc::StrmWriter::global_status_t::issue_close(), and XrdEc::StrmWriter::global_status_t::report_wrt().

std::unique_ptr<WrtBuff> XrdEc::StrmWriter::DequeueBuff ( )
inlineprivate

Dequeue a write buffer after it has been erasure coded and checksumed

Returns
: the write buffer, ready for writing

References buffers, and XrdEc::sync_queue< Element >::dequeue().

Referenced by writer_routine().

void XrdEc::StrmWriter::EnqueueBuff ( std::unique_ptr< WrtBuff wrtbuff)
inlineprivate

Enqueue the write buffer for calculating parity and crc32c

Parameters
wrtbuff: the write buffer

References buffers, XrdEc::sync_queue< Element >::enqueue(), XrdEc::ThreadPool::Instance(), and wrtbuff.

std::vector<char> XrdEc::StrmWriter::GetMetadataBuffer ( )
private

Get a buffer with metadata (CDFH and EOCD records)

Returns
: the buffer with metadata
uint64_t XrdEc::StrmWriter::GetSize ( )
inline
void XrdEc::StrmWriter::Open ( XrdCl::ResponseHandler handler,
uint16_t  timeout = 0 
)

Open the data object for writting

Parameters
handler: user callback
void XrdEc::StrmWriter::Write ( uint32_t  size,
const void *  buff,
XrdCl::ResponseHandler handler 
)

Write data to the data object

Parameters
size: number of bytes to be written
buff: buffer with data to be written
handler: user callback
void XrdEc::StrmWriter::WriteBuff ( std::unique_ptr< WrtBuff buff)
private

Issue the write requests for the given write buffer

Parameters
buff: the buffer to be written

Referenced by writer_routine().

static void XrdEc::StrmWriter::writer_routine ( StrmWriter me)
inlinestaticprivate

The writing routine running in a dedicated thread.

Parameters
me: the StrmWriter object

References DequeueBuff(), WriteBuff(), writer_thread_stop, and wrtbuff.

Member Data Documentation

buff_queue XrdEc::StrmWriter::buffers
private
std::vector<std::vector<char> > XrdEc::StrmWriter::cdbuffs
private
std::vector<std::shared_ptr<XrdCl::ZipArchive> > XrdEc::StrmWriter::dataarchs
private
global_status_t XrdEc::StrmWriter::global_status
private

Referenced by GetSize().

std::vector<std::shared_ptr<XrdCl::File> > XrdEc::StrmWriter::metadataarchs
private
size_t XrdEc::StrmWriter::next_blknb
private
const ObjCfg& XrdEc::StrmWriter::objcfg
private
std::thread XrdEc::StrmWriter::writer_thread
private

Referenced by ~StrmWriter().

std::atomic<bool> XrdEc::StrmWriter::writer_thread_stop
private

Referenced by writer_routine(), and ~StrmWriter().

std::unique_ptr<WrtBuff> XrdEc::StrmWriter::wrtbuff
private

Referenced by EnqueueBuff(), and writer_routine().


The documentation for this class was generated from the following file: