xrootd
Loading...
Searching...
No Matches
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.
 
virtual ~StrmWriter ()
 Destructor.
 
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

◆ buff_queue

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

Constructor & Destructor Documentation

◆ StrmWriter()

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

Constructor.

◆ ~StrmWriter()

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

Member Function Documentation

◆ Close()

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

Close the data object

Parameters
handler: user callback

◆ CloseImpl()

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().

◆ DequeueBuff()

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().

◆ EnqueueBuff()

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.

◆ GetMetadataBuffer()

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

Get a buffer with metadata (CDFH and EOCD records)

Returns
: the buffer with metadata

◆ GetSize()

uint64_t XrdEc::StrmWriter::GetSize ( )
inline

◆ Open()

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

Open the data object for writting

Parameters
handler: user callback

◆ Write()

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

◆ WriteBuff()

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().

◆ 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

◆ buffers

buff_queue XrdEc::StrmWriter::buffers
private

◆ cdbuffs

std::vector<std::vector<char> > XrdEc::StrmWriter::cdbuffs
private

◆ dataarchs

std::vector<std::shared_ptr<XrdCl::ZipArchive> > XrdEc::StrmWriter::dataarchs
private

◆ global_status

global_status_t XrdEc::StrmWriter::global_status
private

Referenced by GetSize().

◆ metadataarchs

std::vector<std::shared_ptr<XrdCl::File> > XrdEc::StrmWriter::metadataarchs
private

◆ next_blknb

size_t XrdEc::StrmWriter::next_blknb
private

◆ objcfg

const ObjCfg& XrdEc::StrmWriter::objcfg
private

◆ writer_thread

std::thread XrdEc::StrmWriter::writer_thread
private

Referenced by ~StrmWriter().

◆ writer_thread_stop

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

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

◆ wrtbuff

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: